Blame os400/rpgsupport.c

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