diff options
Diffstat (limited to 'libxml2-2.9.10/os400/rpgsupport.c')
-rw-r--r-- | libxml2-2.9.10/os400/rpgsupport.c | 270 |
1 files changed, 270 insertions, 0 deletions
diff --git a/libxml2-2.9.10/os400/rpgsupport.c b/libxml2-2.9.10/os400/rpgsupport.c new file mode 100644 index 0000000..ad4cc5d --- /dev/null +++ b/libxml2-2.9.10/os400/rpgsupport.c @@ -0,0 +1,270 @@ +/** +*** Additional procedures for ILE/RPG support. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#include <sys/types.h> + +#include <stdarg.h> + +#include "libxml/xmlmemory.h" +#include "libxml/xpath.h" +#include "libxml/parser.h" +#include "libxml/HTMLparser.h" + +#include "rpgsupport.h" + + +/** +*** ILE/RPG cannot directly derefence a pointer and has no macros. +*** The following additional procedures supply these functions. +*** In addition, the following code is adjusted for threads control at +*** compile time via the C macros. +**/ + +#define THREADED_VAR(name, type) \ + type __get_##name(void) { return name; } \ + void __set_##name(type arg) { name = arg; } + + +THREADED_VAR(xmlFree, xmlFreeFunc) + +void +__call_xmlFree(void * mem) + +{ + xmlFree(mem); +} + + +THREADED_VAR(xmlMalloc, xmlMallocFunc) + +void * +__call_xmlMalloc(size_t size) + +{ + return xmlMalloc(size); +} + + +THREADED_VAR(xmlMallocAtomic, xmlMallocFunc) + +void * +__call_xmlMallocAtomic(size_t size) + +{ + return xmlMallocAtomic(size); +} + + +THREADED_VAR(xmlRealloc, xmlReallocFunc) + +void * +__call_xmlRealloc(void * mem, size_t size) + +{ + return xmlRealloc(mem, size); +} + + +THREADED_VAR(xmlMemStrdup, xmlStrdupFunc) + +char * +__call_xmlMemStrdup(const char * str) + +{ + return xmlMemStrdup(str); +} + + +#ifdef LIBXML_DOCB_ENABLED +THREADED_VAR(docbDefaultSAXHandler, xmlSAXHandlerV1) +#endif + + +#ifdef LIBXML_HTML_ENABLED +THREADED_VAR(htmlDefaultSAXHandler, xmlSAXHandlerV1) +#endif + + +THREADED_VAR(xmlLastError, xmlError) + +THREADED_VAR(oldXMLWDcompatibility, int) +THREADED_VAR(xmlBufferAllocScheme, xmlBufferAllocationScheme) +THREADED_VAR(xmlDefaultBufferSize, int) +THREADED_VAR(xmlDefaultSAXHandler, xmlSAXHandlerV1) +THREADED_VAR(xmlDefaultSAXLocator, xmlSAXLocator) +THREADED_VAR(xmlDoValidityCheckingDefaultValue, int) + +/* No caller to xmlGenericError() because the argument list is unknown. */ +THREADED_VAR(xmlGenericError, xmlGenericErrorFunc) + + +THREADED_VAR(xmlStructuredError, xmlStructuredErrorFunc) + +void +__call_xmlStructuredError(void * userData, xmlErrorPtr error) + +{ + xmlStructuredError(userData, error); +} + +THREADED_VAR(xmlGenericErrorContext, void *) +THREADED_VAR(xmlStructuredErrorContext, void *) +THREADED_VAR(xmlGetWarningsDefaultValue, int) +THREADED_VAR(xmlIndentTreeOutput, int) +THREADED_VAR(xmlTreeIndentString, const char *) +THREADED_VAR(xmlKeepBlanksDefaultValue, int) +THREADED_VAR(xmlLineNumbersDefaultValue, int) +THREADED_VAR(xmlLoadExtDtdDefaultValue, int) +THREADED_VAR(xmlParserDebugEntities, int) +THREADED_VAR(xmlParserVersion, const char *) +THREADED_VAR(xmlPedanticParserDefaultValue, int) +THREADED_VAR(xmlSaveNoEmptyTags, int) +THREADED_VAR(xmlSubstituteEntitiesDefaultValue, int) + + +THREADED_VAR(xmlRegisterNodeDefaultValue, xmlRegisterNodeFunc) + +void +__call_xmlRegisterNodeDefaultValue(xmlNodePtr node) + +{ + xmlRegisterNodeDefaultValue(node); +} + + +THREADED_VAR(xmlDeregisterNodeDefaultValue, xmlDeregisterNodeFunc) + +void +__call_xmlDeregisterNodeDefaultValue(xmlNodePtr node) + +{ + xmlDeregisterNodeDefaultValue(node); +} + + +THREADED_VAR(xmlParserInputBufferCreateFilenameValue, xmlParserInputBufferCreateFilenameFunc) + +xmlParserInputBufferPtr +__call_xmlParserInputBufferCreateFilenameValue(const char *URI, + xmlCharEncoding enc) + +{ + return xmlParserInputBufferCreateFilenameValue(URI, enc); +} + + +THREADED_VAR(xmlOutputBufferCreateFilenameValue, xmlOutputBufferCreateFilenameFunc) + +xmlOutputBufferPtr +__call_xmlOutputBufferCreateFilenameValue(const char *URI, + xmlCharEncodingHandlerPtr encoder, int compression) + +{ + return xmlOutputBufferCreateFilenameValue(URI, encoder, compression); +} + + + +/** +*** va_list support. +**/ + +void +__xmlVaStart(char * * list, char * lastargaddr, size_t lastargsize) + +{ + list[1] = lastargaddr + lastargsize; +} + + +void * +__xmlVaArg(char * * list, void * dest, size_t argsize) + +{ + size_t align; + + if (!argsize) + return (void *) NULL; + + for (align = 16; align > argsize; align >>= 1) + ; + + align--; + list[0] = list[1] + (align - (((size_t) list[0] - 1) & align)); + list[1] = list[0] + argsize; + + if (dest) + memcpy(dest, list[0], argsize); + + return (void *) list[0]; +} + + +void +__xmlVaEnd(char * * list) + +{ + /* Nothing to do. */ +} + + +#ifdef LIBXML_XPATH_ENABLED + +int +__xmlXPathNodeSetGetLength(const xmlNodeSet * ns) + +{ + return xmlXPathNodeSetGetLength(ns); +} + + +xmlNodePtr +__xmlXPathNodeSetItem(const xmlNodeSet * ns, int index) + +{ + return xmlXPathNodeSetItem(ns, index); +} + + +int +__xmlXPathNodeSetIsEmpty(const xmlNodeSet * ns) + +{ + return xmlXPathNodeSetIsEmpty(ns); +} + +#endif + + +#ifdef LIBXML_HTML_ENABLED + +const char * +__htmlDefaultSubelement(const htmlElemDesc * elt) + +{ + return htmlDefaultSubelement(elt); +} + + +int +__htmlElementAllowedHereDesc(const htmlElemDesc * parent, + const htmlElemDesc * elt) + +{ + return htmlElementAllowedHereDesc(parent, elt); +} + + +const char * * +__htmlRequiredAttrs(const htmlElemDesc * elt) + +{ + return htmlRequiredAttrs(elt); +} + +#endif |