#define sv_contains_char c_sv_contains_char\r
#define sv_is_hex_numbers c_sv_is_hex_numbers\r
#define sv_equals c_sv_equals\r
+#define sv_get_part c_sv_get_part\r
\r
\r
#endif // COMMONLIB_REMOVE_PREFIX\r
#define c_shift(xs, xsz) (assert(xsz > 0 && "Array is empty"), xsz--, *xs++)\r
#define c_shift_args c_shift\r
\r
+//\r
+// Math\r
+//\r
+\r
+int clampi(int v, int min, int max);\r
+float clampf(float v, float min, float max);\r
+\r
//\r
// Struct pre-decls\r
//\r
bool c_sv_contains_char(c_String_view sv, char ch);\r
bool c_sv_is_hex_numbers(c_String_view sv);\r
bool c_sv_equals(c_String_view sv1, c_String_view sv2);\r
+c_String_view c_sv_get_part(c_String_view sv, int from, int to);\r
\r
#endif /* _COMMONLIB_H_ */\r
\r
\r
// My things implementation:\r
\r
+//\r
+// Math\r
+//\r
+\r
+int clampi(int v, int min, int max) {\r
+ v = v < min ? min : v;\r
+ v = v > max ? max : v;\r
+ return v;\r
+}\r
+\r
+float clampf(float v, float min, float max) {\r
+ v = v < min ? min : v;\r
+ v = v > max ? max : v;\r
+ return v;\r
+}\r
+\r
//\r
// OS\r
//\r
return true;\r
}\r
\r
+c_String_view c_sv_get_part(c_String_view sv, int from, int to) {\r
+ from = clampi(from, 0, sv.count);\r
+ to = clampi(to, from, sv.count);\r
+\r
+ String_view range = {\r
+ .data = (char*)(sv.data + from),\r
+ .count = (size_t)(to - from),\r
+ };\r
+\r
+ return range;\r
+}\r
#endif\r