Browse Source

Backport from xs.

default 1 year ago
parent
commit
d562c3cfed
4 changed files with 49 additions and 35 deletions
  1. 2 1
      snac.c
  2. 0 33
      xs_encdec.h
  3. 46 0
      xs_unicode.h
  4. 1 1
      xs_version.h

+ 2 - 1
snac.c

@@ -5,8 +5,9 @@
 
 #include "xs.h"
 #include "xs_io.h"
-#include "xs_encdec.h"
+#include "xs_unicode.h"
 #include "xs_json.h"
+#include "xs_encdec.h"
 #include "xs_curl.h"
 #include "xs_openssl.h"
 #include "xs_socket.h"

+ 0 - 33
xs_encdec.h

@@ -14,7 +14,6 @@
  xs_str *xs_base64_enc(const xs_val *data, int sz);
  xs_val *xs_base64_dec(const xs_str *data, int *size);
  int xs_is_base64(const char *str);
- xs_str *xs_utf8_enc(xs_str *str, unsigned int cpoint);
 
 
 #ifdef XS_IMPLEMENTATION
@@ -383,38 +382,6 @@ int xs_is_base64(const char *str)
 }
 
 
-/** utf-8 **/
-
-xs_str *xs_utf8_enc(xs_str *str, unsigned int cpoint)
-/* encodes an Unicode codepoint to utf8 */
-{
-    unsigned char tmp[4];
-    int n = 0;
-
-    if (cpoint < 0x80)
-        tmp[n++] = cpoint & 0xff;
-    else
-    if (cpoint < 0x800) {
-        tmp[n++] = 0xc0 | (cpoint >> 6);
-        tmp[n++] = 0x80 | (cpoint & 0x3f);
-    }
-    else
-    if (cpoint < 0x10000) {
-        tmp[n++] = 0xe0 | (cpoint >> 12);
-        tmp[n++] = 0x80 | ((cpoint >> 6) & 0x3f);
-        tmp[n++] = 0x80 | (cpoint & 0x3f);
-    }
-    else
-    if (cpoint < 0x200000) {
-        tmp[n++] = 0xf0 | (cpoint >> 18);
-        tmp[n++] = 0x80 | ((cpoint >> 12) & 0x3f);
-        tmp[n++] = 0x80 | ((cpoint >> 6) & 0x3f);
-        tmp[n++] = 0x80 | (cpoint & 0x3f);
-    }
-
-    return xs_append_m(str, (char *)tmp, n);
-}
-
 #endif /* XS_IMPLEMENTATION */
 
 #endif /* _XS_ENCDEC_H */

+ 46 - 0
xs_unicode.h

@@ -0,0 +1,46 @@
+/* copyright (c) 2022 - 2023 grunfink / MIT license */
+
+#ifndef _XS_UNICODE_H
+
+#define _XS_UNICODE_H
+
+ xs_str *xs_utf8_enc(xs_str *str, unsigned int cpoint);
+
+
+#ifdef XS_IMPLEMENTATION
+
+/** utf-8 **/
+
+xs_str *xs_utf8_enc(xs_str *str, unsigned int cpoint)
+/* encodes an Unicode codepoint to utf8 */
+{
+    unsigned char tmp[4];
+    int n = 0;
+
+    if (cpoint < 0x80)
+        tmp[n++] = cpoint & 0xff;
+    else
+    if (cpoint < 0x800) {
+        tmp[n++] = 0xc0 | (cpoint >> 6);
+        tmp[n++] = 0x80 | (cpoint & 0x3f);
+    }
+    else
+    if (cpoint < 0x10000) {
+        tmp[n++] = 0xe0 | (cpoint >> 12);
+        tmp[n++] = 0x80 | ((cpoint >> 6) & 0x3f);
+        tmp[n++] = 0x80 | (cpoint & 0x3f);
+    }
+    else
+    if (cpoint < 0x200000) {
+        tmp[n++] = 0xf0 | (cpoint >> 18);
+        tmp[n++] = 0x80 | ((cpoint >> 12) & 0x3f);
+        tmp[n++] = 0x80 | ((cpoint >> 6) & 0x3f);
+        tmp[n++] = 0x80 | (cpoint & 0x3f);
+    }
+
+    return xs_append_m(str, (char *)tmp, n);
+}
+
+#endif /* XS_IMPLEMENTATION */
+
+#endif /* _XS_UNICODE_H */

+ 1 - 1
xs_version.h

@@ -1 +1 @@
-/* b4f118990f3b8327a033a28bd9ca687c75b23dee */
+/* d8ec27efc55ba67403e88bfbe7d2ce9905364d6d */