blob: f71e670acbf226e9219eb721636ce52a9dc5bbd7 [file] [log] [blame]
Owen Taylor3473f882001-02-23 17:55:21 +00001/*
2 * debugXML.h : Interfaces to a set of routines used for debugging the tree
3 * produced by the XML parser.
4 *
Daniel Veillardc5d64342001-06-24 12:13:24 +00005 * Daniel Veillard <daniel@veillard.com>
Owen Taylor3473f882001-02-23 17:55:21 +00006 */
7
8#ifndef __DEBUG_XML__
9#define __DEBUG_XML__
10#include <stdio.h>
Igor Zlatkovic76874e42003-08-25 09:05:12 +000011#include <libxml/xmlversion.h>
Owen Taylor3473f882001-02-23 17:55:21 +000012#include <libxml/tree.h>
13
14#ifdef LIBXML_DEBUG_ENABLED
15
16#include <libxml/xpath.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22/*
Daniel Veillard61f26172002-03-12 18:46:39 +000023 * The standard Dump routines.
Owen Taylor3473f882001-02-23 17:55:21 +000024 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +000025XMLPUBFUN void XMLCALL
26 xmlDebugDumpString (FILE *output,
Owen Taylor3473f882001-02-23 17:55:21 +000027 const xmlChar *str);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000028XMLPUBFUN void XMLCALL
29 xmlDebugDumpAttr (FILE *output,
Owen Taylor3473f882001-02-23 17:55:21 +000030 xmlAttrPtr attr,
31 int depth);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000032XMLPUBFUN void XMLCALL
33 xmlDebugDumpAttrList (FILE *output,
Owen Taylor3473f882001-02-23 17:55:21 +000034 xmlAttrPtr attr,
35 int depth);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000036XMLPUBFUN void XMLCALL
37 xmlDebugDumpOneNode (FILE *output,
Owen Taylor3473f882001-02-23 17:55:21 +000038 xmlNodePtr node,
39 int depth);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000040XMLPUBFUN void XMLCALL
41 xmlDebugDumpNode (FILE *output,
Owen Taylor3473f882001-02-23 17:55:21 +000042 xmlNodePtr node,
43 int depth);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000044XMLPUBFUN void XMLCALL
45 xmlDebugDumpNodeList (FILE *output,
Owen Taylor3473f882001-02-23 17:55:21 +000046 xmlNodePtr node,
47 int depth);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000048XMLPUBFUN void XMLCALL
49 xmlDebugDumpDocumentHead(FILE *output,
Owen Taylor3473f882001-02-23 17:55:21 +000050 xmlDocPtr doc);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000051XMLPUBFUN void XMLCALL
52 xmlDebugDumpDocument (FILE *output,
Owen Taylor3473f882001-02-23 17:55:21 +000053 xmlDocPtr doc);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000054XMLPUBFUN void XMLCALL
55 xmlDebugDumpDTD (FILE *output,
Daniel Veillard5e2dace2001-07-18 19:30:27 +000056 xmlDtdPtr dtd);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000057XMLPUBFUN void XMLCALL
58 xmlDebugDumpEntities (FILE *output,
Owen Taylor3473f882001-02-23 17:55:21 +000059 xmlDocPtr doc);
Owen Taylor3473f882001-02-23 17:55:21 +000060
Igor Zlatkovic76874e42003-08-25 09:05:12 +000061XMLPUBFUN void XMLCALL
62 xmlLsOneNode (FILE *output, xmlNodePtr node);
63XMLPUBFUN int XMLCALL
64 xmlLsCountNode (xmlNodePtr node);
Daniel Veillard78d12092001-10-11 09:12:24 +000065
Igor Zlatkovic76874e42003-08-25 09:05:12 +000066XMLPUBFUN const char * XMLCALL
67 xmlBoolToText (int boolval);
Daniel Veillard78d12092001-10-11 09:12:24 +000068
Owen Taylor3473f882001-02-23 17:55:21 +000069/****************************************************************
70 * *
71 * The XML shell related structures and functions *
72 * *
73 ****************************************************************/
74
75/**
76 * xmlShellReadlineFunc:
77 * @prompt: a string prompt
78 *
Daniel Veillard61f26172002-03-12 18:46:39 +000079 * This is a generic signature for the XML shell input function.
Owen Taylor3473f882001-02-23 17:55:21 +000080 *
Daniel Veillard61f26172002-03-12 18:46:39 +000081 * Returns a string which will be freed by the Shell.
Owen Taylor3473f882001-02-23 17:55:21 +000082 */
83typedef char * (* xmlShellReadlineFunc)(char *prompt);
84
Daniel Veillardbed7b052001-05-19 14:59:49 +000085/**
86 * xmlShellCtxt:
87 *
Daniel Veillard61f26172002-03-12 18:46:39 +000088 * A debugging shell context.
Owen Taylor3473f882001-02-23 17:55:21 +000089 * TODO: add the defined function tables.
90 */
91typedef struct _xmlShellCtxt xmlShellCtxt;
92typedef xmlShellCtxt *xmlShellCtxtPtr;
93struct _xmlShellCtxt {
94 char *filename;
95 xmlDocPtr doc;
96 xmlNodePtr node;
97 xmlXPathContextPtr pctxt;
98 int loaded;
99 FILE *output;
100 xmlShellReadlineFunc input;
101};
102
103/**
104 * xmlShellCmd:
105 * @ctxt: a shell context
106 * @arg: a string argument
107 * @node: a first node
108 * @node2: a second node
109 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000110 * This is a generic signature for the XML shell functions.
Owen Taylor3473f882001-02-23 17:55:21 +0000111 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000112 * Returns an int, negative returns indicating errors.
Owen Taylor3473f882001-02-23 17:55:21 +0000113 */
114typedef int (* xmlShellCmd) (xmlShellCtxtPtr ctxt,
115 char *arg,
116 xmlNodePtr node,
117 xmlNodePtr node2);
118
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000119XMLPUBFUN void XMLCALL
120 xmlShellPrintXPathError (int errorType,
Daniel Veillard963d2ae2002-01-20 22:08:18 +0000121 const char *arg);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000122XMLPUBFUN void XMLCALL
123 xmlShellPrintNode (xmlNodePtr node);
124XMLPUBFUN void XMLCALL
125 xmlShellPrintXPathResult(xmlXPathObjectPtr list);
126XMLPUBFUN int XMLCALL
127 xmlShellList (xmlShellCtxtPtr ctxt,
Daniel Veillard78d12092001-10-11 09:12:24 +0000128 char *arg,
129 xmlNodePtr node,
130 xmlNodePtr node2);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000131XMLPUBFUN int XMLCALL
132 xmlShellBase (xmlShellCtxtPtr ctxt,
Daniel Veillard78d12092001-10-11 09:12:24 +0000133 char *arg,
134 xmlNodePtr node,
135 xmlNodePtr node2);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000136XMLPUBFUN int XMLCALL
137 xmlShellDir (xmlShellCtxtPtr ctxt,
Daniel Veillard78d12092001-10-11 09:12:24 +0000138 char *arg,
139 xmlNodePtr node,
140 xmlNodePtr node2);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000141XMLPUBFUN int XMLCALL
142 xmlShellCat (xmlShellCtxtPtr ctxt,
Daniel Veillard78d12092001-10-11 09:12:24 +0000143 char *arg,
144 xmlNodePtr node,
145 xmlNodePtr node2);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000146XMLPUBFUN int XMLCALL
147 xmlShellLoad (xmlShellCtxtPtr ctxt,
Daniel Veillard78d12092001-10-11 09:12:24 +0000148 char *filename,
149 xmlNodePtr node,
150 xmlNodePtr node2);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000151XMLPUBFUN int XMLCALL
152 xmlShellWrite (xmlShellCtxtPtr ctxt,
Daniel Veillard78d12092001-10-11 09:12:24 +0000153 char *filename,
154 xmlNodePtr node,
155 xmlNodePtr node2);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000156XMLPUBFUN int XMLCALL
157 xmlShellSave (xmlShellCtxtPtr ctxt,
Daniel Veillard78d12092001-10-11 09:12:24 +0000158 char *filename,
159 xmlNodePtr node,
160 xmlNodePtr node2);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000161XMLPUBFUN int XMLCALL
162 xmlShellValidate (xmlShellCtxtPtr ctxt,
Daniel Veillard78d12092001-10-11 09:12:24 +0000163 char *dtd,
164 xmlNodePtr node,
165 xmlNodePtr node2);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000166XMLPUBFUN int XMLCALL
167 xmlShellDu (xmlShellCtxtPtr ctxt,
Daniel Veillard78d12092001-10-11 09:12:24 +0000168 char *arg,
169 xmlNodePtr tree,
170 xmlNodePtr node2);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000171XMLPUBFUN int XMLCALL
172 xmlShellPwd (xmlShellCtxtPtr ctxt,
Daniel Veillard78d12092001-10-11 09:12:24 +0000173 char *buffer,
174 xmlNodePtr node,
175 xmlNodePtr node2);
176
Owen Taylor3473f882001-02-23 17:55:21 +0000177/*
178 * The Shell interface.
179 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000180XMLPUBFUN void XMLCALL
181 xmlShell (xmlDocPtr doc,
Daniel Veillard78d12092001-10-11 09:12:24 +0000182 char *filename,
183 xmlShellReadlineFunc input,
184 FILE *output);
Owen Taylor3473f882001-02-23 17:55:21 +0000185
186#ifdef __cplusplus
187}
188#endif
189
190#endif /* LIBXML_DEBUG_ENABLED */
191#endif /* __DEBUG_XML__ */