10#ifndef SAXON_PROCESSOR_H
11#define SAXON_PROCESSOR_H
13#if defined __linux__ || defined __APPLE__
20#define LoadLibrary(x) dlopen(x, RTLD_LAZY)
21#define GetProcAddress(x, y) dlsym(x, y)
28#define CVERSION_API_NO 1210
37#include "saxonc_export.h"
38#include "saxonc/DocumentBuilder.h"
39#include "saxonc/SaxonApiException.h"
42#include "saxonc/SchemaValidator.h"
43#include "saxonc/XPathProcessor.h"
44#include "saxonc/XQueryProcessor.h"
45#include "saxonc/Xslt30Processor.h"
46#include "saxonc/UserFunctionHandler.h"
47#include "saxonc/XsltExecutable.h"
57static std::vector<void *> myAlloc;
59void *newImpl(std::size_t sz,
char const *file,
int line);
61void *
operator new(std::size_t sz,
char const *file,
int line);
63void *
operator new[](std::size_t sz,
char const *file,
int line);
65void operator delete(
void *ptr)
noexcept;
67void operator delete(
void *, std::size_t)
noexcept;
102typedef enum eXdmType {
104 XDM_ATOMIC_VALUE = 1,
108 XDM_FUNCTION_ITEM = 5,
115 std::string functionName;
117 std::string returnTypeStr;
118 std::string arguments;
139 friend class DocumentBuilder;
141 friend class Xslt30Processor;
143 friend class XsltExecutable;
145 friend class XQueryProcessor;
147 friend class SchemaValidator;
149 friend class XsdCompiler;
151 friend class XPathProcessor;
153 friend class XdmValue;
155 friend class XdmItem;
157 friend class XdmAtomicValue;
159 friend class XdmFunctionItem;
161 friend class XdmNode;
165 friend class XdmArray;
275 const char *encoding =
nullptr);
285 const char *encoding =
nullptr);
351 XdmArray *
makeArray(
char **input,
int length);
360 XdmArray *
makeArray(
short *input,
int length);
369 XdmArray *
makeArray(
int *input,
int length);
378 XdmArray *
makeArray(
long long *input,
int length);
387 XdmArray *
makeArray(
bool *input,
int length);
396 XdmArray *
makeArray(XdmValue **values,
int length);
399 static void * makeInternalArray(
void **inputs,
int length);
408 XdmMap *
makeMap(std::map<XdmAtomicValue *, XdmValue *> dataMap);
417 static XdmMap *
makeMap2(std::map<std::string, XdmValue *> dataMap);
427 XdmMap *
makeMap3(XdmAtomicValue **keys, XdmValue **values,
int len);
470 const char *encoding =
nullptr,
471 SchemaValidator *validator =
nullptr);
483 SchemaValidator *validator =
nullptr);
495 SchemaValidator *validator =
nullptr);
506 const char *encoding = NULL);
544 void deleteXdmValueArray(
XdmValue **arr,
int len);
550 return (
new XdmAtomicValue *[len]);
565 static const char * encodeString(
const char * stringValue,
const char * toCharSetName);
570 static void release();
575 static void attachCurrentThread();
580 static graal_isolatethread_t * getOrAttachCurrentThread(
sxnc_environment * sxn);
585 static void detachCurrentThread();
601 void setcwd(
const char *cwd);
607 const char *getcwd();
613 const char *getResourcesDirectory();
619 void setResourcesDirectory(
const char *dir);
650 void clearConfigurationProperties();
665 const char * getSaxonEdition();
673 void registerUserFunction(
const char * ns,
XdmValue * (*func)(
int,
XdmValue **),
const char * signatureJSON,
bool useNativeTypes=
false);
675 void registerUserFunctionWithProcessor(
void * procPtr,
const char * ns,
void * func,
const char * signatureJSON,
bool useNativeTypes=
false);
763 if (data !=
nullptr) {
764 operator delete((
char *)data);
772 static void createHeapDump(
bool live);
774 static XdmItem *makeXdmItemFromRef(int64_t valueRef);
776 static XdmValue *makeXdmValueFromRef(int64_t valueRef);
793 std::map<std::string, XdmValue *>
808 void initialize(
bool l);
810 void applyConfigurationProperties();
814 createParameterJArray(std::map<std::string, XdmValue *>
parameters,
815 std::map<std::string, std::string> properties,
819 createParameterJArray2(std::map<std::string, XdmValue *>
parameters);
821 static int64_t createJArray(XdmValue **values,
int length);
826 static void destroyHandle(int64_t handleRef);
831 static void getInfo();
This C header file contains a number of factory functions for running SaxonC C/C++ APIs,...
EXTERN_SAXONC SAXONC_EXPORT const char * version(sxnc_environment *environi, sxnc_processor *proc)
Get the Saxon version.
Definition SaxonCProcessor.c:6
SAXONC_EXPORT void setCatalog(sxnc_environment *environi, sxnc_processor *proc, char *cwd, char *catalogFileName)
Set a catalog file to be used in Saxon.
Definition SaxonCProcessor.c:52
SAXONC_EXPORT void setCatalogFiles(sxnc_environment *environi, sxnc_processor *proc, char *cwd, char **catalogFileName, int length)
Set multiple catalog files to be used in Saxon.
Definition SaxonCProcessor.c:78
SAXONC_EXPORT void setConfigurationProperty(sxnc_environment *environi, sxnc_processor *proc, char *name, char *value)
Set a configuration property specific to the processor in use.
Definition SaxonCProcessor.c:38
SaxonCXPath.h provides the C API for XPath processing. This file contains a set of functions to compi...
SAXONC_EXPORT const char * getStringValue(sxnc_environment *environi, sxnc_value value)
Get the string value of the item.
Definition SaxonCXPath.c:240
A document builder holds properties controlling how a Saxon document tree should be built,...
Definition DocumentBuilder.h:35
SaxonApiException.
Definition SaxonApiException.h:25
The SaxonProcessor class acts as a factory for generating XQuery, XPath, Schema and XSLT compilers.
Definition SaxonProcessor.h:137
XdmAtomicValue * makeStringValue(std::string str, const char *encoding=nullptr)
Factory method to create an xs:string atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1081
XdmNode * parseXmlFromFile(const char *source, SchemaValidator *validator=nullptr)
Parse a source document file and return it as an XdmNode.
Definition SaxonProcessor.cpp:948
XdmMap * makeMap3(XdmAtomicValue **keys, XdmValue **values, int len)
Make an XdmMap from arrays of keys and values in XDM form.
Definition SaxonProcessor.cpp:1417
std::string cwdV
Definition SaxonProcessor.h:790
XdmAtomicValue * makeAtomicValue(const char *type, const char *value)
Create an XDM atomic value from its lexical representation and the name of the required built-in atom...
Definition SaxonProcessor.cpp:1142
XdmNode * parseXmlFromUri(const char *source, SchemaValidator *validator=nullptr)
Parse a source document available by URI and return it as an XdmNode.
Definition SaxonProcessor.cpp:970
XdmValue * parseJsonFromString(const char *source, const char *encoding=NULL)
Parse a lexical representation of a source JSON document and return it as an XdmValue.
Definition SaxonProcessor.cpp:871
static sxnc_environment * sxn_environ
Definition SaxonProcessor.h:754
static XdmMap * makeMap2(std::map< std::string, XdmValue * > dataMap)
Make an XdmMap by supplying a map from the standard template library, with keys in primitive form.
Definition SaxonProcessor.cpp:1374
XdmAtomicValue * makeBooleanValue(bool b)
Factory method to create an xs:boolean atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1127
SaxonProcessor()
Default constructor.
Definition SaxonProcessor.cpp:165
std::map< std::string, XdmValue * > parameters
Definition SaxonProcessor.h:794
XdmAtomicValue * makeQNameValue(const char *str)
Create an xs:QName atomic value, from the string representation in clark notation.
Definition SaxonProcessor.cpp:1135
SchemaValidator * newSchemaValidator()
Create a SchemaValidator.
Definition SaxonProcessor.cpp:739
const char * clarkNameToEQName(const char *name)
Convert a string representing a QName value in clark notation to a string representing the QName in E...
Definition SaxonProcessor.cpp:1161
XdmAtomicValue * makeDoubleValue(double d)
Factory method to create an xs:double atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1103
XdmAtomicValue * makeIntegerValue(int i)
Factory method to create an xs:integer atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1095
XdmValue * parseJsonFromFile(const char *source)
Parse a source JSON file and return it as an XdmValue.
Definition SaxonProcessor.cpp:897
XdmArray * makeArray(char **input, int length)
Make an XdmArray whose members are xs:string values.
Definition SaxonProcessor.cpp:1331
const char * EQNameToClarkName(const char *name)
Convert a string representing a QName value in EQName notation to a string representing the QName in ...
Definition SaxonProcessor.cpp:1173
XdmValue ** createXdmValueArray(int len)
Utility method for working with SaxonC on Python - internal use only.
Definition SaxonProcessor.h:536
XdmAtomicValue ** createXdmAtomicValueArray(int len)
Utility method for working with SaxonC on Python - internal use only.
Definition SaxonProcessor.h:549
XQueryProcessor * newXQueryProcessor()
Create an XQueryProcessor.
Definition SaxonProcessor.cpp:731
XsdCompiler * newXsdCompiler()
Create an XsdCompiler.
Definition SaxonProcessor.cpp:750
Xslt30Processor * newXslt30Processor()
Create an Xslt30Processor.
Definition SaxonProcessor.cpp:727
std::string cwd
Definition SaxonProcessor.h:756
std::string versionStr
Definition SaxonProcessor.h:792
XdmAtomicValue * makeLongValue(long l)
Factory method to create an xs:long atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1119
bool licensei
Definition SaxonProcessor.h:799
static void deleteString(const char *data)
Utility method required for the python and PHP extensions to delete a string created in the C++ code-...
Definition SaxonProcessor.h:762
bool isSchemaAwareProcessor()
Test whether this processor is schema-aware.
Definition SaxonProcessor.cpp:405
SaxonProcessor & operator=(const SaxonProcessor &other)
The copy assignment= operator.
Definition SaxonProcessor.cpp:684
int getNodeKind(int64_t obj)
Get the kind of node - internal use only.
Definition SaxonProcessor.cpp:941
DocumentBuilder * newDocumentBuilder()
Create a DocumentBuilder.
Definition SaxonProcessor.cpp:718
XdmMap * makeMap(std::map< XdmAtomicValue *, XdmValue * > dataMap)
Make an XdmMap by supplying a map from the standard template library, with keys in XDM form.
Definition SaxonProcessor.cpp:1349
static int jvmCreatedCPP
Add a native method.
Definition SaxonProcessor.h:751
XdmNode * parseXmlFromString(const char *source, const char *encoding=nullptr, SchemaValidator *validator=nullptr)
Parse a lexical representation of a source XML document and return it as an XdmNode.
Definition SaxonProcessor.cpp:919
XPathProcessor * newXPathProcessor()
Create an XPathProcessor.
Definition SaxonProcessor.cpp:735
int64_t procRef
Definition SaxonProcessor.h:802
XdmAtomicValue * makeFloatValue(float f)
Factory method to create an xs:float atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1111
Definition SchemaValidator.h:27
An XPathProcessor represents a factory to compile, load and execute XPath expressions.
Definition XPathProcessor.h:67
An XQueryProcessor represents a factory to compile, load and execute queries.
Definition XQueryProcessor.h:26
An array in the XDM data model.
Definition XdmArray.h:27
The class XdmAtomicValue represents an item in an XPath sequence that is an atomic value.
Definition XdmAtomicValue.h:27
The class XdmFunctionItem represents a function item.
Definition XdmFunctionItem.h:26
The class XdmItem represents an item in a sequence, as defined by the XDM data model.
Definition XdmItem.h:31
A map in the XDM data model.
Definition XdmMap.h:30
This class represents a node in the XDM data model.
Definition XdmNode.h:57
An XdmValue represents a value in the XDM data model.
Definition XdmValue.h:33
Definition XsdCompiler.h:49
An Xslt30Processor represents a factory to compile, load and execute stylesheets.
Definition Xslt30Processor.h:31
An XsltExecutable represents the compiled form of a stylesheet.
Definition XsltExecutable.h:30
Definition SaxonProcessor.h:113
sxnc_environment.
Definition SaxonCGlue.h:85