1/*
2 * Summary: interface for the pattern matching used in template matches.
3 * Description: the implementation of the lookup of the right template
4 *              for a given node must be really fast in order to keep
5 *              decent performances.
6 *
7 * Copy: See Copyright for the status of this software.
8 *
9 * Author: Daniel Veillard
10 */
11
12#ifndef __XML_XSLT_PATTERN_H__
13#define __XML_XSLT_PATTERN_H__
14
15#include "xsltInternals.h"
16#include "xsltexports.h"
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22/**
23 * xsltCompMatch:
24 *
25 * Data structure used for the implementation of patterns.
26 * It is kept private (in pattern.c).
27 */
28typedef struct _xsltCompMatch xsltCompMatch;
29typedef xsltCompMatch *xsltCompMatchPtr;
30
31/*
32 * Pattern related interfaces.
33 */
34
35XSLTPUBFUN xsltCompMatchPtr XSLTCALL
36		xsltCompilePattern	(const xmlChar *pattern,
37					 xmlDocPtr doc,
38					 xmlNodePtr node,
39					 xsltStylesheetPtr style,
40					 xsltTransformContextPtr runtime);
41XSLTPUBFUN void XSLTCALL
42		xsltFreeCompMatchList	(xsltCompMatchPtr comp);
43XSLTPUBFUN int XSLTCALL
44		xsltTestCompMatchList	(xsltTransformContextPtr ctxt,
45					 xmlNodePtr node,
46					 xsltCompMatchPtr comp);
47XSLTPUBFUN void XSLTCALL
48		xsltNormalizeCompSteps	(void *payload,
49					 void *data,
50					 const xmlChar *name);
51
52/*
53 * Template related interfaces.
54 */
55XSLTPUBFUN int XSLTCALL
56		xsltAddTemplate		(xsltStylesheetPtr style,
57					 xsltTemplatePtr cur,
58					 const xmlChar *mode,
59					 const xmlChar *modeURI);
60XSLTPUBFUN xsltTemplatePtr XSLTCALL
61		xsltGetTemplate		(xsltTransformContextPtr ctxt,
62					 xmlNodePtr node,
63					 xsltStylesheetPtr style);
64XSLTPUBFUN void XSLTCALL
65		xsltFreeTemplateHashes	(xsltStylesheetPtr style);
66XSLTPUBFUN void XSLTCALL
67		xsltCleanupTemplates	(xsltStylesheetPtr style);
68
69#if 0
70int		xsltMatchPattern	(xsltTransformContextPtr ctxt,
71					 xmlNodePtr node,
72					 const xmlChar *pattern,
73					 xmlDocPtr ctxtdoc,
74					 xmlNodePtr ctxtnode);
75#endif
76#ifdef __cplusplus
77}
78#endif
79
80#endif /* __XML_XSLT_PATTERN_H__ */
81
82