X-Git-Url: https://gitweb.ps.run/matrix_esp_thesis/blobdiff_plain/d43e8671acc5709c192e159e0d91626f0677cdf1..7cba6b3cdbd3b82ec9092ce9bda8ec20739096cb:/src/fixedbuffer.c?ds=inline diff --git a/src/fixedbuffer.c b/src/fixedbuffer.c new file mode 100644 index 0000000..ad99897 --- /dev/null +++ b/src/fixedbuffer.c @@ -0,0 +1,43 @@ +#include "fixedbuffer.h" + +#include + +FixedBuffer +FixedBuf(const char * str) +{ + int len = strlen(str); + FixedBuffer result; + result.ptr = (char *)str; + result.cap = len; + result.len = len; + return result; +} + +bool +FixedBufferToInt(FixedBuffer fb, int * outInt) +{ + bool valid = false; + int result = 0; + + bool negative = false; + + for (int i = 0; i < fb.len; i++) + { + if (i == 0 && fb.ptr[i] == '-') + { + negative = true; + continue; + } + + int val = fb.ptr[i] - '0'; + if (val < 0 || val > 9) + return false; + + result *= 10; + result += val; + valid = true; + } + + *outInt = result; + return valid; +} \ No newline at end of file