X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=string_rep.h;h=f3a1e6b882533142d588a4dd942ecb6648ddff2f;hb=c080804a9ae61e4ba0ec6fc7288c81c326fa9ddb;hp=1df0b5ba9057999748731add70a92c62fcc629c2;hpb=975933a9f57835385489ecdeda04a65894705eca;p=cparser diff --git a/string_rep.h b/string_rep.h index 1df0b5b..f3a1e6b 100644 --- a/string_rep.h +++ b/string_rep.h @@ -1,20 +1,44 @@ +/* + * This file is part of cparser. + * Copyright (C) 2007-2009 Matthias Braun + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ #ifndef STRING_REP_H #define STRING_REP_H -#include +#include +#include "unicode.h" -typedef wchar_t wchar_rep_t; - -#if 0 /* TODO */ typedef struct string_t { - const char *begin; - const char *end; + const char *begin; /**< UTF-8 encoded string, the last character is + * guaranteed to be 0 */ + size_t size; /**< size of string in bytes (not characters) */ } string_t; -#endif -typedef struct wide_string_t { - const wchar_rep_t *begin; - size_t size; -} wide_string_t; +static inline size_t wstrlen(const string_t *string) +{ + size_t result = 0; + const char *p = string->begin; + const char *end = p + string->size; + while (p < end) { + read_utf8_char(&p); + ++result; + } + return result; +} #endif