libUPnP
1.6.17
|
00001 /************************************************************************** 00002 * 00003 * Copyright (c) 2000-2003 Intel Corporation 00004 * All rights reserved. 00005 * 00006 * Redistribution and use in source and binary forms, with or without 00007 * modification, are permitted provided that the following conditions are met: 00008 * 00009 * - Redistributions of source code must retain the above copyright notice, 00010 * this list of conditions and the following disclaimer. 00011 * - Redistributions in binary form must reproduce the above copyright notice, 00012 * this list of conditions and the following disclaimer in the documentation 00013 * and/or other materials provided with the distribution. 00014 * - Neither name of Intel Corporation nor the names of its contributors 00015 * may be used to endorse or promote products derived from this software 00016 * without specific prior written permission. 00017 * 00018 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00019 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00020 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 00021 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR 00022 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00023 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00024 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00025 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 00026 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00027 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00028 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00029 * 00030 **************************************************************************/ 00031 00032 00033 #ifndef IXML_H 00034 #define IXML_H 00035 00036 00046 #include "UpnpGlobal.h" /* For EXPORT_SPEC */ 00047 00048 /* Define BOOL. */ 00049 #ifndef __OBJC__ 00050 typedef int BOOL; 00051 #else 00052 /* For Objective C compilers, include objc.h which defines BOOL. */ 00053 #include <objc/objc.h> 00054 #endif 00055 00059 #define DOMString char * 00060 /*typedef char *DOMString;*/ 00061 00062 00063 #ifndef TRUE 00064 #define TRUE 1 00065 #endif 00066 00067 #ifndef FALSE 00068 #define FALSE 0 00069 #endif 00070 00071 #ifndef IN 00072 #define IN 00073 #endif 00074 00075 #ifndef OUT 00076 #define OUT 00077 #endif 00078 00079 #ifndef INOUT 00080 #define INOUT 00081 #endif 00082 00083 00103 typedef enum { 00104 eINVALID_NODE = 0, 00105 eELEMENT_NODE = 1, 00106 eATTRIBUTE_NODE = 2, 00107 eTEXT_NODE = 3, 00108 eCDATA_SECTION_NODE = 4, 00109 eENTITY_REFERENCE_NODE = 5, 00110 eENTITY_NODE = 6, 00111 ePROCESSING_INSTRUCTION_NODE = 7, 00112 eCOMMENT_NODE = 8, 00113 eDOCUMENT_NODE = 9, 00114 eDOCUMENT_TYPE_NODE = 10, 00115 eDOCUMENT_FRAGMENT_NODE = 11, 00116 eNOTATION_NODE = 12, 00117 } IXML_NODE_TYPE; 00118 00119 00123 typedef enum { 00124 IXML_SUCCESS = 0, 00125 00126 IXML_INDEX_SIZE_ERR = 1, 00127 IXML_DOMSTRING_SIZE_ERR = 2, 00128 IXML_HIERARCHY_REQUEST_ERR = 3, 00129 IXML_WRONG_DOCUMENT_ERR = 4, 00130 IXML_INVALID_CHARACTER_ERR = 5, 00131 IXML_NO_DATA_ALLOWED_ERR = 6, 00132 IXML_NO_MODIFICATION_ALLOWED_ERR = 7, 00133 IXML_NOT_FOUND_ERR = 8, 00134 IXML_NOT_SUPPORTED_ERR = 9, 00135 IXML_INUSE_ATTRIBUTE_ERR = 10, 00136 IXML_INVALID_STATE_ERR = 11, 00137 IXML_SYNTAX_ERR = 12, 00138 IXML_INVALID_MODIFICATION_ERR = 13, 00139 IXML_NAMESPACE_ERR = 14, 00140 IXML_INVALID_ACCESS_ERR = 15, 00141 00142 IXML_NO_SUCH_FILE = 101, 00143 IXML_INSUFFICIENT_MEMORY = 102, 00144 IXML_FILE_DONE = 104, 00145 IXML_INVALID_PARAMETER = 105, 00146 IXML_FAILED = 106, 00147 IXML_INVALID_ITEM_NUMBER = 107, 00148 } IXML_ERRORCODE; 00149 00150 00151 #define DOCUMENTNODENAME "#document" 00152 #define TEXTNODENAME "#text" 00153 #define CDATANODENAME "#cdata-section" 00154 00155 00156 typedef struct _IXML_Document *Docptr; 00157 00158 00159 typedef struct _IXML_Node *Nodeptr; 00160 00161 00165 typedef struct _IXML_Node 00166 { 00167 DOMString nodeName; 00168 DOMString nodeValue; 00169 IXML_NODE_TYPE nodeType; 00170 DOMString namespaceURI; 00171 DOMString prefix; 00172 DOMString localName; 00173 BOOL readOnly; 00174 00175 Nodeptr parentNode; 00176 Nodeptr firstChild; 00177 Nodeptr prevSibling; 00178 Nodeptr nextSibling; 00179 Nodeptr firstAttr; 00180 Docptr ownerDocument; 00181 } IXML_Node; 00182 00183 00187 typedef struct _IXML_Document 00188 { 00189 IXML_Node n; 00190 } IXML_Document; 00191 00192 00196 typedef struct _IXML_CDATASection 00197 { 00198 IXML_Node n; 00199 } IXML_CDATASection; 00200 00201 00205 typedef struct _IXML_Element 00206 { 00207 IXML_Node n; 00208 DOMString tagName; 00209 } IXML_Element; 00210 00211 00215 typedef struct _IXML_ATTR 00216 { 00217 IXML_Node n; 00218 BOOL specified; 00219 IXML_Element *ownerElement; 00220 } IXML_Attr; 00221 00222 00226 typedef struct _IXML_Text 00227 { 00228 IXML_Node n; 00229 } IXML_Text; 00230 00231 00235 typedef struct _IXML_NodeList 00236 { 00237 IXML_Node *nodeItem; 00238 struct _IXML_NodeList *next; 00239 } IXML_NodeList; 00240 00241 00245 typedef struct _IXML_NamedNodeMap 00246 { 00247 IXML_Node *nodeItem; 00248 struct _IXML_NamedNodeMap *next; 00249 } IXML_NamedNodeMap; 00250 00251 /* @} DOM Interfaces */ 00252 00253 00254 00255 #ifdef __cplusplus 00256 extern "C" { 00257 #endif 00258 00259 00279 EXPORT_SPEC const DOMString ixmlNode_getNodeName( 00281 IXML_Node *nodeptr); 00282 00283 00292 EXPORT_SPEC const DOMString ixmlNode_getNodeValue( 00294 IXML_Node *nodeptr); 00295 00296 00309 EXPORT_SPEC int ixmlNode_setNodeValue( 00311 IXML_Node *nodeptr, 00313 const char *newNodeValue); 00314 00315 00321 EXPORT_SPEC unsigned short ixmlNode_getNodeType( 00323 IXML_Node *nodeptr); 00324 00325 00332 EXPORT_SPEC IXML_Node *ixmlNode_getParentNode( 00334 IXML_Node *nodeptr); 00335 00336 00346 EXPORT_SPEC IXML_NodeList *ixmlNode_getChildNodes( 00348 IXML_Node *nodeptr); 00349 00350 00357 EXPORT_SPEC IXML_Node *ixmlNode_getFirstChild( 00359 IXML_Node *nodeptr); 00360 00361 00368 EXPORT_SPEC IXML_Node *ixmlNode_getLastChild( 00370 IXML_Node *nodeptr); 00371 00372 00379 EXPORT_SPEC IXML_Node *ixmlNode_getPreviousSibling( 00381 IXML_Node *nodeptr); 00382 00383 00390 EXPORT_SPEC IXML_Node *ixmlNode_getNextSibling( 00392 IXML_Node *nodeptr); 00393 00394 00401 EXPORT_SPEC IXML_NamedNodeMap *ixmlNode_getAttributes( 00403 IXML_Node *nodeptr); 00404 00405 00416 EXPORT_SPEC IXML_Document *ixmlNode_getOwnerDocument( 00418 IXML_Node *nodeptr); 00419 00420 00430 EXPORT_SPEC const DOMString ixmlNode_getNamespaceURI( 00432 IXML_Node *nodeptr); 00433 00434 00445 EXPORT_SPEC const DOMString 00446 ixmlNode_getPrefix( 00448 IXML_Node *nodeptr); 00449 00450 00462 EXPORT_SPEC const DOMString ixmlNode_getLocalName( 00464 IXML_Node *nodeptr); 00465 00491 EXPORT_SPEC int ixmlNode_insertBefore( 00493 IXML_Node *nodeptr, 00495 IXML_Node * newChild, 00498 IXML_Node * refChild); 00499 00500 00523 EXPORT_SPEC int ixmlNode_replaceChild( 00525 IXML_Node *nodeptr, 00527 IXML_Node *newChild, 00529 IXML_Node *oldChild, 00531 IXML_Node **returnNode); 00532 00533 00550 EXPORT_SPEC int ixmlNode_removeChild( 00552 IXML_Node *nodeptr, 00554 IXML_Node *oldChild, 00556 IXML_Node **returnNode); 00557 00558 00576 EXPORT_SPEC int ixmlNode_appendChild( 00578 IXML_Node *nodeptr, 00580 IXML_Node * newChild); 00581 00582 00588 EXPORT_SPEC BOOL ixmlNode_hasChildNodes( 00590 IXML_Node *nodeptr); 00591 00592 00604 EXPORT_SPEC IXML_Node *ixmlNode_cloneNode( 00606 IXML_Node *nodeptr, 00609 BOOL deep); 00610 00611 00619 EXPORT_SPEC BOOL ixmlNode_hasAttributes( 00621 IXML_Node *nodeptr); 00622 00623 00627 EXPORT_SPEC void ixmlNode_free( 00629 IXML_Node *nodeptr); 00630 00631 /* @} Interface Node */ 00632 00633 00634 00652 EXPORT_SPEC void ixmlAttr_free( 00654 IXML_Attr *attrNode); 00655 00656 00657 /* @} Interface Attr */ 00658 00659 00660 00679 EXPORT_SPEC void ixmlCDATASection_init( 00681 IXML_CDATASection *nodeptr); 00682 00683 00687 EXPORT_SPEC void ixmlCDATASection_free( 00689 IXML_CDATASection *nodeptr); 00690 00691 00692 /* @} Interface CDATASection */ 00693 00694 00695 00713 EXPORT_SPEC void ixmlDocument_init( 00715 IXML_Document *nodeptr); 00716 00717 00730 EXPORT_SPEC int ixmlDocument_createDocumentEx( 00732 IXML_Document **doc); 00733 00734 00741 EXPORT_SPEC IXML_Document *ixmlDocument_createDocument(void); 00742 00743 00762 EXPORT_SPEC int ixmlDocument_createElementEx( 00764 IXML_Document *doc, 00766 const DOMString tagName, 00768 IXML_Element **rtElement); 00769 00770 00782 EXPORT_SPEC IXML_Element *ixmlDocument_createElement( 00784 IXML_Document *doc, 00786 const DOMString tagName); 00787 00788 00803 EXPORT_SPEC int ixmlDocument_createTextNodeEx( 00805 IXML_Document *doc, 00808 const DOMString data, 00810 IXML_Node **textNode); 00811 00812 00818 EXPORT_SPEC IXML_Node *ixmlDocument_createTextNode( 00820 IXML_Document *doc, 00823 const DOMString data); 00824 00825 00840 EXPORT_SPEC int ixmlDocument_createCDATASectionEx( 00842 IXML_Document *doc, 00844 const DOMString data, 00846 IXML_CDATASection** cdNode); 00847 00848 00854 EXPORT_SPEC IXML_CDATASection *ixmlDocument_createCDATASection( 00856 IXML_Document *doc, 00858 const DOMString data); 00859 00860 00870 EXPORT_SPEC IXML_Attr *ixmlDocument_createAttribute( 00872 IXML_Document *doc, 00874 const char *name); 00875 00876 00891 EXPORT_SPEC int ixmlDocument_createAttributeEx( 00893 IXML_Document *doc, 00895 const char *name, 00897 IXML_Attr **attrNode); 00898 00899 00908 EXPORT_SPEC IXML_NodeList *ixmlDocument_getElementsByTagName( 00910 IXML_Document *doc, 00912 const DOMString tagName); 00913 00914 00915 /* 00916 * introduced in DOM level 2 00917 */ 00918 00919 00935 EXPORT_SPEC int ixmlDocument_createElementNSEx( 00937 IXML_Document *doc, 00939 const DOMString namespaceURI, 00941 const DOMString qualifiedName, 00943 IXML_Element **rtElement); 00944 00945 00954 EXPORT_SPEC IXML_Element *ixmlDocument_createElementNS( 00956 IXML_Document *doc, 00958 const DOMString namespaceURI, 00960 const DOMString qualifiedName); 00961 00962 00978 EXPORT_SPEC int ixmlDocument_createAttributeNSEx( 00980 IXML_Document *doc, 00982 const DOMString namespaceURI, 00984 const DOMString qualifiedName, 00986 IXML_Attr **attrNode); 00987 00988 00997 EXPORT_SPEC IXML_Attr *ixmlDocument_createAttributeNS( 00999 IXML_Document *doc, 01001 const DOMString namespaceURI, 01003 const DOMString qualifiedName); 01004 01005 01017 EXPORT_SPEC IXML_NodeList *ixmlDocument_getElementsByTagNameNS( 01019 IXML_Document *doc, 01022 const DOMString namespaceURI, 01025 const DOMString localName); 01026 01027 01033 EXPORT_SPEC IXML_Element *ixmlDocument_getElementById( 01035 IXML_Document *doc, 01037 const DOMString tagName); 01038 01039 01047 EXPORT_SPEC void ixmlDocument_free( 01049 IXML_Document *doc); 01050 01051 01082 EXPORT_SPEC int ixmlDocument_importNode( 01084 IXML_Document *doc, 01086 IXML_Node * importNode, 01089 BOOL deep, 01091 IXML_Node **rtNode); 01092 01093 01094 /* @} Interface Document */ 01095 01096 01097 01098 01115 EXPORT_SPEC void ixmlElement_init( 01117 IXML_Element *element); 01118 01119 01125 EXPORT_SPEC const DOMString ixmlElement_getTagName( 01127 IXML_Element *element); 01128 01129 01136 EXPORT_SPEC const DOMString ixmlElement_getAttribute( 01138 IXML_Element* element, 01140 const DOMString name); 01141 01142 01159 EXPORT_SPEC int ixmlElement_setAttribute( 01161 IXML_Element *element, 01163 const DOMString name, 01166 const DOMString value); 01167 01168 01177 EXPORT_SPEC int ixmlElement_removeAttribute( 01179 IXML_Element *element, 01181 const DOMString name); 01182 01183 01192 EXPORT_SPEC IXML_Attr *ixmlElement_getAttributeNode( 01194 IXML_Element *element, 01196 const DOMString name); 01197 01198 01216 EXPORT_SPEC int ixmlElement_setAttributeNode( 01218 IXML_Element *element, 01220 IXML_Attr* newAttr, 01223 IXML_Attr** rtAttr); 01224 01225 01236 EXPORT_SPEC int ixmlElement_removeAttributeNode( 01238 IXML_Element *element, 01240 IXML_Attr* oldAttr, 01242 IXML_Attr** rtAttr); 01243 01244 01252 EXPORT_SPEC IXML_NodeList *ixmlElement_getElementsByTagName( 01254 IXML_Element *element, 01256 const DOMString tagName); 01257 01258 01259 /* 01260 * Introduced in DOM 2 01261 */ 01262 01263 01270 EXPORT_SPEC const DOMString ixmlElement_getAttributeNS( 01272 IXML_Element *element, 01274 const DOMString namespaceURI, 01276 const DOMString localname); 01277 01278 01301 EXPORT_SPEC int ixmlElement_setAttributeNS( 01303 IXML_Element *element, 01305 const DOMString namespaceURI, 01307 const DOMString qualifiedName, 01309 const DOMString value); 01310 01311 01323 EXPORT_SPEC int ixmlElement_removeAttributeNS( 01325 IXML_Element *element, 01327 const DOMString namespaceURI, 01329 const DOMString localName); 01330 01331 01338 EXPORT_SPEC IXML_Attr *ixmlElement_getAttributeNodeNS( 01340 IXML_Element *element, 01342 const DOMString namespaceURI, 01344 const DOMString localName); 01345 01346 01367 EXPORT_SPEC int ixmlElement_setAttributeNodeNS( 01369 IXML_Element *element, 01371 IXML_Attr *newAttr, 01373 IXML_Attr **rcAttr); 01374 01375 01383 EXPORT_SPEC IXML_NodeList *ixmlElement_getElementsByTagNameNS( 01385 IXML_Element *element, 01388 const DOMString namespaceURI, 01391 const DOMString localName); 01392 01393 01401 EXPORT_SPEC BOOL ixmlElement_hasAttribute( 01403 IXML_Element *element, 01405 const DOMString name); 01406 01407 01415 EXPORT_SPEC BOOL ixmlElement_hasAttributeNS( 01417 IXML_Element *element, 01419 const DOMString namespaceURI, 01421 const DOMString localName); 01422 01423 01427 EXPORT_SPEC void ixmlElement_free( 01429 IXML_Element *element); 01430 01431 01432 /* @} Interface Element */ 01433 01434 01435 01453 EXPORT_SPEC unsigned long ixmlNamedNodeMap_getLength( 01455 IXML_NamedNodeMap *nnMap); 01456 01457 01464 EXPORT_SPEC IXML_Node *ixmlNamedNodeMap_getNamedItem( 01466 IXML_NamedNodeMap *nnMap, 01468 const DOMString name); 01469 01470 01478 EXPORT_SPEC IXML_Node *ixmlNamedNodeMap_setNamedItem( 01480 IXML_NamedNodeMap *nnMap, 01482 IXML_Node *arg); 01483 01484 01490 EXPORT_SPEC IXML_Node *ixmlNamedNodeMap_removeNamedItem( 01492 IXML_NamedNodeMap *nnMap, 01494 const DOMString name); 01495 01496 01504 EXPORT_SPEC IXML_Node *ixmlNamedNodeMap_item( 01506 IXML_NamedNodeMap *nnMap, 01508 unsigned long index); 01509 01510 01511 /* 01512 * Introduced in DOM level 2 01513 */ 01514 01515 01522 EXPORT_SPEC IXML_Node *ixmlNamedNodeMap_getNamedItemNS( 01524 IXML_NamedNodeMap *nnMap, 01526 const DOMString *namespaceURI, 01528 const DOMString localName); 01529 01530 01538 EXPORT_SPEC IXML_Node *ixmlNamedNodeMap_setNamedItemNS( 01540 IXML_NamedNodeMap *nnMap, 01542 IXML_Node *arg); 01543 01544 01551 EXPORT_SPEC IXML_Node *ixmlNamedNodeMap_removeNamedItemNS( 01553 IXML_NamedNodeMap *nnMap, 01555 const DOMString namespaceURI, 01557 const DOMString localName); 01558 01559 01564 EXPORT_SPEC void ixmlNamedNodeMap_free( 01566 IXML_NamedNodeMap *nnMap); 01567 01568 01569 /* @} Interface NodeMap */ 01570 01571 01572 01591 EXPORT_SPEC IXML_Node *ixmlNodeList_item( 01593 IXML_NodeList *nList, 01595 unsigned long index); 01596 01597 01603 EXPORT_SPEC unsigned long ixmlNodeList_length( 01605 IXML_NodeList *nList); 01606 01607 01614 EXPORT_SPEC void ixmlNodeList_free( 01616 IXML_NodeList *nList); 01617 01618 01619 /* @} Interface NodeList */ 01620 01621 01622 01656 EXPORT_SPEC DOMString ixmlPrintDocument( 01658 IXML_Document *doc); 01659 01660 01678 EXPORT_SPEC DOMString ixmlPrintNode( 01680 IXML_Node *doc 01681 ); 01682 01683 01702 EXPORT_SPEC DOMString ixmlDocumenttoString( 01704 IXML_Document *doc); 01705 01706 01721 EXPORT_SPEC DOMString ixmlNodetoString( 01723 IXML_Node *doc); 01724 01725 01729 EXPORT_SPEC void ixmlRelaxParser( 01738 char errorChar); 01739 01740 01746 EXPORT_SPEC IXML_Document *ixmlParseBuffer( 01748 const char *buffer); 01749 01750 01765 EXPORT_SPEC int ixmlParseBufferEx( 01767 const char *buffer, 01769 IXML_Document** doc); 01770 01771 01777 EXPORT_SPEC IXML_Document *ixmlLoadDocument( 01779 const char* xmlFile); 01780 01781 01796 EXPORT_SPEC int ixmlLoadDocumentEx( 01798 const char *xmlFile, 01801 IXML_Document **doc); 01802 01803 01810 EXPORT_SPEC DOMString ixmlCloneDOMString( 01812 const DOMString src); 01813 01814 01818 EXPORT_SPEC void ixmlFreeDOMString( 01820 DOMString buf); 01821 01822 01823 /* @} IXML API */ 01824 01825 01826 #ifdef __cplusplus 01827 } 01828 #endif 01829 01830 01831 /* @} XMLAPI XML API */ 01832 01833 01834 #endif /* IXML_H */ 01835