Main Page   Modules   Namespace List   Data Structures   File List   Data Fields   Examples  

DomNode.h

00001 /*
00002  * libsgml -- SGML state machine parsing library.
00003  *                                                                  
00004  * Copyright (c) 2002 Uninformed Research (http://www.uninformed.org)
00005  * All rights reserved.
00006  *
00007  * skape
00008  * [email protected]
00009  */
00018 #ifndef _LIBSGML_DOMNODE_H
00019 #define _LIBSGML_DOMNODE_H
00020 
00021 #include "Variant.h"
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif 
00026 
00027 #include <stdio.h>
00028 
00029 #define DOM_NDOE_TYPE_INVALID   0x0000
00030 #define DOM_NODE_TYPE_DOCUMENT  0x0001
00031 #define DOM_NODE_TYPE_ELEMENT   0x0002
00032 #define DOM_NODE_TYPE_ATTRIBUTE 0x0003
00033 #define DOM_NODE_TYPE_TEXT      0x0004
00034 #define DOM_NODE_TYPE_COMMENT   0x0005
00035 
00036 struct _dom_node_list;
00037 
00041 typedef struct _dom_node {
00042 
00059         unsigned long    type;
00060 
00064         char             *name;
00068         char             *value;
00069 
00073         struct _dom_node *attributes;
00074 
00078         struct _dom_node *parent;
00079 
00083         struct _dom_node *firstChild;
00087         struct _dom_node *lastChild;
00088 
00092         struct _dom_node *prevSibling;
00096         struct _dom_node *nextSibling;
00097 
00101         unsigned char    autoclose;
00105         unsigned char    deferredClosure;
00109         unsigned char    escapeTags;
00110 
00111 } DOM_NODE;
00112 
00136 DOM_NODE *domNodeNew(unsigned long type, const char *name, const char *value);
00142 void domNodeDestroySpecific(DOM_NODE *node);
00148 void domNodeDestroy(DOM_NODE *node);
00149 
00156 void domNodeAppendChild(DOM_NODE *parent, DOM_NODE *child);
00163 void domNodeAppendSibling(DOM_NODE *node, DOM_NODE *sibling);
00170 void domNodeRemoveChild(DOM_NODE *parent, DOM_NODE *child);
00171 
00178 DOM_NODE *domNodeGetFirstChild(DOM_NODE *node);
00185 DOM_NODE *domNodeGetPreviousSibling(DOM_NODE *node);
00192 DOM_NODE *domNodeGetNextSibling(DOM_NODE *node);
00193 
00200 void domNodeSetName(DOM_NODE *node, const char *name);
00207 const char *domNodeGetName(DOM_NODE *node);
00208 
00215 void domNodeSetValue(DOM_NODE *node, const char *value);
00216 
00225 void domNodeSetValueVariant(DOM_NODE *node, enum VariantType type, void *value, unsigned long valueSize);
00234 const char *domNodeGetValue(DOM_NODE *node);
00244 void *domNodeGetValueVariant(DOM_NODE *node, enum VariantType type);
00245 
00253 DOM_NODE *domNodeFindNodeByName(DOM_NODE *node, const char *name);
00261 struct _dom_node_list *domNodeFindNodesByName(DOM_NODE *node, const char *name);
00262 void domNodeFindNodesByName_r(struct _dom_node_list *nodeList, DOM_NODE *node, const char *name);
00263 
00270 void domNodeSerializeToFile(DOM_NODE *node, const char *fileName);
00277 void domNodeSerializeToFd(DOM_NODE *node, FILE *fd);
00285 unsigned long domNodeSerializeToString(DOM_NODE *node, char **string);
00286 
00287 void domNodeSerializeToString_r(DOM_NODE *node, char **string, unsigned long *stringLength);
00288 
00293 #ifdef __cplusplus
00294 }
00295 #endif 
00296 
00297 #endif

Generated on Tue Mar 25 19:49:04 2003 for libsgml by doxygen1.3-rc3