1/* ----------------------------------------------------------------------------- 2 * See the LICENSE file for information on copyright, usage and redistribution 3 * of SWIG, and the README file for authors - http://www.swig.org/release.html. 4 * 5 * swigtree.h 6 * 7 * These functions are used to access and manipulate the SWIG parse tree. 8 * The structure of this tree is modeled directly after XML-DOM. The attribute 9 * and function names are meant to be similar. 10 * ----------------------------------------------------------------------------- */ 11 12/* $Id: swig.h 9622 2006-12-19 03:49:17Z beazley $ */ 13 14/* Macros to traverse the DOM tree */ 15 16#define nodeType(x) Getattr(x,"nodeType") 17#define parentNode(x) Getattr(x,"parentNode") 18#define previousSibling(x) Getattr(x,"previousSibling") 19#define nextSibling(x) Getattr(x,"nextSibling") 20#define firstChild(x) Getattr(x,"firstChild") 21#define lastChild(x) Getattr(x,"lastChild") 22 23/* Macros to set up the DOM tree (mostly used by the parser) */ 24 25#define set_nodeType(x,v) Setattr(x,"nodeType",v) 26#define set_parentNode(x,v) Setattr(x,"parentNode",v) 27#define set_previousSibling(x,v) Setattr(x,"previousSibling",v) 28#define set_nextSibling(x,v) Setattr(x,"nextSibling",v) 29#define set_firstChild(x,v) Setattr(x,"firstChild",v) 30#define set_lastChild(x,v) Setattr(x,"lastChild",v) 31 32/* Utility functions */ 33 34extern int checkAttribute(Node *obj, const_String_or_char_ptr name, const_String_or_char_ptr value); 35extern void appendChild(Node *node, Node *child); 36extern void prependChild(Node *node, Node *child); 37extern void removeNode(Node *node); 38extern Node *copyNode(Node *node); 39 40/* Node restoration/restore functions */ 41 42extern void Swig_require(const char *ns, Node *node, ...); 43extern void Swig_save(const char *ns, Node *node, ...); 44extern void Swig_restore(Node *node); 45 46/* Debugging of parse trees */ 47 48extern void Swig_print_tags(File *obj, Node *root); 49extern void Swig_print_tree(Node *obj); 50extern void Swig_print_node(Node *obj); 51