218 lines
5.0 KiB
C
218 lines
5.0 KiB
C
|
/*
|
||
|
* Summary: Tree debugging APIs
|
||
|
* Description: Interfaces to a set of routines used for debugging the tree
|
||
|
* produced by the XML parser.
|
||
|
*
|
||
|
* Copy: See Copyright for the status of this software.
|
||
|
*
|
||
|
* Author: Daniel Veillard
|
||
|
*/
|
||
|
|
||
|
#ifndef __DEBUG_XML__
|
||
|
#define __DEBUG_XML__
|
||
|
#include <stdio.h>
|
||
|
#include <libxml/xmlversion.h>
|
||
|
#include <libxml/tree.h>
|
||
|
|
||
|
#ifdef LIBXML_DEBUG_ENABLED
|
||
|
|
||
|
#include <libxml/xpath.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* The standard Dump routines.
|
||
|
*/
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlDebugDumpString (FILE *output,
|
||
|
const xmlChar *str);
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlDebugDumpAttr (FILE *output,
|
||
|
xmlAttrPtr attr,
|
||
|
int depth);
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlDebugDumpAttrList (FILE *output,
|
||
|
xmlAttrPtr attr,
|
||
|
int depth);
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlDebugDumpOneNode (FILE *output,
|
||
|
xmlNodePtr node,
|
||
|
int depth);
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlDebugDumpNode (FILE *output,
|
||
|
xmlNodePtr node,
|
||
|
int depth);
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlDebugDumpNodeList (FILE *output,
|
||
|
xmlNodePtr node,
|
||
|
int depth);
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlDebugDumpDocumentHead(FILE *output,
|
||
|
xmlDocPtr doc);
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlDebugDumpDocument (FILE *output,
|
||
|
xmlDocPtr doc);
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlDebugDumpDTD (FILE *output,
|
||
|
xmlDtdPtr dtd);
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlDebugDumpEntities (FILE *output,
|
||
|
xmlDocPtr doc);
|
||
|
|
||
|
/****************************************************************
|
||
|
* *
|
||
|
* Checking routines *
|
||
|
* *
|
||
|
****************************************************************/
|
||
|
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlDebugCheckDocument (FILE * output,
|
||
|
xmlDocPtr doc);
|
||
|
|
||
|
/****************************************************************
|
||
|
* *
|
||
|
* XML shell helpers *
|
||
|
* *
|
||
|
****************************************************************/
|
||
|
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlLsOneNode (FILE *output, xmlNodePtr node);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlLsCountNode (xmlNodePtr node);
|
||
|
|
||
|
XMLPUBFUN const char * XMLCALL
|
||
|
xmlBoolToText (int boolval);
|
||
|
|
||
|
/****************************************************************
|
||
|
* *
|
||
|
* The XML shell related structures and functions *
|
||
|
* *
|
||
|
****************************************************************/
|
||
|
|
||
|
#ifdef LIBXML_XPATH_ENABLED
|
||
|
/**
|
||
|
* xmlShellReadlineFunc:
|
||
|
* @prompt: a string prompt
|
||
|
*
|
||
|
* This is a generic signature for the XML shell input function.
|
||
|
*
|
||
|
* Returns a string which will be freed by the Shell.
|
||
|
*/
|
||
|
typedef char * (* xmlShellReadlineFunc)(char *prompt);
|
||
|
|
||
|
/**
|
||
|
* xmlShellCtxt:
|
||
|
*
|
||
|
* A debugging shell context.
|
||
|
* TODO: add the defined function tables.
|
||
|
*/
|
||
|
typedef struct _xmlShellCtxt xmlShellCtxt;
|
||
|
typedef xmlShellCtxt *xmlShellCtxtPtr;
|
||
|
struct _xmlShellCtxt {
|
||
|
char *filename;
|
||
|
xmlDocPtr doc;
|
||
|
xmlNodePtr node;
|
||
|
xmlXPathContextPtr pctxt;
|
||
|
int loaded;
|
||
|
FILE *output;
|
||
|
xmlShellReadlineFunc input;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* xmlShellCmd:
|
||
|
* @ctxt: a shell context
|
||
|
* @arg: a string argument
|
||
|
* @node: a first node
|
||
|
* @node2: a second node
|
||
|
*
|
||
|
* This is a generic signature for the XML shell functions.
|
||
|
*
|
||
|
* Returns an int, negative returns indicating errors.
|
||
|
*/
|
||
|
typedef int (* xmlShellCmd) (xmlShellCtxtPtr ctxt,
|
||
|
char *arg,
|
||
|
xmlNodePtr node,
|
||
|
xmlNodePtr node2);
|
||
|
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlShellPrintXPathError (int errorType,
|
||
|
const char *arg);
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlShellPrintXPathResult(xmlXPathObjectPtr list);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlShellList (xmlShellCtxtPtr ctxt,
|
||
|
char *arg,
|
||
|
xmlNodePtr node,
|
||
|
xmlNodePtr node2);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlShellBase (xmlShellCtxtPtr ctxt,
|
||
|
char *arg,
|
||
|
xmlNodePtr node,
|
||
|
xmlNodePtr node2);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlShellDir (xmlShellCtxtPtr ctxt,
|
||
|
char *arg,
|
||
|
xmlNodePtr node,
|
||
|
xmlNodePtr node2);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlShellLoad (xmlShellCtxtPtr ctxt,
|
||
|
char *filename,
|
||
|
xmlNodePtr node,
|
||
|
xmlNodePtr node2);
|
||
|
#ifdef LIBXML_OUTPUT_ENABLED
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlShellPrintNode (xmlNodePtr node);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlShellCat (xmlShellCtxtPtr ctxt,
|
||
|
char *arg,
|
||
|
xmlNodePtr node,
|
||
|
xmlNodePtr node2);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlShellWrite (xmlShellCtxtPtr ctxt,
|
||
|
char *filename,
|
||
|
xmlNodePtr node,
|
||
|
xmlNodePtr node2);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlShellSave (xmlShellCtxtPtr ctxt,
|
||
|
char *filename,
|
||
|
xmlNodePtr node,
|
||
|
xmlNodePtr node2);
|
||
|
#endif /* LIBXML_OUTPUT_ENABLED */
|
||
|
#ifdef LIBXML_VALID_ENABLED
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlShellValidate (xmlShellCtxtPtr ctxt,
|
||
|
char *dtd,
|
||
|
xmlNodePtr node,
|
||
|
xmlNodePtr node2);
|
||
|
#endif /* LIBXML_VALID_ENABLED */
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlShellDu (xmlShellCtxtPtr ctxt,
|
||
|
char *arg,
|
||
|
xmlNodePtr tree,
|
||
|
xmlNodePtr node2);
|
||
|
XMLPUBFUN int XMLCALL
|
||
|
xmlShellPwd (xmlShellCtxtPtr ctxt,
|
||
|
char *buffer,
|
||
|
xmlNodePtr node,
|
||
|
xmlNodePtr node2);
|
||
|
|
||
|
/*
|
||
|
* The Shell interface.
|
||
|
*/
|
||
|
XMLPUBFUN void XMLCALL
|
||
|
xmlShell (xmlDocPtr doc,
|
||
|
char *filename,
|
||
|
xmlShellReadlineFunc input,
|
||
|
FILE *output);
|
||
|
|
||
|
#endif /* LIBXML_XPATH_ENABLED */
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* LIBXML_DEBUG_ENABLED */
|
||
|
#endif /* __DEBUG_XML__ */
|