1/*
2 * Summary: set of routines to process strings
3 * Description: type and interfaces needed for the internal string handling
4 *              of the library, especially UTF8 processing.
5 *
6 * Copy: See Copyright for the status of this software.
7 *
8 * Author: Daniel Veillard
9 */
10
11#ifndef __XML_STRING_H__
12#define __XML_STRING_H__
13
14#include <stdarg.h>
15#include <libxml/xmlversion.h>
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21/**
22 * xmlChar:
23 *
24 * This is a basic byte in an UTF-8 encoded string.
25 * It's unsigned allowing to pinpoint case where char * are assigned
26 * to xmlChar * (possibly making serialization back impossible).
27 */
28typedef unsigned char xmlChar;
29
30/**
31 * BAD_CAST:
32 *
33 * Macro to cast a string to an xmlChar * when one know its safe.
34 */
35#define BAD_CAST (xmlChar *)
36
37/*
38 * xmlChar handling
39 */
40XMLPUBFUN xmlChar * XMLCALL
41                xmlStrdup                (const xmlChar *cur);
42XMLPUBFUN xmlChar * XMLCALL
43                xmlStrndup               (const xmlChar *cur,
44                                         int len);
45XMLPUBFUN xmlChar * XMLCALL
46                xmlCharStrndup           (const char *cur,
47                                         int len);
48XMLPUBFUN xmlChar * XMLCALL
49                xmlCharStrdup            (const char *cur);
50XMLPUBFUN xmlChar * XMLCALL
51                xmlStrsub                (const xmlChar *str,
52                                         int start,
53                                         int len);
54XMLPUBFUN const xmlChar * XMLCALL
55                xmlStrchr                (const xmlChar *str,
56                                         xmlChar val);
57XMLPUBFUN const xmlChar * XMLCALL
58                xmlStrstr                (const xmlChar *str,
59                                         const xmlChar *val);
60XMLPUBFUN const xmlChar * XMLCALL
61                xmlStrcasestr            (const xmlChar *str,
62                                         const xmlChar *val);
63XMLPUBFUN int XMLCALL
64                xmlStrcmp                (const xmlChar *str1,
65                                         const xmlChar *str2);
66XMLPUBFUN int XMLCALL
67                xmlStrncmp               (const xmlChar *str1,
68                                         const xmlChar *str2,
69                                         int len);
70XMLPUBFUN int XMLCALL
71                xmlStrcasecmp            (const xmlChar *str1,
72                                         const xmlChar *str2);
73XMLPUBFUN int XMLCALL
74                xmlStrncasecmp           (const xmlChar *str1,
75                                         const xmlChar *str2,
76                                         int len);
77XMLPUBFUN int XMLCALL
78                xmlStrEqual              (const xmlChar *str1,
79                                         const xmlChar *str2);
80XMLPUBFUN int XMLCALL
81                xmlStrQEqual             (const xmlChar *pref,
82                                         const xmlChar *name,
83                                         const xmlChar *str);
84XMLPUBFUN int XMLCALL
85                xmlStrlen                (const xmlChar *str);
86XMLPUBFUN xmlChar * XMLCALL
87                xmlStrcat                (xmlChar *cur,
88                                         const xmlChar *add);
89XMLPUBFUN xmlChar * XMLCALL
90                xmlStrncat               (xmlChar *cur,
91                                         const xmlChar *add,
92                                         int len);
93XMLPUBFUN xmlChar * XMLCALL
94                xmlStrncatNew            (const xmlChar *str1,
95                                         const xmlChar *str2,
96                                         int len);
97XMLPUBFUN int XMLCALL
98                xmlStrPrintf             (xmlChar *buf,
99                                         int len,
100                                         const xmlChar *msg,
101                                         ...);
102XMLPUBFUN int XMLCALL
103                xmlStrVPrintf                (xmlChar *buf,
104                                         int len,
105                                         const xmlChar *msg,
106                                         va_list ap);
107
108XMLPUBFUN int XMLCALL
109        xmlGetUTF8Char                   (const unsigned char *utf,
110                                         int *len);
111XMLPUBFUN int XMLCALL
112        xmlCheckUTF8                     (const unsigned char *utf);
113XMLPUBFUN int XMLCALL
114        xmlUTF8Strsize                   (const xmlChar *utf,
115                                         int len);
116XMLPUBFUN xmlChar * XMLCALL
117        xmlUTF8Strndup                   (const xmlChar *utf,
118                                         int len);
119XMLPUBFUN const xmlChar * XMLCALL
120        xmlUTF8Strpos                    (const xmlChar *utf,
121                                         int pos);
122XMLPUBFUN int XMLCALL
123        xmlUTF8Strloc                    (const xmlChar *utf,
124                                         const xmlChar *utfchar);
125XMLPUBFUN xmlChar * XMLCALL
126        xmlUTF8Strsub                    (const xmlChar *utf,
127                                         int start,
128                                         int len);
129XMLPUBFUN int XMLCALL
130        xmlUTF8Strlen                    (const xmlChar *utf);
131XMLPUBFUN int XMLCALL
132        xmlUTF8Size                      (const xmlChar *utf);
133XMLPUBFUN int XMLCALL
134        xmlUTF8Charcmp                   (const xmlChar *utf1,
135                                         const xmlChar *utf2);
136
137#ifdef __cplusplus
138}
139#endif
140#endif /* __XML_STRING_H__ */
141