]> www.git.momoyon.org Git - commonlib.git/commitdiff
[commonlib.h] Add Math.clamp() and Sv.sv_get_part()
authorahmedsamyh <ahmedsamyh10@gmail.com>
Thu, 15 May 2025 04:35:07 +0000 (09:35 +0500)
committerahmedsamyh <ahmedsamyh10@gmail.com>
Thu, 15 May 2025 04:35:07 +0000 (09:35 +0500)
commonlib.h

index 4cb2049d9316e8da13d8568804ad636fbdd8fa43..df94650702a9889ab816ce9cd375fb63f59f6295 100644 (file)
@@ -73,6 +73,7 @@
 #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
@@ -126,6 +127,13 @@ typedef const wchar* wstr;
 #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
@@ -287,6 +295,7 @@ float64 c_sv_to_float(c_String_view sv, int *count);
 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
@@ -299,6 +308,22 @@ bool c_sv_equals(c_String_view sv1, c_String_view sv2);
 \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
@@ -702,4 +727,15 @@ bool c_sv_equals(c_String_view sv1, c_String_view sv2) {
     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