File: //opt/cpanel/ea-libxml2/include/libxml2/libxml/pattern.h
/**
* @file
*
* @brief pattern expression handling
*
* allows to compile and test pattern expressions for nodes
* either in a tree or based on a parser state.
*
* @copyright See Copyright for the status of this software.
*
* @author Daniel Veillard
*/
#ifndef __XML_PATTERN_H__
#define __XML_PATTERN_H__
#include <libxml/xmlversion.h>
#include <libxml/tree.h>
#include <libxml/dict.h>
#ifdef LIBXML_PATTERN_ENABLED
#ifdef __cplusplus
extern "C" {
#endif
/**
* A compiled (XPath based) pattern to select nodes
*/
typedef struct _xmlPattern xmlPattern;
typedef xmlPattern *xmlPatternPtr;
/**
* Internal type. This is the set of options affecting the behaviour
* of pattern matching with this module.
*/
typedef enum {
XML_PATTERN_DEFAULT = 0, /* simple pattern match */
XML_PATTERN_XPATH = 1<<0, /* standard XPath pattern */
XML_PATTERN_XSSEL = 1<<1, /* XPath subset for schema selector */
XML_PATTERN_XSFIELD = 1<<2 /* XPath subset for schema field */
} xmlPatternFlags;
XMLPUBFUN void
xmlFreePattern (xmlPattern *comp);
XMLPUBFUN void
xmlFreePatternList (xmlPattern *comp);
XMLPUBFUN xmlPattern *
xmlPatterncompile (const xmlChar *pattern,
xmlDict *dict,
int flags,
const xmlChar **namespaces);
XMLPUBFUN int
xmlPatternCompileSafe (const xmlChar *pattern,
xmlDict *dict,
int flags,
const xmlChar **namespaces,
xmlPattern **patternOut);
XMLPUBFUN int
xmlPatternMatch (xmlPattern *comp,
xmlNode *node);
/** State object for streaming interface */
typedef struct _xmlStreamCtxt xmlStreamCtxt;
typedef xmlStreamCtxt *xmlStreamCtxtPtr;
XMLPUBFUN int
xmlPatternStreamable (xmlPattern *comp);
XMLPUBFUN int
xmlPatternMaxDepth (xmlPattern *comp);
XMLPUBFUN int
xmlPatternMinDepth (xmlPattern *comp);
XMLPUBFUN int
xmlPatternFromRoot (xmlPattern *comp);
XMLPUBFUN xmlStreamCtxt *
xmlPatternGetStreamCtxt (xmlPattern *comp);
XMLPUBFUN void
xmlFreeStreamCtxt (xmlStreamCtxt *stream);
XMLPUBFUN int
xmlStreamPushNode (xmlStreamCtxt *stream,
const xmlChar *name,
const xmlChar *ns,
int nodeType);
XMLPUBFUN int
xmlStreamPush (xmlStreamCtxt *stream,
const xmlChar *name,
const xmlChar *ns);
XMLPUBFUN int
xmlStreamPushAttr (xmlStreamCtxt *stream,
const xmlChar *name,
const xmlChar *ns);
XMLPUBFUN int
xmlStreamPop (xmlStreamCtxt *stream);
XMLPUBFUN int
xmlStreamWantsAnyNode (xmlStreamCtxt *stream);
#ifdef __cplusplus
}
#endif
#endif /* LIBXML_PATTERN_ENABLED */
#endif /* __XML_PATTERN_H__ */