00001
00010 #ifndef P6XPATHEXPRESSION_H__
00011 #define P6XPATHEXPRESSION_H__ 1
00012
00013 #include "p6err.h"
00014 #include "p6domxml.h"
00015 #include "p6xpathvariables.h"
00016 #include "p6xmlcompile.h"
00017 #include "p6datastream.h"
00018
00019 namespace P6R {
00020
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024
00034 typedef P6UINT32 P6XPATHFLAGS;
00035 const P6XPATHFLAGS P6XPATH_NOFLAGS = 0x00000000;
00036 const P6XPATHFLAGS P6XPATH_TRACEON = 0x00000001;
00037
00038
00047 interface p6IXpathExpression : public p6ICom
00048 {
00063 P6COMMETHOD initialize( P6XPATHFLAGS flags, p6IDataStream* pTraceResult ) = 0;
00064
00079 P6COMMETHOD setDefaultCollation( const P6CHAR* pCollate ) = 0;
00080
00099 P6COMMETHOD compileTemplateMatch( P6WCHAR* pPattern,
00100 P6UINT32 length,
00101 p6IXMLCompile* pContext
00102 ) = 0;
00103
00122 P6COMMETHOD compileExpression( const P6WCHAR* pExpression,
00123 P6UINT32 length,
00124 p6IXMLCompile* pContext
00125 ) = 0;
00126
00140 P6COMMETHOD setVariableHandler( p6IXpathVariables* pObject ) = 0;
00141
00161 P6COMMETHOD setRegexLimits( P6UINT32 maxBackStack, P6UINT32 maxBackTracks ) = 0;
00162
00181 P6COMMETHOD eval( p6IDOMXML* pXMLTree,
00182 p6IXMLNode* pXMLNode,
00183 p6IDOMNodeset* pNodeSet,
00184 P6XPATH_RESULT* pResult
00185 ) = 0;
00186
00213 P6COMMETHOD evalBoolean( p6IDOMXML* pXMLTree,
00214 p6IXMLNode* pXMLNode,
00215 p6IDOMNodeset* pNodeSet,
00216 P6BOOL* pbResult
00217 ) = 0;
00218 };
00219
00220
00221 #define IF_p6IXpathExpression {0x509a1eca,0x1c99,0x46b3,{0x8f,0xd4,0xa5,0xf,0x21,0xf7,0x26,0x7d}}
00222
00223
00224 #define COMP_p6XpathExpression {0x88ee96c5,0xef80,0x42a8,{0xa5,0x2c,0x87,0x87,0x6d,0x2,0xfc,0x5b}}
00225
00226 #ifdef __cplusplus
00227 }
00228 #endif
00229
00230 }
00231
00232
00233 #endif
00234
00235
00236
00237
00238
00239
00240
00241