1 /* libxml2 - Library for parsing XML documents
2 * Copyright (C) 2006-2019 Free Software Foundation, Inc.
3 *
4 * This file is not part of the GNU gettext program, but is used with
5 * GNU gettext.
6 *
7 * The original copyright notice is as follows:
8 */
9
10 /*
11 * Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.
12 *
13 * Permission is hereby granted, free of charge, to any person obtaining a copy
14 * of this software and associated documentation files (the "Software"), to deal
15 * in the Software without restriction, including without limitation the rights
16 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17 * copies of the Software, and to permit persons to whom the Software is fur-
18 * nished to do so, subject to the following conditions:
19 *
20 * The above copyright notice and this permission notice shall be included in
21 * all copies or substantial portions of the Software.
22 *
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
25 * NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
29 * THE SOFTWARE.
30 *
31 * Author: Daniel Veillard
32 */
33
34 /*
35 * Summary: set of routines to process strings
36 * Description: type and interfaces needed for the internal string handling
37 * of the library, especially UTF8 processing.
38 */
39
40 #ifndef __XML_STRING_H__
41 #define __XML_STRING_H__
42
43 #include <stdarg.h>
44 #include <libxml/xmlversion.h>
45
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49
50 /**
51 * xmlChar:
52 *
53 * This is a basic byte in an UTF-8 encoded string.
54 * It's unsigned allowing to pinpoint case where char * are assigned
55 * to xmlChar * (possibly making serialization back impossible).
56 */
57 typedef unsigned char xmlChar;
58
59 /**
60 * BAD_CAST:
61 *
62 * Macro to cast a string to an xmlChar * when one know its safe.
63 */
64 #define BAD_CAST (xmlChar *)
65
66 /*
67 * xmlChar handling
68 */
69 XMLPUBFUN xmlChar * XMLCALL
70 xmlStrdup (const xmlChar *cur);
71 XMLPUBFUN xmlChar * XMLCALL
72 xmlStrndup (const xmlChar *cur,
73 int len);
74 XMLPUBFUN xmlChar * XMLCALL
75 xmlCharStrndup (const char *cur,
76 int len);
77 XMLPUBFUN xmlChar * XMLCALL
78 xmlCharStrdup (const char *cur);
79 XMLPUBFUN xmlChar * XMLCALL
80 xmlStrsub (const xmlChar *str,
81 int start,
82 int len);
83 XMLPUBFUN const xmlChar * XMLCALL
84 xmlStrchr (const xmlChar *str,
85 xmlChar val);
86 XMLPUBFUN const xmlChar * XMLCALL
87 xmlStrstr (const xmlChar *str,
88 const xmlChar *val);
89 XMLPUBFUN const xmlChar * XMLCALL
90 xmlStrcasestr (const xmlChar *str,
91 const xmlChar *val);
92 XMLPUBFUN int XMLCALL
93 xmlStrcmp (const xmlChar *str1,
94 const xmlChar *str2);
95 XMLPUBFUN int XMLCALL
96 xmlStrncmp (const xmlChar *str1,
97 const xmlChar *str2,
98 int len);
99 XMLPUBFUN int XMLCALL
100 xmlStrcasecmp (const xmlChar *str1,
101 const xmlChar *str2);
102 XMLPUBFUN int XMLCALL
103 xmlStrncasecmp (const xmlChar *str1,
104 const xmlChar *str2,
105 int len);
106 XMLPUBFUN int XMLCALL
107 xmlStrEqual (const xmlChar *str1,
108 const xmlChar *str2);
109 XMLPUBFUN int XMLCALL
110 xmlStrQEqual (const xmlChar *pref,
111 const xmlChar *name,
112 const xmlChar *str);
113 XMLPUBFUN int XMLCALL
114 xmlStrlen (const xmlChar *str);
115 XMLPUBFUN xmlChar * XMLCALL
116 xmlStrcat (xmlChar *cur,
117 const xmlChar *add);
118 XMLPUBFUN xmlChar * XMLCALL
119 xmlStrncat (xmlChar *cur,
120 const xmlChar *add,
121 int len);
122 XMLPUBFUN xmlChar * XMLCALL
123 xmlStrncatNew (const xmlChar *str1,
124 const xmlChar *str2,
125 int len);
126 XMLPUBFUN int XMLCALL
127 xmlStrPrintf (xmlChar *buf,
128 int len,
129 const char *msg,
130 ...) LIBXML_ATTR_FORMAT(3,4);
131 XMLPUBFUN int XMLCALL
132 xmlStrVPrintf (xmlChar *buf,
133 int len,
134 const char *msg,
135 va_list ap) LIBXML_ATTR_FORMAT(3,0);
136
137 XMLPUBFUN int XMLCALL
138 xmlGetUTF8Char (const unsigned char *utf,
139 int *len);
140 XMLPUBFUN int XMLCALL
141 xmlCheckUTF8 (const unsigned char *utf);
142 XMLPUBFUN int XMLCALL
143 xmlUTF8Strsize (const xmlChar *utf,
144 int len);
145 XMLPUBFUN xmlChar * XMLCALL
146 xmlUTF8Strndup (const xmlChar *utf,
147 int len);
148 XMLPUBFUN const xmlChar * XMLCALL
149 xmlUTF8Strpos (const xmlChar *utf,
150 int pos);
151 XMLPUBFUN int XMLCALL
152 xmlUTF8Strloc (const xmlChar *utf,
153 const xmlChar *utfchar);
154 XMLPUBFUN xmlChar * XMLCALL
155 xmlUTF8Strsub (const xmlChar *utf,
156 int start,
157 int len);
158 XMLPUBFUN int XMLCALL
159 xmlUTF8Strlen (const xmlChar *utf);
160 XMLPUBFUN int XMLCALL
161 xmlUTF8Size (const xmlChar *utf);
162 XMLPUBFUN int XMLCALL
163 xmlUTF8Charcmp (const xmlChar *utf1,
164 const xmlChar *utf2);
165
166 #ifdef __cplusplus
167 }
168 #endif
169 #endif /* __XML_STRING_H__ */