1: /*
2: * Summary: Tree debugging APIs
3: * Description: Interfaces to a set of routines used for debugging the tree
4: * produced by the XML parser.
5: *
6: * Copy: See Copyright for the status of this software.
7: *
8: * Author: Daniel Veillard
9: */
10:
11: #ifndef __DEBUG_XML__
12: #define __DEBUG_XML__
13: #include <stdio.h>
14: #include <libxml/xmlversion.h>
15: #include <libxml/tree.h>
16:
17: #ifdef LIBXML_DEBUG_ENABLED
18:
19: #include <libxml/xpath.h>
20:
21: #ifdef __cplusplus
22: extern "C" {
23: #endif
24:
25: /*
26: * The standard Dump routines.
27: */
28: XMLPUBFUN void XMLCALL
29: xmlDebugDumpString (FILE *output,
30: const xmlChar *str);
31: XMLPUBFUN void XMLCALL
32: xmlDebugDumpAttr (FILE *output,
33: xmlAttrPtr attr,
34: int depth);
35: XMLPUBFUN void XMLCALL
36: xmlDebugDumpAttrList (FILE *output,
37: xmlAttrPtr attr,
38: int depth);
39: XMLPUBFUN void XMLCALL
40: xmlDebugDumpOneNode (FILE *output,
41: xmlNodePtr node,
42: int depth);
43: XMLPUBFUN void XMLCALL
44: xmlDebugDumpNode (FILE *output,
45: xmlNodePtr node,
46: int depth);
47: XMLPUBFUN void XMLCALL
48: xmlDebugDumpNodeList (FILE *output,
49: xmlNodePtr node,
50: int depth);
51: XMLPUBFUN void XMLCALL
52: xmlDebugDumpDocumentHead(FILE *output,
53: xmlDocPtr doc);
54: XMLPUBFUN void XMLCALL
55: xmlDebugDumpDocument (FILE *output,
56: xmlDocPtr doc);
57: XMLPUBFUN void XMLCALL
58: xmlDebugDumpDTD (FILE *output,
59: xmlDtdPtr dtd);
60: XMLPUBFUN void XMLCALL
61: xmlDebugDumpEntities (FILE *output,
62: xmlDocPtr doc);
63:
64: /****************************************************************
65: * *
66: * Checking routines *
67: * *
68: ****************************************************************/
69:
70: XMLPUBFUN int XMLCALL
71: xmlDebugCheckDocument (FILE * output,
72: xmlDocPtr doc);
73:
74: /****************************************************************
75: * *
76: * XML shell helpers *
77: * *
78: ****************************************************************/
79:
80: XMLPUBFUN void XMLCALL
81: xmlLsOneNode (FILE *output, xmlNodePtr node);
82: XMLPUBFUN int XMLCALL
83: xmlLsCountNode (xmlNodePtr node);
84:
85: XMLPUBFUN const char * XMLCALL
86: xmlBoolToText (int boolval);
87:
88: /****************************************************************
89: * *
90: * The XML shell related structures and functions *
91: * *
92: ****************************************************************/
93:
94: #ifdef LIBXML_XPATH_ENABLED
95: /**
96: * xmlShellReadlineFunc:
97: * @prompt: a string prompt
98: *
99: * This is a generic signature for the XML shell input function.
100: *
101: * Returns a string which will be freed by the Shell.
102: */
103: typedef char * (* xmlShellReadlineFunc)(char *prompt);
104:
105: /**
106: * xmlShellCtxt:
107: *
108: * A debugging shell context.
109: * TODO: add the defined function tables.
110: */
111: typedef struct _xmlShellCtxt xmlShellCtxt;
112: typedef xmlShellCtxt *xmlShellCtxtPtr;
113: struct _xmlShellCtxt {
114: char *filename;
115: xmlDocPtr doc;
116: xmlNodePtr node;
117: xmlXPathContextPtr pctxt;
118: int loaded;
119: FILE *output;
120: xmlShellReadlineFunc input;
121: };
122:
123: /**
124: * xmlShellCmd:
125: * @ctxt: a shell context
126: * @arg: a string argument
127: * @node: a first node
128: * @node2: a second node
129: *
130: * This is a generic signature for the XML shell functions.
131: *
132: * Returns an int, negative returns indicating errors.
133: */
134: typedef int (* xmlShellCmd) (xmlShellCtxtPtr ctxt,
135: char *arg,
136: xmlNodePtr node,
137: xmlNodePtr node2);
138:
139: XMLPUBFUN void XMLCALL
140: xmlShellPrintXPathError (int errorType,
141: const char *arg);
142: XMLPUBFUN void XMLCALL
143: xmlShellPrintXPathResult(xmlXPathObjectPtr list);
144: XMLPUBFUN int XMLCALL
145: xmlShellList (xmlShellCtxtPtr ctxt,
146: char *arg,
147: xmlNodePtr node,
148: xmlNodePtr node2);
149: XMLPUBFUN int XMLCALL
150: xmlShellBase (xmlShellCtxtPtr ctxt,
151: char *arg,
152: xmlNodePtr node,
153: xmlNodePtr node2);
154: XMLPUBFUN int XMLCALL
155: xmlShellDir (xmlShellCtxtPtr ctxt,
156: char *arg,
157: xmlNodePtr node,
158: xmlNodePtr node2);
159: XMLPUBFUN int XMLCALL
160: xmlShellLoad (xmlShellCtxtPtr ctxt,
161: char *filename,
162: xmlNodePtr node,
163: xmlNodePtr node2);
164: #ifdef LIBXML_OUTPUT_ENABLED
165: XMLPUBFUN void XMLCALL
166: xmlShellPrintNode (xmlNodePtr node);
167: XMLPUBFUN int XMLCALL
168: xmlShellCat (xmlShellCtxtPtr ctxt,
169: char *arg,
170: xmlNodePtr node,
171: xmlNodePtr node2);
172: XMLPUBFUN int XMLCALL
173: xmlShellWrite (xmlShellCtxtPtr ctxt,
174: char *filename,
175: xmlNodePtr node,
176: xmlNodePtr node2);
177: XMLPUBFUN int XMLCALL
178: xmlShellSave (xmlShellCtxtPtr ctxt,
179: char *filename,
180: xmlNodePtr node,
181: xmlNodePtr node2);
182: #endif /* LIBXML_OUTPUT_ENABLED */
183: #ifdef LIBXML_VALID_ENABLED
184: XMLPUBFUN int XMLCALL
185: xmlShellValidate (xmlShellCtxtPtr ctxt,
186: char *dtd,
187: xmlNodePtr node,
188: xmlNodePtr node2);
189: #endif /* LIBXML_VALID_ENABLED */
190: XMLPUBFUN int XMLCALL
191: xmlShellDu (xmlShellCtxtPtr ctxt,
192: char *arg,
193: xmlNodePtr tree,
194: xmlNodePtr node2);
195: XMLPUBFUN int XMLCALL
196: xmlShellPwd (xmlShellCtxtPtr ctxt,
197: char *buffer,
198: xmlNodePtr node,
199: xmlNodePtr node2);
200:
201: /*
202: * The Shell interface.
203: */
204: XMLPUBFUN void XMLCALL
205: xmlShell (xmlDocPtr doc,
206: char *filename,
207: xmlShellReadlineFunc input,
208: FILE *output);
209:
210: #endif /* LIBXML_XPATH_ENABLED */
211:
212: #ifdef __cplusplus
213: }
214: #endif
215:
216: #endif /* LIBXML_DEBUG_ENABLED */
217: #endif /* __DEBUG_XML__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>