summaryrefslogtreecommitdiff
path: root/win32/sablot/include/sxpath.h
diff options
context:
space:
mode:
Diffstat (limited to 'win32/sablot/include/sxpath.h')
-rw-r--r--win32/sablot/include/sxpath.h400
1 files changed, 400 insertions, 0 deletions
diff --git a/win32/sablot/include/sxpath.h b/win32/sablot/include/sxpath.h
index d6bd448..56888b4 100644
--- a/win32/sablot/include/sxpath.h
+++ b/win32/sablot/include/sxpath.h
@@ -1,264 +1,664 @@
/*
+
* The contents of this file are subject to the Mozilla Public
+
* License Version 1.1 (the "License"); you may not use this file
+
* except in compliance with the License. You may obtain a copy of
+
* the License at http://www.mozilla.org/MPL/
+
*
+
* Software distributed under the License is distributed on an "AS
+
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+
* implied. See the License for the specific language governing
+
* rights and limitations under the License.
+
*
+
* The Original Code is the Sablotron XSLT Processor.
+
*
+
* The Initial Developer of the Original Code is Ginger Alliance Ltd.
+
* Portions created by Ginger Alliance are Copyright (C) 2000-2002
+
* Ginger Alliance Ltd. All Rights Reserved.
+
*
+
* Contributor(s):
+
*
+
* Alternatively, the contents of this file may be used under the
+
* terms of the GNU General Public License Version 2 or later (the
+
* "GPL"), in which case the provisions of the GPL are applicable
+
* instead of those above. If you wish to allow use of your
+
* version of this file only under the terms of the GPL and not to
+
* allow others to use your version of this file under the MPL,
+
* indicate your decision by deleting the provisions above and
+
* replace them with the notice and other provisions required by
+
* the GPL. If you do not delete the provisions above, a recipient
+
* may use your version of this file under either the MPL or the
+
* GPL.
+
*/
+
+
#ifndef SXPathHIncl
+
#define SXPathHIncl
+
+
/* basic types needed in sablot.h */
+
typedef void *SXP_Node;
+
typedef void *SXP_Document;
+
typedef void *SXP_NodeList;
+
typedef SXP_Node NodeHandle;
+
+
#include "sablot.h"
+
+
typedef enum
+
{
+
ELEMENT_NODE = 1,
+
ATTRIBUTE_NODE = 2,
+
TEXT_NODE = 3,
+
PROCESSING_INSTRUCTION_NODE = 7,
+
COMMENT_NODE = 8,
+
DOCUMENT_NODE = 9,
+
NAMESPACE_NODE = 13
+
} SXP_NodeType;
+
+
typedef enum
+
{
+
SXP_NONE,
+
SXP_NUMBER,
+
SXP_STRING,
+
SXP_BOOLEAN,
+
SXP_NODESET
+
} SXP_ExpressionType;
+
+
typedef char SXP_char;
+
+
typedef void *QueryContext;
+
+
/*option constants */
+
typedef enum
+
{
+
SXPF_DISPOSE_NAMES = 0x1,
+
SXPF_DISPOSE_VALUES = 0x2,
+
SXPF_SUPPORTS_UNPARSED_ENTITIES =0x4
+
} SXPFlags;
+
+
/*
+
* DOM handler functions
+
* This handler is registered with the Situation rather than the Processor
+
*/
+
+
/*****************************************************************
+
DOMHandler
+
+
Handler providing information about a DOM tree to the XPath
+
processor
+
*****************************************************************/
+
+
typedef SXP_NodeType DOMH_getNodeType(SXP_Node n);
+
+typedef SXP_NodeType DOMH_getNodeTypeExt(SXP_Node n, void *userData);
+
+
+
typedef const SXP_char* DOMH_getNodeName(SXP_Node n);
+
+typedef const SXP_char* DOMH_getNodeNameExt(SXP_Node n, void *userData);
+
+
+
typedef const SXP_char* DOMH_getNodeNameURI(SXP_Node n);
+
+typedef const SXP_char* DOMH_getNodeNameURIExt(SXP_Node n, void *userData);
+
+
+
typedef const SXP_char* DOMH_getNodeNameLocal(SXP_Node n);
+
+typedef const SXP_char* DOMH_getNodeNameLocalExt(SXP_Node n, void *userData);
+
+
+
typedef const SXP_char* DOMH_getNodeValue(SXP_Node n);
+
+typedef const SXP_char* DOMH_getNodeValueExt(SXP_Node n, void *userData);
+
+
+
typedef SXP_Node DOMH_getNextSibling(SXP_Node n);
+
+typedef SXP_Node DOMH_getNextSiblingExt(SXP_Node n, void *userData);
+
+
+
typedef SXP_Node DOMH_getPreviousSibling(SXP_Node n);
+
+typedef SXP_Node DOMH_getPreviousSiblingExt(SXP_Node n, void *userData);
+
+
+
typedef SXP_Node DOMH_getNextAttrNS(SXP_Node n);
+
+typedef SXP_Node DOMH_getNextAttrNSExt(SXP_Node n, void *userData);
+
+
+
typedef SXP_Node DOMH_getPreviousAttrNS(SXP_Node n);
+
+typedef SXP_Node DOMH_getPreviousAttrNSExt(SXP_Node n, void *userData);
+
+
+
typedef int DOMH_getChildCount(SXP_Node n);
+
+typedef int DOMH_getChildCountExt(SXP_Node n, void *userData);
+
+
+
typedef int DOMH_getAttributeCount(SXP_Node n);
+
+typedef int DOMH_getAttributeCountExt(SXP_Node n, void *userData);
+
+
+
typedef int DOMH_getNamespaceCount(SXP_Node n);
+
+typedef int DOMH_getNamespaceCountExt(SXP_Node n, void *userData);
+
+
+
typedef SXP_Node DOMH_getChildNo(SXP_Node n, int ndx);
+
+typedef SXP_Node DOMH_getChildNoExt(SXP_Node n, int ndx, void *userData);
+
+
+
typedef SXP_Node DOMH_getAttributeNo(SXP_Node n, int ndx);
+
+typedef SXP_Node DOMH_getAttributeNoExt(SXP_Node n, int ndx, void *userData);
+
+
+
typedef SXP_Node DOMH_getNamespaceNo(SXP_Node n, int ndx);
+
+typedef SXP_Node DOMH_getNamespaceNoExt(SXP_Node n, int ndx, void *userData);
+
+
+
typedef SXP_Node DOMH_getParent(SXP_Node n);
+
+typedef SXP_Node DOMH_getParentExt(SXP_Node n, void *userData);
+
+
+
typedef SXP_Document DOMH_getOwnerDocument(SXP_Node n);
+
+typedef SXP_Document DOMH_getOwnerDocumentExt(SXP_Node n, void *userData);
+
+
+
typedef int DOMH_compareNodes(SXP_Node n1, SXP_Node n2);
+
+typedef int DOMH_compareNodesExt(SXP_Node n1, SXP_Node n2, void *userData);
+
+
+
typedef SXP_Document DOMH_retrieveDocument(const SXP_char* uri,
+
void* udata);
+
+typedef SXP_Document DOMH_retrieveDocumentExt(const SXP_char* uri,
+
+ const SXP_char* baseUri,
+
+ void* udata);
+
+
+
typedef SXP_Node DOMH_getNodeWithID(SXP_Document doc, const SXP_char* id);
+
+typedef SXP_Node DOMH_getNodeWithIDExt(SXP_Document doc, const SXP_char* id, void *userData);
+
+
+
typedef void DOMH_freeBuffer(SXP_char *buff);
+typedef void DOMH_freeBufferExt(SXP_Node n, SXP_char *buff, void *userData);
+
+
+
+
+
typedef struct
+
{
+
DOMH_getNodeType *getNodeType;
+
DOMH_getNodeName *getNodeName;
+
DOMH_getNodeNameURI *getNodeNameURI;
+
DOMH_getNodeNameLocal *getNodeNameLocal;
+
DOMH_getNodeValue *getNodeValue;
+
DOMH_getNextSibling *getNextSibling;
+
DOMH_getPreviousSibling *getPreviousSibling;
+
DOMH_getNextAttrNS *getNextAttrNS;
+
DOMH_getPreviousAttrNS *getPreviousAttrNS;
+
DOMH_getChildCount *getChildCount;
+
DOMH_getAttributeCount *getAttributeCount;
+
DOMH_getNamespaceCount *getNamespaceCount;
+
DOMH_getChildNo *getChildNo;
+
DOMH_getAttributeNo *getAttributeNo;
+
DOMH_getNamespaceNo *getNamespaceNo;
+
DOMH_getParent *getParent;
+
DOMH_getOwnerDocument *getOwnerDocument;
+
DOMH_compareNodes *compareNodes;
+
DOMH_retrieveDocument *retrieveDocument;
+
DOMH_getNodeWithID *getNodeWithID;
+
/*optional entries - driven by sxpOptions */
+
DOMH_freeBuffer *freeBuffer;
+
+
+
+ DOMH_getNodeTypeExt *getNodeTypeExt;
+
+ DOMH_getNodeNameExt *getNodeNameExt;
+
+ DOMH_getNodeNameURIExt *getNodeNameURIExt;
+
+ DOMH_getNodeNameLocalExt *getNodeNameLocalExt;
+
+ DOMH_getNodeValueExt *getNodeValueExt;
+
+ DOMH_getNextSiblingExt *getNextSiblingExt;
+
+ DOMH_getPreviousSiblingExt *getPreviousSiblingExt;
+
+ DOMH_getNextAttrNSExt *getNextAttrNSExt;
+
+ DOMH_getPreviousAttrNSExt *getPreviousAttrNSExt;
+
+ DOMH_getChildCountExt *getChildCountExt;
+
+ DOMH_getAttributeCountExt *getAttributeCountExt;
+
+ DOMH_getNamespaceCountExt *getNamespaceCountExt;
+
+ DOMH_getChildNoExt *getChildNoExt;
+
+ DOMH_getAttributeNoExt *getAttributeNoExt;
+
+ DOMH_getNamespaceNoExt *getNamespaceNoExt;
+
+ DOMH_getParentExt *getParentExt;
+
+ DOMH_getOwnerDocumentExt *getOwnerDocumentExt;
+
+ DOMH_compareNodesExt *compareNodesExt;
+
+ DOMH_retrieveDocumentExt *retrieveDocumentExt;
+
+ DOMH_getNodeWithIDExt *getNodeWithIDExt;
+
+ /*optional entries - driven by sxpOptions */
+
+ DOMH_freeBufferExt *freeBufferExt;
+
+
+
} DOMHandler;
+
+
Declare
+
(
+
void SXP_registerDOMHandler(SablotSituation S,
+
DOMHandler *domh, void* udata);
+
)
+
+
Declare
+
(
+
void SXP_unregisterDOMHandler(SablotSituation S);
+
)
+
+
/*
+
*
+
* QueryContext functions
+
*
+
*/
+
+
/* options setter getter */
+
Declare
+
(
+
void SXP_setOptions(SablotSituation S, unsigned long options);
+
)
+
+
Declare
+
(
+
void SXP_setMaskBit(SablotSituation S, int mask);
+
)
+
+
Declare
+
(
+
unsigned long SXP_getOptions(SablotSituation S);
+
)
+
+
Declare
+
(
+
int SXP_createQueryContext(SablotSituation S, QueryContext *Q);
+
)
+
+
Declare
+
(
+
int SXP_addVariableBinding(QueryContext Q,
+
const SXP_char* name, QueryContext source);
+
)
+
+
Declare
+
(
+
int SXP_addVariableNumber(QueryContext Q,
+
const SXP_char* name, double value);
+
)
+
+
Declare
+
(
+
int SXP_addVariableString(QueryContext Q,
+
const SXP_char* name, const SXP_char* value);
+
)
+
+
Declare
+
(
+
int SXP_addVariableBoolean(QueryContext Q,
+
const SXP_char* name, int value);
+
)
+
+
Declare
+
(
+
int SXP_addNamespaceDeclaration(QueryContext Q,
+
const SXP_char* prefix, const SXP_char* uri);
+
)
+
+
Declare
+
(
+
int SXP_query(QueryContext Q, const SXP_char* query,
+
SXP_Node n, int contextPosition, int contextSize);
+
)
+
+
Declare
+
(
+
int SXP_destroyQueryContext(QueryContext Q);
+
)
+
+
/*
+
*
+
* Functions to retrieve the query result and its type
+
*
+
*/
+
+
Declare
+
(
+
int SXP_getResultType(QueryContext Q, SXP_ExpressionType *type);
+
)
+
+
Declare
+
(
+
int SXP_getResultNumber(QueryContext Q, double *result);
+
)
+
+
Declare
+
(
+
int SXP_getResultBool(QueryContext Q, int *result);
+
)
+
+
Declare
+
(
+
int SXP_getResultString(QueryContext Q, const char **result);
+
)
+
+
Declare
+
(
+
int SXP_getResultNodeset(QueryContext Q, SXP_NodeList *result);
+
)
+
+
/*
+
*
+
* NodeList manipulation
+
*
+
*/
+
+
Declare
+
(
+
int SXP_getNodeListLength(SXP_NodeList l);
+
)
+
+
Declare
+
(
+
SXP_Node SXP_getNodeListItem(QueryContext Q, SXP_NodeList l, int index);
+
)
+
+
+
#endif /* SXPathHIncl */
+