libUPnP  1.6.17
ixml.h
Go to the documentation of this file.
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