From: Patrick Date: Tue, 16 May 2023 15:03:50 +0000 (+0200) Subject: refactor fixedbuffer, add mjson X-Git-Url: https://gitweb.ps.run/matrix_esp_thesis/commitdiff_plain/7cba6b3cdbd3b82ec9092ce9bda8ec20739096cb refactor fixedbuffer, add mjson --- diff --git a/.gitmodules b/.gitmodules index 3d6f22a..00137af 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "ext/olm"] path = ext/olm url = https://gitlab.matrix.org/matrix-org/olm/ +[submodule "ext/mjson"] + path = ext/mjson + url = https://github.com/cesanta/mjson diff --git a/ext/mjson b/ext/mjson new file mode 160000 index 0000000..b766f34 --- /dev/null +++ b/ext/mjson @@ -0,0 +1 @@ +Subproject commit b766f343bf68b8ea89889055acbf8aef820e2b71 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 diff --git a/src/fixedbuffer.h b/src/fixedbuffer.h new file mode 100644 index 0000000..d8055cb --- /dev/null +++ b/src/fixedbuffer.h @@ -0,0 +1,19 @@ +#ifndef FIXEDBUFFER__H +#define FIXEDBUFFER__H + +#include + +typedef struct FixedBuffer { + char * ptr; + int cap; + int len; +} FixedBuffer; + +FixedBuffer +FixedBuf(const char * str); + +bool +FixedBufferToInt(FixedBuffer fb, int * outInt); + + +#endif \ No newline at end of file diff --git a/src/matrix.c b/src/matrix.c index bc0f1ca..082806a 100644 --- a/src/matrix.c +++ b/src/matrix.c @@ -1,16 +1,5 @@ #include "matrix.h" -FixedBuffer -FixedBuf(const char * str) -{ - int len = strlen(str); - FixedBuffer result; - result.ptr = (char *)str; - result.size = len; - result.len = len; - return result; -} - bool MatrixClientInit( diff --git a/src/matrix.h b/src/matrix.h index d61c59b..5f53e0e 100644 --- a/src/matrix.h +++ b/src/matrix.h @@ -6,18 +6,7 @@ #include - - - - -typedef struct FixedBuffer { - void * ptr; - int size; - int len; -} FixedBuffer; - -FixedBuffer -FixedBuf(const char * str); +#include "fixedbuffer.h"