X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=string_rep.h;h=f3a1e6b882533142d588a4dd942ecb6648ddff2f;hb=a81dc4c1999d4853ddff49a749240440024aa6a3;hp=8e2b0834a2c2023b8d9cfdbe7d7d0873a1c5cd0d;hpb=0e0faae013a4302a0cc4f6e465301a82483e0a52;p=cparser diff --git a/string_rep.h b/string_rep.h index 8e2b083..f3a1e6b 100644 --- a/string_rep.h +++ b/string_rep.h @@ -1,18 +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 - -typedef wchar_t wchar_rep_t; +#include +#include "unicode.h" typedef struct string_t { - const char *begin; - size_t size; + 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; -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