6414f43977e2ad4d4803bfc762171aeed119a275
[yacjs.git] / src / yacjs_u8s.h
1 #ifndef YACJS_U8S_H
2 #define YACJS_U8S_H
3
4 #include <stddef.h>
5
6 #define U8S_NAME(n) yacjs_u8s_ ## n
7
8 typedef char * U8S_NAME(ptr);
9 typedef const char * U8S_NAME(cptr);
10
11 /* Get beginning of next UTF-8 character. */
12 U8S_NAME(cptr) U8S_NAME(next)(U8S_NAME(cptr) str);
13 /* Get length of UTF-8 string in characters. */
14 size_t U8S_NAME(strlen)(U8S_NAME(cptr) str);
15 /* Get length of UTF-8 string in bytes. */
16 size_t U8S_NAME(strlenb)(U8S_NAME(cptr) str);
17 /* Get length of UTF-8 string in bytes. */
18 size_t U8S_NAME(strnlenb)(U8S_NAME(cptr) str, size_t bufsiz);
19 /* Copy UTF-8 string into target. */
20 U8S_NAME(ptr) U8S_NAME(strcpy)(U8S_NAME(ptr) target, U8S_NAME(cptr) src);
21 /* Copy at most bufsiz bytes of the source UTF-8 string into target, respecting
22     UTF-8 character boundaries, and ensuring that the target is
23     NULL-terminated. */
24 U8S_NAME(ptr) U8S_NAME(strncpy)(U8S_NAME(ptr) target, U8S_NAME(cptr) src,
25     size_t bufsiz);
26 /* Compare two NULL-terminated UTF-8 strings. */
27 int U8S_NAME(strcmp)(U8S_NAME(cptr) a, U8S_NAME(cptr) b);
28 /* Compare at most the first bufsiz bytes of two possibly non-NULL-terminated
29     UTF-8 strings. */
30 int U8S_NAME(strncmp)(U8S_NAME(cptr) a, U8S_NAME(cptr) b, size_t bufsiz);
31 /* Create a copy of a NULL-terminated UTF-8 string with memory allocated via
32     malloc(). */
33 U8S_NAME(ptr) U8S_NAME(strdup)(U8S_NAME(cptr) s);
34 /* Create a copy of a NULL-terminated UTF-8 string with memory allocated via
35     malloc(). */
36 U8S_NAME(ptr) U8S_NAME(strndup)(U8S_NAME(cptr) s, size_t bufsiz);
37
38 #endif