simple support for __attribute__((alias("symbol")))
[cparser] / string_rep.c
1 /*
2  * This file is part of cparser.
3  * Copyright (C) 2012 Matthias Braun <matze@braunis.de>
4  */
5 #include "adt/error.h"
6 #include "string_rep.h"
7 #include "unicode.h"
8
9 static inline size_t wstrlen(const string_t *string)
10 {
11         size_t      result = 0;
12         const char *p      = string->begin;
13         const char *end    = p + string->size;
14         while (p < end) {
15                 read_utf8_char(&p);
16                 ++result;
17         }
18         return result;
19 }
20
21 size_t get_string_len(string_t const *const str)
22 {
23         switch (str->encoding) {
24         case STRING_ENCODING_CHAR:
25         case STRING_ENCODING_UTF8:   return str->size;
26         case STRING_ENCODING_CHAR16:
27         case STRING_ENCODING_CHAR32:
28         case STRING_ENCODING_WIDE:   return wstrlen(str);
29         }
30         panic("invalid string encoding");
31 }