1
#ifndef EL_DOM_STRING_H
2
#define EL_DOM_STRING_H
4
#include "util/memory.h"
11
#define INIT_DOM_STRING(strvalue, strlength) \
12
{ (strlength) == -1 ? sizeof(strvalue) - 1 : (strlength), (strvalue) }
15
set_dom_string(struct dom_string *string, unsigned char *value, size_t length)
17
string->string = value;
18
string->length = length == -1 ? strlen(value) : length;
22
dom_string_casecmp(const struct dom_string *string1, const struct dom_string *string2)
24
size_t length = int_min(string1->length, string2->length);
25
size_t string_diff = strncasecmp(string1->string, string2->string, length);
27
/* If the lengths or strings don't match strncasecmp() does the
28
* job else return which ever is bigger. */
29
return string_diff ? string_diff : string1->length - string2->length;
33
dom_string_ncasecmp(struct dom_string *string1, struct dom_string *string2, size_t length)
35
return strncasecmp(string1->string, string2->string, length);
38
#define copy_dom_string(string1, string2) \
39
set_dom_string(string1, (string2)->string, (string2)->length)
41
static inline struct dom_string *
42
init_dom_string(struct dom_string *string, unsigned char *str, size_t len)
44
string->string = mem_alloc(len + 1);
48
memcpy(string->string, str, len);
49
string->string[len] = 0;
54
#define is_dom_string_set(str) ((str)->string && (str)->length)
56
#define done_dom_string(str) mem_free((str)->string);
58
#define isquote(c) ((c) == '"' || (c) == '\'')