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 18 extern "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 */ 28 typedef 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 */ 40 XMLPUBFUN xmlChar * XMLCALL 41 xmlStrdup (const xmlChar *cur); 42 XMLPUBFUN xmlChar * XMLCALL 43 xmlStrndup (const xmlChar *cur, 44 int len); 45 XMLPUBFUN xmlChar * XMLCALL 46 xmlCharStrndup (const char *cur, 47 int len); 48 XMLPUBFUN xmlChar * XMLCALL 49 xmlCharStrdup (const char *cur); 50 XMLPUBFUN xmlChar * XMLCALL 51 xmlStrsub (const xmlChar *str, 52 int start, 53 int len); 54 XMLPUBFUN const xmlChar * XMLCALL 55 xmlStrchr (const xmlChar *str, 56 xmlChar val); 57 XMLPUBFUN const xmlChar * XMLCALL 58 xmlStrstr (const xmlChar *str, 59 const xmlChar *val); 60 XMLPUBFUN const xmlChar * XMLCALL 61 xmlStrcasestr (const xmlChar *str, 62 const xmlChar *val); 63 XMLPUBFUN int XMLCALL 64 xmlStrcmp (const xmlChar *str1, 65 const xmlChar *str2); 66 XMLPUBFUN int XMLCALL 67 xmlStrncmp (const xmlChar *str1, 68 const xmlChar *str2, 69 int len); 70 XMLPUBFUN int XMLCALL 71 xmlStrcasecmp (const xmlChar *str1, 72 const xmlChar *str2); 73 XMLPUBFUN int XMLCALL 74 xmlStrncasecmp (const xmlChar *str1, 75 const xmlChar *str2, 76 int len); 77 XMLPUBFUN int XMLCALL 78 xmlStrEqual (const xmlChar *str1, 79 const xmlChar *str2); 80 XMLPUBFUN int XMLCALL 81 xmlStrQEqual (const xmlChar *pref, 82 const xmlChar *name, 83 const xmlChar *str); 84 XMLPUBFUN int XMLCALL 85 xmlStrlen (const xmlChar *str); 86 XMLPUBFUN xmlChar * XMLCALL 87 xmlStrcat (xmlChar *cur, 88 const xmlChar *add); 89 XMLPUBFUN xmlChar * XMLCALL 90 xmlStrncat (xmlChar *cur, 91 const xmlChar *add, 92 int len); 93 XMLPUBFUN xmlChar * XMLCALL 94 xmlStrncatNew (const xmlChar *str1, 95 const xmlChar *str2, 96 int len); 97 XMLPUBFUN int XMLCALL 98 xmlStrPrintf (xmlChar *buf, 99 int len, 100 const char *msg, 101 ...) LIBXML_ATTR_FORMAT(3,4); 102 XMLPUBFUN int XMLCALL 103 xmlStrVPrintf (xmlChar *buf, 104 int len, 105 const char *msg, 106 va_list ap) LIBXML_ATTR_FORMAT(3,0); 107 108 XMLPUBFUN int XMLCALL 109 xmlGetUTF8Char (const unsigned char *utf, 110 int *len); 111 XMLPUBFUN int XMLCALL 112 xmlCheckUTF8 (const unsigned char *utf); 113 XMLPUBFUN int XMLCALL 114 xmlUTF8Strsize (const xmlChar *utf, 115 int len); 116 XMLPUBFUN xmlChar * XMLCALL 117 xmlUTF8Strndup (const xmlChar *utf, 118 int len); 119 XMLPUBFUN const xmlChar * XMLCALL 120 xmlUTF8Strpos (const xmlChar *utf, 121 int pos); 122 XMLPUBFUN int XMLCALL 123 xmlUTF8Strloc (const xmlChar *utf, 124 const xmlChar *utfchar); 125 XMLPUBFUN xmlChar * XMLCALL 126 xmlUTF8Strsub (const xmlChar *utf, 127 int start, 128 int len); 129 XMLPUBFUN int XMLCALL 130 xmlUTF8Strlen (const xmlChar *utf); 131 XMLPUBFUN int XMLCALL 132 xmlUTF8Size (const xmlChar *utf); 133 XMLPUBFUN int XMLCALL 134 xmlUTF8Charcmp (const xmlChar *utf1, 135 const xmlChar *utf2); 136 137 #ifdef __cplusplus 138 } 139 #endif 140 #endif /* __XML_STRING_H__ */ 141