* Summary: regular expressions handling * Description: basic API for libxml regular expressions handling used * for XML Schemas and validation. * * Copy: See Copyright for the status of this software. * * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. /if not defined(XML_REGEXP_H__) /define XML_REGEXP_H__ /include "libxmlrpg/xmlversion" /if defined(LIBXML_REGEXP_ENABLED) /include "libxmlrpg/xmlTypesC" * xmlRegexpPtr: * * A libxml regular expression, they can actually be far more complex * thank the POSIX regex expressions.
d xmlRegexpPtr s * based(######typedef######)
* xmlRegExecCtxtPtr: * * A libxml progressive regular expression evaluation context
d xmlRegExecCtxtPtr… d s * based(######typedef######)
/include "libxmlrpg/tree" /include "libxmlrpg/dict" * The POSIX like API
d xmlRegexpCompile… d pr extproc('xmlRegexpCompile') d like(xmlRegexpPtr) d regexp * value options(*string) const xmlChar *
d xmlRegFreeRegexp… d pr extproc('xmlRegFreeRegexp') d regexp value like(xmlRegexpPtr)
d xmlRegexpExec pr extproc('xmlRegexpExec') d like(xmlCint) d comp value like(xmlRegexpPtr) d value * value options(*string) const xmlChar *
d xmlRegexpPrint pr extproc('xmlRegexpPrint') d output * value FILE * d regexp value like(xmlRegexpPtr)
d xmlRegexpIsDeterminist… d pr extproc('xmlRegexpIsDeterminist') d like(xmlCint) d comp value like(xmlRegexpPtr)
* xmlRegExecCallbacks: * @exec: the regular expression context * @token: the current token string * @transdata: transition data * @inputdata: input data * * Callback function when doing a transition in the automata
d xmlRegExecCallbacks… d s * based(######typedef######) d procptr
* The progressive API
d xmlRegNewExecCtxt… d pr extproc('xmlRegNewExecCtxt') d like(xmlRegExecCtxtPtr) d comp value like(xmlRegexpPtr) d callback value like(xmlRegExecCallbacks) d data * value void *
d xmlRegFreeExecCtxt… d pr extproc('xmlRegFreeExecCtxt') d exec value like(xmlRegExecCtxtPtr)
d xmlRegExecPushString… d pr extproc('xmlRegExecPushString') d like(xmlCint) d exec value like(xmlRegExecCtxtPtr) d value * value options(*string) const xmlChar * d data * value void *
d xmlRegExecPushString2… d pr extproc('xmlRegExecPushString2') d like(xmlCint) d exec value like(xmlRegExecCtxtPtr) d value * value options(*string) const xmlChar * d value2 * value options(*string) const xmlChar * d data * value void *
d xmlRegExecNextValues… d pr extproc('xmlRegExecNextValues') d like(xmlCint) d exec value like(xmlRegExecCtxtPtr) d nbval like(xmlCint) d nbneg like(xmlCint) d values * xmlChar * (*) d terminal like(xmlCint)
d xmlRegExecErrInfo… d pr extproc('xmlRegExecErrInfo') d like(xmlCint) d exec value like(xmlRegExecCtxtPtr) d string * const xmlChar * (*) d nbval like(xmlCint) d nbneg like(xmlCint) d values * xmlChar * (*) d terminal like(xmlCint)
/if defined(LIBXML_EXPR_ENABLED) * Formal regular expression handling * Its goal is to do some formal work on content models * expressions are used within a context
d xmlExpCtxtPtr s * based(######typedef######)
d xmlExpFreeCtxt pr extproc('xmlExpFreeCtxt') d ctxt value like(xmlExpCtxtPtr)
d xmlExpNewCtxt pr extproc('xmlExpNewCtxt') d like(xmlExpCtxtPtr) d maxNodes value like(xmlCint) d dict value like(xmlDictPtr)
d xmlExpCtxtNbNodes… d pr extproc('xmlExpCtxtNbNodes') d like(xmlCint) d ctxt value like(xmlExpCtxtPtr)
d xmlExpCtxtNbCons… d pr extproc('xmlExpCtxtNbCons') d like(xmlCint) d ctxt value like(xmlExpCtxtPtr)
* Expressions are trees but the tree is opaque
d xmlExpNodePtr s * based(######typedef######)
d xmlExpNodeType s based(######typedef######) d like(xmlCenum) d XML_EXP_EMPTY c 0 d XML_EXP_FORBID… d c 1 d XML_EXP_ATOM c 2 d XML_EXP_SEQ c 3 d XML_EXP_OR c 4 d XML_EXP_COUNT c 5
* 2 core expressions shared by all for the empty language set * and for the set with just the empty token
d forbiddenExp s import('forbiddenExp') d like(xmlExpNodePtr)
d emptyExp s import('emptyExp') d like(xmlExpNodePtr)
* Expressions are reference counted internally
d xmlExpFree pr extproc('xmlExpFree') d expr value like(xmlExpNodePtr)
d xmlExpRef pr extproc('xmlExpRef') d expr value like(xmlExpNodePtr)
* constructors can be either manual or from a string
d xmlExpParse pr extproc('xmlExpParse') d like(xmlExpNodePtr) d ctxt value like(xmlExpCtxtPtr) d expr * value options(*string) const char *
d xmlExpNewAtom pr extproc('xmlExpNewAtom') d like(xmlExpNodePtr) d ctxt value like(xmlExpCtxtPtr) d name * value options(*string) const xmlChar * d len value like(xmlCint)
d xmlExpNewOr pr extproc('xmlExpNewOr') d like(xmlExpNodePtr) d ctxt value like(xmlExpCtxtPtr) d left value like(xmlExpNodePtr) d right value like(xmlExpNodePtr)
d xmlExpNewSeq pr extproc('xmlExpNewSeq') d like(xmlExpNodePtr) d ctxt value like(xmlExpCtxtPtr) d left value like(xmlExpNodePtr) d right value like(xmlExpNodePtr)
d xmlExpNewRange pr extproc('xmlExpNewRange') d like(xmlExpNodePtr) d ctxt value like(xmlExpCtxtPtr) d subset value like(xmlExpNodePtr) d min value like(xmlCint) d max value like(xmlCint)
* The really interesting APIs
d xmlExpIsNillable… d pr extproc('xmlExpIsNillable') d like(xmlCint) d expr value like(xmlExpNodePtr)
d xmlExpMaxToken pr extproc('xmlExpMaxToken') d like(xmlCint) d expr value like(xmlExpNodePtr)
d xmlExpGetLanguage… d pr extproc('xmlExpGetLanguage') d like(xmlCint) d ctxt value like(xmlExpCtxtPtr) d expr value like(xmlExpNodePtr) d langList * const xmlChar *(*) d len value like(xmlCint)
d xmlExpGetStart pr extproc('xmlExpGetStart') d like(xmlCint) d ctxt value like(xmlExpCtxtPtr) d expr value like(xmlExpNodePtr) d tokList * const xmlChar *(*) d len value like(xmlCint)
d xmlExpStringDerive… d pr extproc('xmlExpStringDerive') d like(xmlExpNodePtr) d ctxt value like(xmlExpCtxtPtr) d expr value like(xmlExpNodePtr) d str * value options(*string) const xmlChar * d len value like(xmlCint)
d xmlExpExpDerive… d pr extproc('xmlExpExpDerive') d like(xmlExpNodePtr) d ctxt value like(xmlExpCtxtPtr) d expr value like(xmlExpNodePtr) d sub value like(xmlExpNodePtr)
d xmlExpSubsume pr extproc('xmlExpSubsume') d like(xmlCint) d ctxt value like(xmlExpCtxtPtr) d expr value like(xmlExpNodePtr) d sub value like(xmlExpNodePtr)
d xmlExpDump pr extproc('xmlExpDump') d buf value like(xmlBufferPtr) d expr value like(xmlExpNodePtr)
/endif LIBXML_EXPR_ENABLED /endif LIBXML_REGEXP_ENABLD /endif XML_REGEXP_H__