aboutsummaryrefslogtreecommitdiff
path: root/src/string_utils.h
diff options
context:
space:
mode:
authorallusive-dev <[email protected]>2023-09-19 17:47:33 +1000
committerallusive-dev <[email protected]>2023-09-19 17:47:33 +1000
commita93aba600b1c5d019b680b9f4ff3fa85d5d43a60 (patch)
tree77f8152222655657472a70e0bfa413a0495dd555 /src/string_utils.h
parentreset (diff)
downloadcompfy-a93aba600b1c5d019b680b9f4ff3fa85d5d43a60.tar.xz
compfy-a93aba600b1c5d019b680b9f4ff3fa85d5d43a60.zip
Fixed broken files/code and other errors
Diffstat (limited to 'src/string_utils.h')
-rw-r--r--src/string_utils.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/string_utils.h b/src/string_utils.h
new file mode 100644
index 0000000..38febde
--- /dev/null
+++ b/src/string_utils.h
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: MPL-2.0
+// Copyright (c) Yuxuan Shui <[email protected]>
+#pragma once
+#include <ctype.h>
+#include <stddef.h>
+
+#include "compiler.h"
+
+#define mstrncmp(s1, s2) strncmp((s1), (s2), strlen(s1))
+
+char *mstrjoin(const char *src1, const char *src2);
+char *mstrjoin3(const char *src1, const char *src2, const char *src3);
+void mstrextend(char **psrc1, const char *src2);
+
+/// Parse a floating point number of form (+|-)?[0-9]*(\.[0-9]*)
+double strtod_simple(const char *, const char **);
+
+static inline int uitostr(unsigned int n, char *buf) {
+ int ret = 0;
+ unsigned int tmp = n;
+ while (tmp > 0) {
+ tmp /= 10;
+ ret++;
+ }
+
+ if (ret == 0)
+ ret = 1;
+
+ int pos = ret;
+ while (pos--) {
+ buf[pos] = (char)(n % 10 + '0');
+ n /= 10;
+ }
+ return ret;
+}
+
+static inline const char *skip_space_const(const char *src) {
+ if (!src)
+ return NULL;
+ while (*src && isspace((unsigned char)*src))
+ src++;
+ return src;
+}
+
+static inline char *skip_space_mut(char *src) {
+ if (!src)
+ return NULL;
+ while (*src && isspace((unsigned char)*src))
+ src++;
+ return src;
+}
+
+#define skip_space(x) \
+ _Generic((x), char * : skip_space_mut, const char * : skip_space_const)(x)