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