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;
237 void setExtensionLibrary(
const char * libraryName);
247 const char *encoding =
nullptr);
257 const char *encoding =
nullptr);
323 XdmArray *
makeArray(
char **input,
int length);
332 XdmArray *
makeArray(
short *input,
int length);
341 XdmArray *
makeArray(
int *input,
int length);
350 XdmArray *
makeArray(
long long *input,
int length);
359 XdmArray *
makeArray(
bool *input,
int length);
368 XdmArray *
makeArray(XdmValue **values,
int length);
371 static void * makeInternalArray(
void **inputs,
int length);
380 XdmMap *
makeMap(std::map<XdmAtomicValue *, XdmValue *> dataMap);
389 static XdmMap *
makeMap2(std::map<std::string, XdmValue *> dataMap);
399 XdmMap *
makeMap3(XdmAtomicValue **keys, XdmValue **values,
int len);
442 const char *encoding =
nullptr,
443 SchemaValidator *validator =
nullptr);
455 SchemaValidator *validator =
nullptr);
467 SchemaValidator *validator =
nullptr);
478 const char *encoding = NULL);
530 void deleteXdmValueArray(
XdmValue **arr,
int len);
536 return (
new XdmAtomicValue *[len]);
558 static const char * encodeString(
const char * stringValue,
const char * toCharSetName);
563 static void release();
568 static void attachCurrentThread();
573 static void detachCurrentThread();
579 void setcwd(
const char *cwd);
585 const char *getcwd();
591 const char *getResourcesDirectory();
597 void setResourcesDirectory(
const char *dir);
628 void clearConfigurationProperties();
643 const char * getSaxonEdition();
664 if (data !=
nullptr) {
665 operator delete((
char *)data);
673 void createHeapDump(
bool live);
686 std::map<std::string, XdmValue *>
707 void initialize(
bool l);
709 void applyConfigurationProperties();
713 createParameterJArray(std::map<std::string, XdmValue *>
parameters,
714 std::map<std::string, std::string> properties,
718 createParameterJArray2(std::map<std::string, XdmValue *>
parameters);
720 static int64_t createJArray(XdmValue **values,
int length);
722 static XdmValue *makeXdmValueFromRef(int64_t valueRef);
724 static XdmItem *makeXdmItemFromRef(int64_t valueRef);
726 static const char *checkException();
731 static void destroyHandle(int64_t handleRef);
736 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
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:1019
XdmNode * parseXmlFromFile(const char *source, SchemaValidator *validator=nullptr)
Parse a source document file and return it as an XdmNode.
Definition SaxonProcessor.cpp:899
XdmMap * makeMap3(XdmAtomicValue **keys, XdmValue **values, int len)
Make an XdmMap from arrays of keys and values in XDM form.
Definition SaxonProcessor.cpp:1302
std::string cwdV
Definition SaxonProcessor.h:683
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:1078
XdmNode * parseXmlFromUri(const char *source, SchemaValidator *validator=nullptr)
Parse a source document available by URI and return it as an XdmNode.
Definition SaxonProcessor.cpp:918
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:831
static sxnc_environment * sxn_environ
Definition SaxonProcessor.h:655
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:1266
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:1063
SaxonProcessor()
Default constructor.
Definition SaxonProcessor.cpp:237
std::map< std::string, XdmValue * > parameters
Definition SaxonProcessor.h:687
XdmAtomicValue * makeQNameValue(const char *str)
Create an xs:QName atomic value, from the string representation in clark notation.
Definition SaxonProcessor.cpp:1071
SchemaValidator * newSchemaValidator()
Create a SchemaValidator.
Definition SaxonProcessor.cpp:722
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:1094
XdmAtomicValue * makeDoubleValue(double d)
Factory method to create an xs:double atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1039
XdmAtomicValue * makeIntegerValue(int i)
Factory method to create an xs:integer atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1029
XdmValue * parseJsonFromFile(const char *source)
Parse a source JSON file and return it as an XdmValue.
Definition SaxonProcessor.cpp:852
XdmArray * makeArray(char **input, int length)
Make an XdmArray whose members are xs:string values.
Definition SaxonProcessor.cpp:1219
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:1101
XdmValue ** createXdmValueArray(int len)
Utility method for working with SaxonC on Python - internal use only.
Definition SaxonProcessor.h:522
XdmAtomicValue ** createXdmAtomicValueArray(int len)
Utility method for working with SaxonC on Python - internal use only.
Definition SaxonProcessor.h:535
XQueryProcessor * newXQueryProcessor()
Create an XQueryProcessor.
Definition SaxonProcessor.cpp:712
Xslt30Processor * newXslt30Processor()
Create an Xslt30Processor.
Definition SaxonProcessor.cpp:706
std::string cwd
Definition SaxonProcessor.h:657
std::string versionStr
Definition SaxonProcessor.h:685
XdmAtomicValue * makeLongValue(long l)
Factory method to create an xs:long atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1055
bool licensei
Definition SaxonProcessor.h:692
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:663
bool isSchemaAwareProcessor()
Test whether this processor is schema-aware.
Definition SaxonProcessor.cpp:381
SaxonProcessor & operator=(const SaxonProcessor &other)
The copy assignment= operator.
Definition SaxonProcessor.cpp:672
int getNodeKind(int64_t obj)
Get the kind of node - internal use only.
Definition SaxonProcessor.cpp:892
SaxonApiException * exception
Definition SaxonProcessor.h:701
DocumentBuilder * newDocumentBuilder()
Create a DocumentBuilder.
Definition SaxonProcessor.cpp:696
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:1236
static int jvmCreatedCPP
Definition SaxonProcessor.h:652
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:873
XPathProcessor * newXPathProcessor()
Create an XPathProcessor.
Definition SaxonProcessor.cpp:717
int64_t procRef
Definition SaxonProcessor.h:695
XdmAtomicValue * makeFloatValue(float f)
Factory method to create an xs:float atomic value as a new XdmAtomicValue.
Definition SaxonProcessor.cpp:1048
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:30
sxnc_environment.
Definition SaxonCGlue.h:80