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__ */ 218