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 22extern "C" { 23#endif 24 25/* 26 * The standard Dump routines. 27 */ 28XMLPUBFUN void XMLCALL 29 xmlDebugDumpString (FILE *output, 30 const xmlChar *str); 31XMLPUBFUN void XMLCALL 32 xmlDebugDumpAttr (FILE *output, 33 xmlAttrPtr attr, 34 int depth); 35XMLPUBFUN void XMLCALL 36 xmlDebugDumpAttrList (FILE *output, 37 xmlAttrPtr attr, 38 int depth); 39XMLPUBFUN void XMLCALL 40 xmlDebugDumpOneNode (FILE *output, 41 xmlNodePtr node, 42 int depth); 43XMLPUBFUN void XMLCALL 44 xmlDebugDumpNode (FILE *output, 45 xmlNodePtr node, 46 int depth); 47XMLPUBFUN void XMLCALL 48 xmlDebugDumpNodeList (FILE *output, 49 xmlNodePtr node, 50 int depth); 51XMLPUBFUN void XMLCALL 52 xmlDebugDumpDocumentHead(FILE *output, 53 xmlDocPtr doc); 54XMLPUBFUN void XMLCALL 55 xmlDebugDumpDocument (FILE *output, 56 xmlDocPtr doc); 57XMLPUBFUN void XMLCALL 58 xmlDebugDumpDTD (FILE *output, 59 xmlDtdPtr dtd); 60XMLPUBFUN void XMLCALL 61 xmlDebugDumpEntities (FILE *output, 62 xmlDocPtr doc); 63 64/**************************************************************** 65 * * 66 * Checking routines * 67 * * 68 ****************************************************************/ 69 70XMLPUBFUN int XMLCALL 71 xmlDebugCheckDocument (FILE * output, 72 xmlDocPtr doc); 73 74/**************************************************************** 75 * * 76 * XML shell helpers * 77 * * 78 ****************************************************************/ 79 80XMLPUBFUN void XMLCALL 81 xmlLsOneNode (FILE *output, xmlNodePtr node); 82XMLPUBFUN int XMLCALL 83 xmlLsCountNode (xmlNodePtr node); 84 85XMLPUBFUN 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 */ 103typedef char * (* xmlShellReadlineFunc)(char *prompt); 104 105/** 106 * xmlShellCtxt: 107 * 108 * A debugging shell context. 109 * TODO: add the defined function tables. 110 */ 111typedef struct _xmlShellCtxt xmlShellCtxt; 112typedef xmlShellCtxt *xmlShellCtxtPtr; 113struct _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 */ 134typedef int (* xmlShellCmd) (xmlShellCtxtPtr ctxt, 135 char *arg, 136 xmlNodePtr node, 137 xmlNodePtr node2); 138 139XMLPUBFUN void XMLCALL 140 xmlShellPrintXPathError (int errorType, 141 const char *arg); 142XMLPUBFUN void XMLCALL 143 xmlShellPrintXPathResult(xmlXPathObjectPtr list); 144XMLPUBFUN int XMLCALL 145 xmlShellList (xmlShellCtxtPtr ctxt, 146 char *arg, 147 xmlNodePtr node, 148 xmlNodePtr node2); 149XMLPUBFUN int XMLCALL 150 xmlShellBase (xmlShellCtxtPtr ctxt, 151 char *arg, 152 xmlNodePtr node, 153 xmlNodePtr node2); 154XMLPUBFUN int XMLCALL 155 xmlShellDir (xmlShellCtxtPtr ctxt, 156 char *arg, 157 xmlNodePtr node, 158 xmlNodePtr node2); 159XMLPUBFUN int XMLCALL 160 xmlShellLoad (xmlShellCtxtPtr ctxt, 161 char *filename, 162 xmlNodePtr node, 163 xmlNodePtr node2); 164#ifdef LIBXML_OUTPUT_ENABLED 165XMLPUBFUN void XMLCALL 166 xmlShellPrintNode (xmlNodePtr node); 167XMLPUBFUN int XMLCALL 168 xmlShellCat (xmlShellCtxtPtr ctxt, 169 char *arg, 170 xmlNodePtr node, 171 xmlNodePtr node2); 172XMLPUBFUN int XMLCALL 173 xmlShellWrite (xmlShellCtxtPtr ctxt, 174 char *filename, 175 xmlNodePtr node, 176 xmlNodePtr node2); 177XMLPUBFUN 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 184XMLPUBFUN int XMLCALL 185 xmlShellValidate (xmlShellCtxtPtr ctxt, 186 char *dtd, 187 xmlNodePtr node, 188 xmlNodePtr node2); 189#endif /* LIBXML_VALID_ENABLED */ 190XMLPUBFUN int XMLCALL 191 xmlShellDu (xmlShellCtxtPtr ctxt, 192 char *arg, 193 xmlNodePtr tree, 194 xmlNodePtr node2); 195XMLPUBFUN int XMLCALL 196 xmlShellPwd (xmlShellCtxtPtr ctxt, 197 char *buffer, 198 xmlNodePtr node, 199 xmlNodePtr node2); 200 201/* 202 * The Shell interface. 203 */ 204XMLPUBFUN 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