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/XsltExecutable.h"
56static std::vector<void *> myAlloc;
58void *newImpl(std::size_t sz,
char const *file,
int line);
60void *
operator new(std::size_t sz,
char const *file,
int line);
62void *
operator new[](std::size_t sz,
char const *file,
int line);
64void operator delete(
void *ptr)
noexcept;
66void operator delete(
void *, std::size_t)
noexcept;
98typedef enum eXdmType {
100 XDM_ATOMIC_VALUE = 1,
104 XDM_FUNCTION_ITEM = 5,
119 friend class DocumentBuilder;
121 friend class Xslt30Processor;
123 friend class XsltExecutable;
125 friend class XQueryProcessor;
127 friend class SchemaValidator;
129 friend class XPathProcessor;
131 friend class XdmValue;
133 friend class XdmItem;
135 friend class XdmAtomicValue;
137 friend class XdmFunctionItem;
139 friend class XdmNode;
143 friend class XdmArray;
238 void setExtensionLibrary(
const char * libraryName);
248 const char *encoding =
nullptr);
258 const char *encoding =
nullptr);
324 XdmArray *
makeArray(
char **input,
int length);
333 XdmArray *
makeArray(
short *input,
int length);
342 XdmArray *
makeArray(
int *input,
int length);
351 XdmArray *
makeArray(
long long *input,
int length);
360 XdmArray *
makeArray(
bool *input,
int length);
369 XdmArray *
makeArray(XdmValue **values,
int length);
372 static void * makeInternalArray(
void **inputs,
int length);
381 XdmMap *
makeMap(std::map<XdmAtomicValue *, XdmValue *> dataMap);
390 static XdmMap *
makeMap2(std::map<std::string, XdmValue *> dataMap);
400 XdmMap *
makeMap3(XdmAtomicValue **keys, XdmValue **values,
int len);
459 const char *encoding =
nullptr,
460 SchemaValidator *validator =
nullptr);
472 SchemaValidator *validator =
nullptr);
484 SchemaValidator *validator =
nullptr);
495 const char *encoding = NULL);
547 void deleteXdmValueArray(
XdmValue **arr,
int len);
553 return (
new XdmAtomicValue *[len]);
574 static const char * encodeString(
const char * stringValue,
const char * toCharSetName);
579 static void release();
584 static void attachCurrentThread();
589 static graal_isolatethread_t * getOrAttachCurrentThread(
sxnc_environment * sxn);
594 static void detachCurrentThread();
610 void setcwd(
const char *cwd);
616 const char *getcwd();
623 const char *getResourcesDirectory();
630 void setResourcesDirectory(
const char *dir);
661 void clearConfigurationProperties();
676 const char * getSaxonEdition();
697 if (data !=
nullptr) {
698 operator delete((
char *)data);
706 static void createHeapDump(
bool live);
723 std::map<std::string, XdmValue *>
740 void initialize(
bool l);
742 void applyConfigurationProperties();
746 createParameterJArray(std::map<std::string, XdmValue *>
parameters,
747 std::map<std::string, std::string> properties,
751 createParameterJArray2(std::map<std::string, XdmValue *>
parameters);
753 static int64_t createJArray(XdmValue **values,
int length);
755 static XdmValue *makeXdmValueFromRef(int64_t valueRef);
757 static XdmItem *makeXdmItemFromRef(int64_t valueRef);
759 static const char *checkException();
764 static void destroyHandle(int64_t handleRef);
769 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:49
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:67
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:223
A document builder holds properties controlling how a Saxon document tree should be built,...
Definition DocumentBuilder.h:35
SaxonApiException.
Definition SaxonApiException.h:24
The SaxonProcessor class acts as a factory for generating XQuery, XPath, Schema and XSLT compilers.
Definition SaxonProcessor.h:117
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:1063
XdmNode * parseXmlFromFile(const char *source, SchemaValidator *validator=nullptr)
Parse a source document file and return it as an XdmNode.
Definition SaxonProcessor.cpp:941
XdmMap * makeMap3(XdmAtomicValue **keys, XdmValue **values, int len)
Make an XdmMap from arrays of keys and values in XDM form.
Definition SaxonProcessor.cpp:1348
std::string cwdV
Definition SaxonProcessor.h:720
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:1119
XdmNode * parseXmlFromUri(const char *source, SchemaValidator *validator=nullptr)
Parse a source document available by URI and return it as an XdmNode.
Definition SaxonProcessor.cpp:960
const char * getErrorMessage()
Deprecated.
Definition SaxonProcessor.cpp:109
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:873
static sxnc_environment * sxn_environ
Definition SaxonProcessor.h:688
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:1312
void exceptionClear()
Deprecated.
Definition SaxonProcessor.cpp:116
XdmAtomicValue * makeBooleanValue(bool b)
Factory method to create an xs:boolean atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1104
SaxonProcessor()
Default constructor.
Definition SaxonProcessor.cpp:244
std::map< std::string, XdmValue * > parameters
Definition SaxonProcessor.h:724
XdmAtomicValue * makeQNameValue(const char *str)
Create an xs:QName atomic value, from the string representation in clark notation.
Definition SaxonProcessor.cpp:1112
SchemaValidator * newSchemaValidator()
Create a SchemaValidator.
Definition SaxonProcessor.cpp:773
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:1135
XdmAtomicValue * makeDoubleValue(double d)
Factory method to create an xs:double atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1080
XdmAtomicValue * makeIntegerValue(int i)
Factory method to create an xs:integer atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1072
XdmValue * parseJsonFromFile(const char *source)
Parse a source JSON file and return it as an XdmValue.
Definition SaxonProcessor.cpp:894
XdmArray * makeArray(char **input, int length)
Make an XdmArray whose members are xs:string values.
Definition SaxonProcessor.cpp:1265
bool exceptionOccurred()
Deprecated.
Definition SaxonProcessor.cpp:86
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:1143
XdmValue ** createXdmValueArray(int len)
Utility method for working with SaxonC on Python - internal use only.
Definition SaxonProcessor.h:539
XdmAtomicValue ** createXdmAtomicValueArray(int len)
Utility method for working with SaxonC on Python - internal use only.
Definition SaxonProcessor.h:552
XQueryProcessor * newXQueryProcessor()
Create an XQueryProcessor.
Definition SaxonProcessor.cpp:765
Xslt30Processor * newXslt30Processor()
Create an Xslt30Processor.
Definition SaxonProcessor.cpp:761
std::string cwd
Definition SaxonProcessor.h:690
std::string versionStr
Definition SaxonProcessor.h:722
XdmAtomicValue * makeLongValue(long l)
Factory method to create an xs:long atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1096
bool licensei
Definition SaxonProcessor.h:729
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:696
bool isSchemaAwareProcessor()
Test whether this processor is schema-aware.
Definition SaxonProcessor.cpp:453
SaxonProcessor & operator=(const SaxonProcessor &other)
The copy assignment= operator.
Definition SaxonProcessor.cpp:719
int getNodeKind(int64_t obj)
Get the kind of node - internal use only.
Definition SaxonProcessor.cpp:934
SaxonApiException * exception
Definition SaxonProcessor.h:735
DocumentBuilder * newDocumentBuilder()
Create a DocumentBuilder.
Definition SaxonProcessor.cpp:752
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:1282
static int jvmCreatedCPP
Definition SaxonProcessor.h:685
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:915
XPathProcessor * newXPathProcessor()
Create an XPathProcessor.
Definition SaxonProcessor.cpp:769
int64_t procRef
Definition SaxonProcessor.h:732
XdmAtomicValue * makeFloatValue(float f)
Factory method to create an xs:float atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1088
Definition SchemaValidator.h:26
An XPathProcessor represents a factory to compile, load and execute XPath expressions.
Definition XPathProcessor.h:64
An XQueryProcessor represents a factory to compile, load and execute queries.
Definition XQueryProcessor.h:25
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
An Xslt30Processor represents a factory to compile, load and execute stylesheets.
Definition Xslt30Processor.h:29
An XsltExecutable represents the compiled form of a stylesheet.
Definition XsltExecutable.h:33
sxnc_environment.
Definition SaxonCGlue.h:80