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