1 /* libxml2 - Library for parsing XML documents 2 * Copyright (C) 2006-2019 Free Software Foundation, Inc. 3 * 4 * This file is not part of the GNU gettext program, but is used with 5 * GNU gettext. 6 * 7 * The original copyright notice is as follows: 8 */ 9 10 /* 11 * Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. 12 * 13 * Permission is hereby granted, free of charge, to any person obtaining a copy 14 * of this software and associated documentation files (the "Software"), to deal 15 * in the Software without restriction, including without limitation the rights 16 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 17 * copies of the Software, and to permit persons to whom the Software is fur- 18 * nished to do so, subject to the following conditions: 19 * 20 * The above copyright notice and this permission notice shall be included in 21 * all copies or substantial portions of the Software. 22 * 23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- 25 * NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 26 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 28 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 29 * THE SOFTWARE. 30 * 31 * Author: Daniel Veillard 32 */ 33 34 /* 35 * Summary: Tree debugging APIs 36 * Description: Interfaces to a set of routines used for debugging the tree 37 * produced by the XML parser. 38 */ 39 40 #ifndef __DEBUG_XML__ 41 #define __DEBUG_XML__ 42 #include <stdio.h> 43 #include <libxml/xmlversion.h> 44 #include <libxml/tree.h> 45 46 #ifdef LIBXML_DEBUG_ENABLED 47 48 #include <libxml/xpath.h> 49 50 #ifdef __cplusplus 51 extern "C" { 52 #endif 53 54 /* 55 * The standard Dump routines. 56 */ 57 XMLPUBFUN void XMLCALL 58 xmlDebugDumpString (FILE *output, 59 const xmlChar *str); 60 XMLPUBFUN void XMLCALL 61 xmlDebugDumpAttr (FILE *output, 62 xmlAttrPtr attr, 63 int depth); 64 XMLPUBFUN void XMLCALL 65 xmlDebugDumpAttrList (FILE *output, 66 xmlAttrPtr attr, 67 int depth); 68 XMLPUBFUN void XMLCALL 69 xmlDebugDumpOneNode (FILE *output, 70 xmlNodePtr node, 71 int depth); 72 XMLPUBFUN void XMLCALL 73 xmlDebugDumpNode (FILE *output, 74 xmlNodePtr node, 75 int depth); 76 XMLPUBFUN void XMLCALL 77 xmlDebugDumpNodeList (FILE *output, 78 xmlNodePtr node, 79 int depth); 80 XMLPUBFUN void XMLCALL 81 xmlDebugDumpDocumentHead(FILE *output, 82 xmlDocPtr doc); 83 XMLPUBFUN void XMLCALL 84 xmlDebugDumpDocument (FILE *output, 85 xmlDocPtr doc); 86 XMLPUBFUN void XMLCALL 87 xmlDebugDumpDTD (FILE *output, 88 xmlDtdPtr dtd); 89 XMLPUBFUN void XMLCALL 90 xmlDebugDumpEntities (FILE *output, 91 xmlDocPtr doc); 92 93 /**************************************************************** 94 * * 95 * Checking routines * 96 * * 97 ****************************************************************/ 98 99 XMLPUBFUN int XMLCALL 100 xmlDebugCheckDocument (FILE * output, 101 xmlDocPtr doc); 102 103 /**************************************************************** 104 * * 105 * XML shell helpers * 106 * * 107 ****************************************************************/ 108 109 XMLPUBFUN void XMLCALL 110 xmlLsOneNode (FILE *output, xmlNodePtr node); 111 XMLPUBFUN int XMLCALL 112 xmlLsCountNode (xmlNodePtr node); 113 114 XMLPUBFUN const char * XMLCALL 115 xmlBoolToText (int boolval); 116 117 /**************************************************************** 118 * * 119 * The XML shell related structures and functions * 120 * * 121 ****************************************************************/ 122 123 #ifdef LIBXML_XPATH_ENABLED 124 /** 125 * xmlShellReadlineFunc: 126 * @prompt: a string prompt 127 * 128 * This is a generic signature for the XML shell input function. 129 * 130 * Returns a string which will be freed by the Shell. 131 */ 132 typedef char * (* xmlShellReadlineFunc)(char *prompt); 133 134 /** 135 * xmlShellCtxt: 136 * 137 * A debugging shell context. 138 * TODO: add the defined function tables. 139 */ 140 typedef struct _xmlShellCtxt xmlShellCtxt; 141 typedef xmlShellCtxt *xmlShellCtxtPtr; 142 struct _xmlShellCtxt { 143 char *filename; 144 xmlDocPtr doc; 145 xmlNodePtr node; 146 xmlXPathContextPtr pctxt; 147 int loaded; 148 FILE *output; 149 xmlShellReadlineFunc input; 150 }; 151 152 /** 153 * xmlShellCmd: 154 * @ctxt: a shell context 155 * @arg: a string argument 156 * @node: a first node 157 * @node2: a second node 158 * 159 * This is a generic signature for the XML shell functions. 160 * 161 * Returns an int, negative returns indicating errors. 162 */ 163 typedef int (* xmlShellCmd) (xmlShellCtxtPtr ctxt, 164 char *arg, 165 xmlNodePtr node, 166 xmlNodePtr node2); 167 168 XMLPUBFUN void XMLCALL 169 xmlShellPrintXPathError (int errorType, 170 const char *arg); 171 XMLPUBFUN void XMLCALL 172 xmlShellPrintXPathResult(xmlXPathObjectPtr list); 173 XMLPUBFUN int XMLCALL 174 xmlShellList (xmlShellCtxtPtr ctxt, 175 char *arg, 176 xmlNodePtr node, 177 xmlNodePtr node2); 178 XMLPUBFUN int XMLCALL 179 xmlShellBase (xmlShellCtxtPtr ctxt, 180 char *arg, 181 xmlNodePtr node, 182 xmlNodePtr node2); 183 XMLPUBFUN int XMLCALL 184 xmlShellDir (xmlShellCtxtPtr ctxt, 185 char *arg, 186 xmlNodePtr node, 187 xmlNodePtr node2); 188 XMLPUBFUN int XMLCALL 189 xmlShellLoad (xmlShellCtxtPtr ctxt, 190 char *filename, 191 xmlNodePtr node, 192 xmlNodePtr node2); 193 #ifdef LIBXML_OUTPUT_ENABLED 194 XMLPUBFUN void XMLCALL 195 xmlShellPrintNode (xmlNodePtr node); 196 XMLPUBFUN int XMLCALL 197 xmlShellCat (xmlShellCtxtPtr ctxt, 198 char *arg, 199 xmlNodePtr node, 200 xmlNodePtr node2); 201 XMLPUBFUN int XMLCALL 202 xmlShellWrite (xmlShellCtxtPtr ctxt, 203 char *filename, 204 xmlNodePtr node, 205 xmlNodePtr node2); 206 XMLPUBFUN int XMLCALL 207 xmlShellSave (xmlShellCtxtPtr ctxt, 208 char *filename, 209 xmlNodePtr node, 210 xmlNodePtr node2); 211 #endif /* LIBXML_OUTPUT_ENABLED */ 212 #ifdef LIBXML_VALID_ENABLED 213 XMLPUBFUN int XMLCALL 214 xmlShellValidate (xmlShellCtxtPtr ctxt, 215 char *dtd, 216 xmlNodePtr node, 217 xmlNodePtr node2); 218 #endif /* LIBXML_VALID_ENABLED */ 219 XMLPUBFUN int XMLCALL 220 xmlShellDu (xmlShellCtxtPtr ctxt, 221 char *arg, 222 xmlNodePtr tree, 223 xmlNodePtr node2); 224 XMLPUBFUN int XMLCALL 225 xmlShellPwd (xmlShellCtxtPtr ctxt, 226 char *buffer, 227 xmlNodePtr node, 228 xmlNodePtr node2); 229 230 /* 231 * The Shell interface. 232 */ 233 XMLPUBFUN void XMLCALL 234 xmlShell (xmlDocPtr doc, 235 char *filename, 236 xmlShellReadlineFunc input, 237 FILE *output); 238 239 #endif /* LIBXML_XPATH_ENABLED */ 240 241 #ifdef __cplusplus 242 } 243 #endif 244 245 #endif /* LIBXML_DEBUG_ENABLED */ 246 #endif /* __DEBUG_XML__ */ 247