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: string dictionary 36 * Description: dictionary of reusable strings, just used to avoid allocation 37 * and freeing operations. 38 */ 39 40 #ifndef __XML_DICT_H__ 41 #define __XML_DICT_H__ 42 43 #ifdef __cplusplus 44 #define __XML_EXTERNC extern "C" 45 #else 46 #define __XML_EXTERNC 47 #endif 48 49 /* 50 * The dictionary. 51 */ 52 __XML_EXTERNC typedef struct _xmlDict xmlDict; 53 __XML_EXTERNC typedef xmlDict *xmlDictPtr; 54 55 #include <limits.h> 56 #include <libxml/xmlversion.h> 57 #include <libxml/tree.h> 58 59 #ifdef __cplusplus 60 extern "C" { 61 #endif 62 63 /* 64 * Initializer 65 */ 66 XMLPUBFUN int XMLCALL xmlInitializeDict(void); 67 68 /* 69 * Constructor and destructor. 70 */ 71 XMLPUBFUN xmlDictPtr XMLCALL 72 xmlDictCreate (void); 73 XMLPUBFUN size_t XMLCALL 74 xmlDictSetLimit (xmlDictPtr dict, 75 size_t limit); 76 XMLPUBFUN size_t XMLCALL 77 xmlDictGetUsage (xmlDictPtr dict); 78 XMLPUBFUN xmlDictPtr XMLCALL 79 xmlDictCreateSub(xmlDictPtr sub); 80 XMLPUBFUN int XMLCALL 81 xmlDictReference(xmlDictPtr dict); 82 XMLPUBFUN void XMLCALL 83 xmlDictFree (xmlDictPtr dict); 84 85 /* 86 * Lookup of entry in the dictionary. 87 */ 88 XMLPUBFUN const xmlChar * XMLCALL 89 xmlDictLookup (xmlDictPtr dict, 90 const xmlChar *name, 91 int len); 92 XMLPUBFUN const xmlChar * XMLCALL 93 xmlDictExists (xmlDictPtr dict, 94 const xmlChar *name, 95 int len); 96 XMLPUBFUN const xmlChar * XMLCALL 97 xmlDictQLookup (xmlDictPtr dict, 98 const xmlChar *prefix, 99 const xmlChar *name); 100 XMLPUBFUN int XMLCALL 101 xmlDictOwns (xmlDictPtr dict, 102 const xmlChar *str); 103 XMLPUBFUN int XMLCALL 104 xmlDictSize (xmlDictPtr dict); 105 106 /* 107 * Cleanup function 108 */ 109 XMLPUBFUN void XMLCALL 110 xmlDictCleanup (void); 111 112 #ifdef __cplusplus 113 } 114 #endif 115 #endif /* ! __XML_DICT_H__ */ 116