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;
275 const char *encoding =
nullptr);
285 const char *encoding =
nullptr);
342 XdmAtomicValue *makeAtomicValue(
const char *type,
const char *value);
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);
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);
440 const char *clarkNameToEQName(
const char *name);
449 const char *EQNameToClarkName(
const char *name);
469 XdmNode *parseXmlFromString(
const char *source,
470 const char *encoding =
nullptr,
482 XdmNode *parseXmlFromFile(
const char *source,
494 XdmNode *parseXmlFromUri(
const char *source,
505 XdmValue *parseJsonFromString(
const char *source,
506 const char *encoding = NULL);
516 XdmValue *parseJsonFromFile(
const char *source);
523 int getNodeKind(int64_t obj);
530 bool isSchemaAwareProcessor();
544 void deleteXdmValueArray(
XdmValue **arr,
int 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();
696 void registerUserFunction(
const char * ns,
XdmValue * (*func)(
int,
XdmValue **),
const char * signatureJSON,
bool useNativeTypes=
false);
698 void registerUserFunctionWithProcessor(
void * procPtr,
const char * ns,
void * func,
const char * signatureJSON,
bool useNativeTypes=
false);
786 if (data !=
nullptr) {
787 operator delete((
char *)data);
795 static void createHeapDump(
bool live);
797 static XdmItem *makeXdmItemFromRef(int64_t valueRef);
799 static XdmValue *makeXdmValueFromRef(int64_t valueRef);
816 std::map<std::string, XdmValue *>
831 void initialize(
bool l);
833 void applyConfigurationProperties();
837 createParameterJArray(std::map<std::string, XdmValue *> parameters,
838 std::map<std::string, std::string> properties,
842 createParameterJArray2(std::map<std::string, XdmValue *> parameters);
844 static int64_t createJArray(
XdmValue **values,
int length);
849 static void destroyHandle(int64_t handleRef);
854 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
std::string cwdV
Definition SaxonProcessor.h:813
static sxnc_environment * sxn_environ
Definition SaxonProcessor.h:777
std::map< std::string, XdmValue * > parameters
Definition SaxonProcessor.h:817
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
std::string cwd
Definition SaxonProcessor.h:779
std::string versionStr
Definition SaxonProcessor.h:815
bool licensei
Definition SaxonProcessor.h:822
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:785
static int jvmCreatedCPP
Add a native method.
Definition SaxonProcessor.h:774
int64_t procRef
Definition SaxonProcessor.h:825
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:33
Definition SaxonProcessor.h:113
sxnc_environment.
Definition SaxonCGlue.h:85