diff options
Diffstat (limited to 'tclxml/docObj.c')
-rw-r--r-- | tclxml/docObj.c | 1832 |
1 files changed, 0 insertions, 1832 deletions
diff --git a/tclxml/docObj.c b/tclxml/docObj.c deleted file mode 100644 index b91ab1f..0000000 --- a/tclxml/docObj.c +++ /dev/null @@ -1,1832 +0,0 @@ -/* docObj.c -- - * - * This module manages libxml2 xmlDocPtr Tcl objects. - * - * Copyright (c) 2005 by Explain. - * http://www.explain.com.au/ - * Copyright (c) 2003-2004 Zveno Pty Ltd - * http://www.zveno.com/ - * - * See the file "LICENSE" for information on usage and - * redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - * $Id: docObj.c,v 1.1.1.1 2009/01/16 22:11:49 joye Exp $ - */ - -#include <tclxml-libxml2/tclxml-libxml2.h> -#include <libxml/xmlerror.h> -#include <string.h> - -#define TCL_DOES_STUBS \ - (TCL_MAJOR_VERSION > 8 || TCL_MAJOR_VERSION == 8 && (TCL_MINOR_VERSION > 1 || \ - (TCL_MINOR_VERSION == 1 && TCL_RELEASE_LEVEL == TCL_FINAL_RELEASE))) - -#undef TCL_STORAGE_CLASS -#define TCL_STORAGE_CLASS DLLEXPORT - -/* - * Basic list for tracking Tcl_Obj's for a document. - */ - -typedef struct ObjList { - Tcl_Obj *objPtr; - struct ObjList *next; -} ObjList; - -/* - * Prototypes for procedures defined later in this file: - */ - -static void DestroyTclDoc _ANSI_ARGS_((TclXML_libxml2_Document *tDocPtr)); - -Tcl_FreeInternalRepProc TclXMLlibxml2_DocFree; -Tcl_DupInternalRepProc TclXMLlibxml2_DocDup; -Tcl_UpdateStringProc TclXMLlibxml2_DocUpdate; -Tcl_SetFromAnyProc TclXMLlibxml2_DocSetFromAny; - -Tcl_ObjType TclXMLlibxml2_DocObjType = { - "libxml2-doc", - TclXMLlibxml2_DocFree, - TclXMLlibxml2_DocDup, - TclXMLlibxml2_DocUpdate, - TclXMLlibxml2_DocSetFromAny -}; - -typedef struct ThreadSpecificData { - int initialized; - - /* - * Hash table for mapping string rep to doc structure. - */ - - Tcl_HashTable *documents; - int docCntr; - - /* - * Hash table for tracking doc objects. - */ - - Tcl_HashTable *docByPtr; - - /* - * Structured error handling - */ - - TclXML_ErrorInfo *errorInfoPtr; - -} ThreadSpecificData; -static Tcl_ThreadDataKey dataKey; - -/* - * libxml2 is mostly thread-safe, but just-in-case use a mutex to control access. - */ - -TCL_DECLARE_MUTEX(libxml2) - -/* - *---------------------------------------------------------------------------- - * - * TclXML_libxml2_InitDocObj -- - * - * Initialise this module. - * - * Results: - * Returns success code - * - * Side effects: - * Memory may be allocated - * - *---------------------------------------------------------------------------- - */ - -int -TclXML_libxml2_InitDocObj(interp) - Tcl_Interp *interp; -{ - ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - - tsdPtr->initialized = 1; - tsdPtr->documents = (Tcl_HashTable *) Tcl_Alloc(sizeof(Tcl_HashTable)); - Tcl_InitHashTable(tsdPtr->documents, TCL_STRING_KEYS); - tsdPtr->docByPtr = (Tcl_HashTable *) Tcl_Alloc(sizeof(Tcl_HashTable)); - Tcl_InitHashTable(tsdPtr->docByPtr, TCL_ONE_WORD_KEYS); - - tsdPtr->docCntr = 0; - - /* - * Setup an error handler that stores structured error info - */ - - tsdPtr->errorInfoPtr = (TclXML_ErrorInfo *) Tcl_Alloc(sizeof(TclXML_ErrorInfo)); - tsdPtr->errorInfoPtr->interp = interp; - tsdPtr->errorInfoPtr->listPtr = NULL; - tsdPtr->errorInfoPtr->nodeHandlerProc = NULL; - xmlSetStructuredErrorFunc((void *) tsdPtr->errorInfoPtr, TclXML_libxml2_ErrorHandler); - - return TCL_OK; -} - -/* - *---------------------------------------------------------------------------- - * - * TclXML_libxml2_NewDocObj -- - * - * Creates a new xmlDocPtr and wraps it in a Tcl_Obj. - * - * Results: - * Returns a *TclObj - * - * Side effects: - * Objects allocated. - * - *---------------------------------------------------------------------------- - */ - -Tcl_Obj * -TclXML_libxml2_NewDocObj(interp) - Tcl_Interp *interp; -{ - xmlDocPtr new; - - Tcl_MutexLock(&libxml2); - new = xmlNewDoc((const xmlChar *) "1.0"); - Tcl_MutexUnlock(&libxml2); - if (!new) { - Tcl_SetResult(interp, "unable to create document", NULL); - return NULL; - } - - return TclXML_libxml2_CreateObjFromDoc(new); -} - -/* - *---------------------------------------------------------------------------- - * - * TclXML_libxml2_CreateObjFromDoc -- - * - * Create a Tcl_Obj to wrap a xmlDocPtr. - * - * Results: - * Returns Tcl_Obj*. - * - * Side effects: - * Allocates object. - * - *---------------------------------------------------------------------------- - */ - -Tcl_Obj * -TclXML_libxml2_CreateObjFromDoc (docPtr) - xmlDocPtr docPtr; -{ - ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - TclXML_libxml2_Document *tDocPtr; - Tcl_HashEntry *entryPtr; - Tcl_Obj *objPtr; - ObjList *listPtr; - - /* - * This xmlDocPtr may already have been wrapped by a Tcl object. - * If so, return an already existing wrapper. - * If not, create a new wrapper. - */ - - entryPtr = Tcl_FindHashEntry(tsdPtr->docByPtr, (ClientData) docPtr); - if (entryPtr) { - tDocPtr = (TclXML_libxml2_Document *) Tcl_GetHashValue(entryPtr); - - if (tDocPtr->objs) { - /* The first object is sufficient */ - listPtr = (ObjList *) tDocPtr->objs; - objPtr = listPtr->objPtr; - } else { - /* Create a new Tcl_Obj to refer to existing structure */ - objPtr = Tcl_NewObj(); - - listPtr = (ObjList *) Tcl_Alloc(sizeof(ObjList)); - listPtr->objPtr = objPtr; - listPtr->next = NULL; - tDocPtr->objs = (void *) listPtr; - - objPtr->length = strlen(tDocPtr->token); - objPtr->bytes = Tcl_Alloc(objPtr->length + 1); - strcpy(objPtr->bytes, tDocPtr->token); - objPtr->internalRep.twoPtrValue.ptr1 = (void *) tDocPtr; - objPtr->internalRep.twoPtrValue.ptr2 = NULL; - objPtr->typePtr = &TclXMLlibxml2_DocObjType; - } - - } else { - int new; - - objPtr = Tcl_NewObj(); - - tDocPtr = (TclXML_libxml2_Document *) Tcl_Alloc(sizeof(TclXML_libxml2_Document)); - tDocPtr->docPtr = docPtr; - tDocPtr->token = Tcl_Alloc(20); - sprintf(tDocPtr->token, "doc%d", tsdPtr->docCntr++); - tDocPtr->keep = TCLXML_LIBXML2_DOCUMENT_IMPLICIT; - tDocPtr->dom = NULL; - tDocPtr->domfree = NULL; - tDocPtr->apphook = NULL; - tDocPtr->appfree = NULL; - - listPtr = (ObjList *) Tcl_Alloc(sizeof(ObjList)); - listPtr->objPtr = objPtr; - listPtr->next = NULL; - tDocPtr->objs = (void *) listPtr; - - entryPtr = Tcl_CreateHashEntry(tsdPtr->documents, tDocPtr->token, &new); - Tcl_SetHashValue(entryPtr, (ClientData) tDocPtr); - entryPtr = Tcl_CreateHashEntry(tsdPtr->docByPtr, (ClientData) docPtr, &new); - Tcl_SetHashValue(entryPtr, (ClientData) tDocPtr); - - objPtr->length = strlen(tDocPtr->token); - objPtr->bytes = Tcl_Alloc(objPtr->length + 1); - strcpy(objPtr->bytes, tDocPtr->token); - objPtr->internalRep.twoPtrValue.ptr1 = (void *) tDocPtr; - objPtr->internalRep.twoPtrValue.ptr2 = NULL; - objPtr->typePtr = &TclXMLlibxml2_DocObjType; - } - - /* Bug fix #1032660. David Welton. */ - Tcl_IncrRefCount(objPtr); - - return objPtr; -} - -/* - *---------------------------------------------------------------------------- - * - * TclXML_libxml2_GetDocFromObj -- - * - * Retrieve the xmlDocPtr from a Tcl object. - * - * Results: - * Returns success code. - * - * Side effects: - * May set internal rep of object. - * - *---------------------------------------------------------------------------- - */ - -int -TclXML_libxml2_GetDocFromObj (interp, objPtr, docPtr) - Tcl_Interp *interp; - Tcl_Obj *objPtr; - xmlDocPtr *docPtr; -{ - TclXML_libxml2_Document *tDocPtr; - - if (TclXML_libxml2_GetTclDocFromObj(interp, objPtr, &tDocPtr) != TCL_OK) { - return TCL_ERROR; - } - - *docPtr = tDocPtr->docPtr; - - return TCL_OK; -} - -/* - *---------------------------------------------------------------------------- - * - * TclXML_libxml2_GetTclDocFromNode -- - * - * Retrieve a pointer to the TclXML Doc structure from a xmlNodePtr. - * - * Results: - * Returns success code. - * - * Side effects: - * Sets pointer - * - *---------------------------------------------------------------------------- - */ - -int -TclXML_libxml2_GetTclDocFromNode (interp, nodePtr, tDocPtrPtr) - Tcl_Interp *interp; - xmlNodePtr nodePtr; - TclXML_libxml2_Document **tDocPtrPtr; -{ - ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - Tcl_HashEntry *entryPtr; - - entryPtr = Tcl_FindHashEntry(tsdPtr->docByPtr, (ClientData) nodePtr->doc); - if (!entryPtr) { - *tDocPtrPtr = NULL; - Tcl_SetResult(interp, "document not known", NULL); - return TCL_ERROR; - } - - *tDocPtrPtr = (TclXML_libxml2_Document *) Tcl_GetHashValue(entryPtr); - - return TCL_OK; -} - -/* - *---------------------------------------------------------------------------- - * - * TclXML_libxml2_GetTclDocFromObj -- - * - * Retrieve the TclXML_libxml2_Document from a Tcl object. - * - * Results: - * Returns success code. - * - * Side effects: - * May set internal rep of object. - * - *---------------------------------------------------------------------------- - */ - -int -TclXML_libxml2_GetTclDocFromObj (interp, objPtr, tDocPtr) - Tcl_Interp *interp; - Tcl_Obj *objPtr; - TclXML_libxml2_Document **tDocPtr; -{ - if (objPtr->typePtr == &TclXMLlibxml2_DocObjType) { - *tDocPtr = (TclXML_libxml2_Document *) objPtr->internalRep.twoPtrValue.ptr1; - } else if (TclXMLlibxml2_DocSetFromAny(interp, objPtr) == TCL_OK) { - *tDocPtr = (TclXML_libxml2_Document *) objPtr->internalRep.twoPtrValue.ptr1; - } else { - return TCL_ERROR; - } - - return TCL_OK; -} - -/* - *---------------------------------------------------------------------------- - * - * TclXML_libxml2_DestroyDocument -- - * - * Manage destruction of a document. - * The trick here is to make sure that all Tcl_Obj's - * that reference this document have their internal rep - * invalidated. - * - * Results: - * None. - * - * Side effects: - * Memory deallocated, object internal reps changed. - * - *---------------------------------------------------------------------------- - */ - -void -TclXML_libxml2_DestroyDocument (tDocPtr) - TclXML_libxml2_Document *tDocPtr; -{ - ObjList *listPtr = (ObjList *) tDocPtr->objs; - ObjList *next; - - /* - * Invalidate the internal representation of all Tcl_Obj's - * that refer to this document. - */ - while (listPtr) { - next = listPtr->next; - TclXMLlibxml2_DocFree(listPtr->objPtr); - listPtr = next; - } - - if (tDocPtr->keep == TCLXML_LIBXML2_DOCUMENT_KEEP) { - DestroyTclDoc(tDocPtr); - } -} - -/* - *---------------------------------------------------------------------------- - * - * TclXML_libxml2_DocKeep -- - * - * Changes how the document's destruction is handled. - * - * Results: - * None. - * - * Side effects: - * Changes document configuration. - * - *---------------------------------------------------------------------------- - */ - -void -TclXML_libxml2_DocKeep(objPtr, keep) - Tcl_Obj *objPtr; - TclXML_libxml2_DocumentHandling keep; -{ - TclXML_libxml2_Document *tDocPtr; - - if (TclXML_libxml2_GetTclDocFromObj(NULL, objPtr, &tDocPtr) != TCL_OK) { - return; - } - - tDocPtr->keep = keep; -} - -/* - *---------------------------------------------------------------------------- - * - * TclXMLlibxml2_DocSetFromAny -- - * - * Finds the xmlDocPtr wrapper for a Tcl object. - * - * Results: - * Returns success code. - * - * Side effects: - * Changes the Tcl_Obj's internal rep. - * - *---------------------------------------------------------------------------- - */ - -int -TclXMLlibxml2_DocSetFromAny(interp, objPtr) - Tcl_Interp *interp; - Tcl_Obj *objPtr; -{ - ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - Tcl_HashEntry *entryPtr; - TclXML_libxml2_Document *tDocPtr; - ObjList *listPtr; - - entryPtr = Tcl_FindHashEntry(tsdPtr->documents, Tcl_GetStringFromObj(objPtr, NULL)); - - if (entryPtr) { - - if (objPtr->typePtr != NULL && objPtr->typePtr->freeIntRepProc != NULL) { - objPtr->typePtr->freeIntRepProc(objPtr); - } - - objPtr->internalRep.twoPtrValue.ptr1 = Tcl_GetHashValue(entryPtr); - objPtr->typePtr = &TclXMLlibxml2_DocObjType; - - tDocPtr = (TclXML_libxml2_Document *) objPtr->internalRep.twoPtrValue.ptr1; - - /* - * Add this object to the Tcl_Obj list. - * NB. There should be no duplicates. - */ - listPtr = (ObjList *) tDocPtr->objs; - if (listPtr == NULL) { - listPtr = (ObjList *) Tcl_Alloc(sizeof(ObjList)); - listPtr->objPtr = objPtr; - listPtr->next = NULL; - tDocPtr->objs = listPtr; - } else { - ObjList *newPtr; - - newPtr = (ObjList *) Tcl_Alloc(sizeof(ObjList)); - newPtr->objPtr = objPtr; - newPtr->next = listPtr; - tDocPtr->objs = (void *) newPtr; - } - /* SANITY CHECK NEEDED: no duplicates in the list */ - - } else { - - if (interp) { - Tcl_ResetResult(interp); - Tcl_AppendResult(interp, "token \"", Tcl_GetStringFromObj(objPtr, NULL), "\" is not a libxml2 document", NULL); - } - - return TCL_ERROR; - } - - return TCL_OK; -} - -/* - *---------------------------------------------------------------------------- - * - * TclXMLlibxml2_DocUpdate -- - * - * Finds the token for a xmlDocPtr wrapper. - * - * Results: - * None. - * - * Side effects: - * Changes the Tcl_Obj's string rep. - * - *---------------------------------------------------------------------------- - */ - -void -TclXMLlibxml2_DocUpdate(objPtr) - Tcl_Obj *objPtr; -{ - ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - Tcl_HashEntry *entryPtr; - - entryPtr = Tcl_FindHashEntry(tsdPtr->docByPtr, objPtr->internalRep.twoPtrValue.ptr1); - Tcl_InvalidateStringRep(objPtr); - if (entryPtr != NULL) { - TclXML_libxml2_Document *tDocPtr = (TclXML_libxml2_Document *) Tcl_GetHashValue(entryPtr); - objPtr->length = strlen(tDocPtr->token); - objPtr->bytes = Tcl_Alloc(objPtr->length + 1); - strcpy(objPtr->bytes, tDocPtr->token); - } -} - -/* - *---------------------------------------------------------------------------- - * - * TclXMLlibxml2_DocDup -- - * - * Duplicates the Tcl wrapper. - * NB. This does *not* copy the document itself - it simply creates - * another reference to the same document. - * - * Results: - * None. - * - * Side effects: - * Changes the target Tcl_Obj. - * - *---------------------------------------------------------------------------- - */ - -void -TclXMLlibxml2_DocDup(srcPtr, dstPtr) - Tcl_Obj *srcPtr; - Tcl_Obj *dstPtr; -{ - TclXML_libxml2_Document *tDocPtr; - ObjList *listPtr; - - if (dstPtr->typePtr != NULL && dstPtr->typePtr->freeIntRepProc != NULL) { - dstPtr->typePtr->freeIntRepProc(dstPtr); - } - - tDocPtr = (TclXML_libxml2_Document *) srcPtr->internalRep.twoPtrValue.ptr1; - listPtr = (ObjList *) Tcl_Alloc(sizeof(ObjList)); - listPtr->objPtr = dstPtr; - listPtr->next = ((ObjList *) tDocPtr->objs)->next; - tDocPtr->objs = listPtr; - - Tcl_InvalidateStringRep(dstPtr); - - dstPtr->internalRep.twoPtrValue.ptr1 = srcPtr->internalRep.twoPtrValue.ptr1; - dstPtr->internalRep.twoPtrValue.ptr2 = NULL; - dstPtr->typePtr = srcPtr->typePtr; -} - -/* - *---------------------------------------------------------------------------- - * - * TclXMLlibxml2_DocFree -- - * - * Removes a Tcl wrapper to a libxml2 document. - * - * Results: - * None. - * - * Side effects: - * May free the document. - * - *---------------------------------------------------------------------------- - */ - -void -TclXMLlibxml2_DocFree(objPtr) - Tcl_Obj *objPtr; -{ - TclXML_libxml2_Document *tDocPtr = (TclXML_libxml2_Document *) objPtr->internalRep.twoPtrValue.ptr1; - ObjList *listPtr = tDocPtr->objs; - ObjList *prevPtr = NULL; - - while (listPtr) { - if (listPtr->objPtr == objPtr) { - break; - } - prevPtr = listPtr; - listPtr = listPtr->next; - } - - if (listPtr == NULL) { - /* internal error */ - } else if (prevPtr == NULL) { - tDocPtr->objs = listPtr->next; - } else { - prevPtr->next = listPtr->next; - } - Tcl_Free((char *) listPtr); - - if (tDocPtr->objs == NULL && tDocPtr->keep == TCLXML_LIBXML2_DOCUMENT_IMPLICIT) { - DestroyTclDoc(tDocPtr); - } - - objPtr->internalRep.twoPtrValue.ptr1 = NULL; - objPtr->internalRep.twoPtrValue.ptr2 = NULL; - objPtr->typePtr = NULL; -} - -/* - *---------------------------------------------------------------------------- - * - * DestroyTclDoc -- - * - * Destroy the Tcl wrapper for a document. - * - * Results: - * None. - * - * Side effects: - * Free memory. - * - *---------------------------------------------------------------------------- - */ - -void -DestroyTclDoc(tDocPtr) - TclXML_libxml2_Document *tDocPtr; -{ - ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - Tcl_HashEntry *entryPtr; - - if (tDocPtr->domfree) { - (tDocPtr->domfree)(tDocPtr->dom); - } - if (tDocPtr->appfree) { - (tDocPtr->appfree)(tDocPtr->dom); - } - - entryPtr = Tcl_FindHashEntry(tsdPtr->documents, tDocPtr->token); - if (entryPtr) { - Tcl_DeleteHashEntry(entryPtr); - } else { - /* Internal error */ - } - - entryPtr = Tcl_FindHashEntry(tsdPtr->docByPtr, (ClientData) tDocPtr->docPtr); - if (entryPtr) { - Tcl_DeleteHashEntry(entryPtr); - } else { - /* Internal error */ - } - - Tcl_MutexLock(&libxml2); - xmlFreeDoc(tDocPtr->docPtr); - Tcl_MutexUnlock(&libxml2); - - Tcl_Free(tDocPtr->token); - Tcl_Free((char *) tDocPtr); -} - -/* - *---------------------------------------------------------------------------- - * - * TclXML_libxml2_ErrorHandler -- - * - * Handler for structured error reports - * - * Results: - * None. - * - * Side effects: - * Creates a Tcl_Obj to store the error information. - * - *---------------------------------------------------------------------------- - */ - -static Tcl_Obj * -ErrorDomainToString(domain) - int domain; -{ - switch ((xmlErrorDomain) domain) { - case XML_FROM_NONE: - return Tcl_NewStringObj("none", -1); - case XML_FROM_PARSER: - return Tcl_NewStringObj("parser", -1); - case XML_FROM_TREE: - return Tcl_NewStringObj("tree", -1); - case XML_FROM_NAMESPACE: - return Tcl_NewStringObj("namespace", -1); - case XML_FROM_DTD: - return Tcl_NewStringObj("dtd-validation", -1); - case XML_FROM_HTML: - return Tcl_NewStringObj("html-parser", -1); - case XML_FROM_MEMORY: - return Tcl_NewStringObj("memory", -1); - case XML_FROM_OUTPUT: - return Tcl_NewStringObj("output", -1); - case XML_FROM_IO: - return Tcl_NewStringObj("io", -1); - case XML_FROM_FTP: - return Tcl_NewStringObj("ftp", -1); - case XML_FROM_HTTP: - return Tcl_NewStringObj("http", -1); - case XML_FROM_XINCLUDE: - return Tcl_NewStringObj("XInclude", -1); - case XML_FROM_XPOINTER: - return Tcl_NewStringObj("XPointer", -1); - case XML_FROM_REGEXP: - return Tcl_NewStringObj("regexp", -1); - case XML_FROM_DATATYPE: - return Tcl_NewStringObj("schemas-datatype", -1); - case XML_FROM_SCHEMASP: - return Tcl_NewStringObj("schemas-parser", -1); - case XML_FROM_SCHEMASV: - return Tcl_NewStringObj("schemas-validation", -1); - case XML_FROM_RELAXNGP: - return Tcl_NewStringObj("relaxng-parser", -1); - case XML_FROM_RELAXNGV: - return Tcl_NewStringObj("relaxng-validation", -1); - case XML_FROM_CATALOG: - return Tcl_NewStringObj("catalog", -1); - case XML_FROM_C14N: - return Tcl_NewStringObj("canonicalization", -1); - case XML_FROM_XSLT: - return Tcl_NewStringObj("xslt", -1); - default: - return Tcl_NewObj(); - } -} - -static Tcl_Obj * -ErrorLevelToString(level) - xmlErrorLevel level; -{ - switch (level) { - case XML_ERR_WARNING: - return Tcl_NewStringObj("warning", -1); - case XML_ERR_ERROR: - return Tcl_NewStringObj("error", -1); - case XML_ERR_FATAL: - return Tcl_NewStringObj("fatal", -1); - case XML_ERR_NONE: - default: - return Tcl_NewStringObj("none", -1); - } -} - -static Tcl_Obj * -ErrorCodeToString(code) - int code; -{ - switch ((xmlParserErrors) code) { - case XML_ERR_OK: - return Tcl_NewObj(); - case XML_ERR_INTERNAL_ERROR: - return Tcl_NewStringObj("internal-error", -1); - case XML_ERR_NO_MEMORY: - return Tcl_NewStringObj("no-memory", -1); - case XML_ERR_DOCUMENT_START: - return Tcl_NewStringObj("document-start", -1); - case XML_ERR_DOCUMENT_EMPTY: - return Tcl_NewStringObj("document-empty", -1); - case XML_ERR_DOCUMENT_END: - return Tcl_NewStringObj("document-end", -1); - case XML_ERR_INVALID_HEX_CHARREF: - return Tcl_NewStringObj("invalid-hex-character-reference", -1); - case XML_ERR_INVALID_DEC_CHARREF: - return Tcl_NewStringObj("invalid-decimal-character-reference", -1); - case XML_ERR_INVALID_CHARREF: - return Tcl_NewStringObj("invalid-character-reference", -1); - case XML_ERR_INVALID_CHAR: - return Tcl_NewStringObj("invalid-character", -1); - case XML_ERR_CHARREF_AT_EOF: - return Tcl_NewStringObj("character-reference-at-eof", -1); - case XML_ERR_CHARREF_IN_PROLOG: - return Tcl_NewStringObj("character-reference-in-prolog", -1); - case XML_ERR_CHARREF_IN_EPILOG: - return Tcl_NewStringObj("character-reference-in-epilog", -1); - case XML_ERR_CHARREF_IN_DTD: - return Tcl_NewStringObj("character-reference-in-dtd", -1); - case XML_ERR_ENTITYREF_AT_EOF: - return Tcl_NewStringObj("entity-reference-at-eof", -1); - case XML_ERR_ENTITYREF_IN_PROLOG: - return Tcl_NewStringObj("entity-reference-in-prolog", -1); - case XML_ERR_ENTITYREF_IN_EPILOG: - return Tcl_NewStringObj("entity-reference-in-epilog", -1); - case XML_ERR_ENTITYREF_IN_DTD: - return Tcl_NewStringObj("entity-reference-in-dtd", -1); - case XML_ERR_PEREF_AT_EOF: - return Tcl_NewStringObj("parameter-entity-reference-at-eof", -1); - case XML_ERR_PEREF_IN_PROLOG: - return Tcl_NewStringObj("parameter-entity-reference-in-prolog", -1); - case XML_ERR_PEREF_IN_EPILOG: - return Tcl_NewStringObj("parameter-entity-reference-in-epilog", -1); - case XML_ERR_PEREF_IN_INT_SUBSET: - return Tcl_NewStringObj("parameter-entity-reference-in-internal-subset", -1); - case XML_ERR_ENTITYREF_NO_NAME: - return Tcl_NewStringObj("entity-reference-no-name", -1); - case XML_ERR_ENTITYREF_SEMICOL_MISSING: - return Tcl_NewStringObj("entity-reference-semicolon-missing", -1); - case XML_ERR_PEREF_NO_NAME: - return Tcl_NewStringObj("parameter-entity-reference-no-name", -1); - case XML_ERR_PEREF_SEMICOL_MISSING: - return Tcl_NewStringObj("parameter-entity-reference-semicolon-missing", -1); - case XML_ERR_UNDECLARED_ENTITY: - return Tcl_NewStringObj("undeclared-entity", -1); - case XML_WAR_UNDECLARED_ENTITY: - return Tcl_NewStringObj("undeclared-entity", -1); - case XML_ERR_UNPARSED_ENTITY: - return Tcl_NewStringObj("unparsed-entity", -1); - case XML_ERR_ENTITY_IS_EXTERNAL: - return Tcl_NewStringObj("entity-is-external", -1); - case XML_ERR_ENTITY_IS_PARAMETER: - return Tcl_NewStringObj("entity-is-parameter", -1); - case XML_ERR_UNKNOWN_ENCODING: - return Tcl_NewStringObj("unknown-encoding", -1); - case XML_ERR_UNSUPPORTED_ENCODING: - return Tcl_NewStringObj("unsupported-encoding", -1); - case XML_ERR_STRING_NOT_STARTED: - return Tcl_NewStringObj("string-not-started", -1); - case XML_ERR_STRING_NOT_CLOSED: - return Tcl_NewStringObj("string-not-closed", -1); - case XML_ERR_NS_DECL_ERROR: - return Tcl_NewStringObj("namespace-declaration-error", -1); - case XML_ERR_ENTITY_NOT_STARTED: - return Tcl_NewStringObj("entity-not-started", -1); - case XML_ERR_ENTITY_NOT_FINISHED: - return Tcl_NewStringObj("entity-not-finished", -1); - case XML_ERR_LT_IN_ATTRIBUTE: - return Tcl_NewStringObj("less-than-character-in-attribute", -1); - case XML_ERR_ATTRIBUTE_NOT_STARTED: - return Tcl_NewStringObj("attribute-not-started", -1); - case XML_ERR_ATTRIBUTE_NOT_FINISHED: - return Tcl_NewStringObj("attribute-not-finished", -1); - case XML_ERR_ATTRIBUTE_WITHOUT_VALUE: - return Tcl_NewStringObj("attribute-without-value", -1); - case XML_ERR_ATTRIBUTE_REDEFINED: - return Tcl_NewStringObj("attribute-redefined", -1); - case XML_ERR_LITERAL_NOT_STARTED: - return Tcl_NewStringObj("literal-not-started", -1); - case XML_ERR_LITERAL_NOT_FINISHED: - return Tcl_NewStringObj("literal-not-finished", -1); - case XML_ERR_COMMENT_NOT_FINISHED: - return Tcl_NewStringObj("comment-not-finished", -1); - case XML_ERR_PI_NOT_STARTED: - return Tcl_NewStringObj("processing-instruction-not-started", -1); - case XML_ERR_PI_NOT_FINISHED: - return Tcl_NewStringObj("processing-instruction-not-finished", -1); - case XML_ERR_NOTATION_NOT_STARTED: - return Tcl_NewStringObj("notation-not-started", -1); - case XML_ERR_NOTATION_NOT_FINISHED: - return Tcl_NewStringObj("notation-not-finished", -1); - case XML_ERR_ATTLIST_NOT_STARTED: - return Tcl_NewStringObj("attribute-list-not-started", -1); - case XML_ERR_ATTLIST_NOT_FINISHED: - return Tcl_NewStringObj("attribute-list-not-finished", -1); - case XML_ERR_MIXED_NOT_STARTED: - return Tcl_NewStringObj("mixed-content-not-started", -1); - case XML_ERR_MIXED_NOT_FINISHED: - return Tcl_NewStringObj("mixed-content-not-finished", -1); - case XML_ERR_ELEMCONTENT_NOT_STARTED: - return Tcl_NewStringObj("element-content-not-started", -1); - case XML_ERR_ELEMCONTENT_NOT_FINISHED: - return Tcl_NewStringObj("element-content-not-finished", -1); - case XML_ERR_XMLDECL_NOT_STARTED: - return Tcl_NewStringObj("xml-declaration-not-started", -1); - case XML_ERR_XMLDECL_NOT_FINISHED: - return Tcl_NewStringObj("xml-declaration-not-finished", -1); - case XML_ERR_CONDSEC_NOT_STARTED: - return Tcl_NewStringObj("conditional-section-not-started", -1); - case XML_ERR_CONDSEC_NOT_FINISHED: - return Tcl_NewStringObj("conditional-section-not-finished", -1); - case XML_ERR_EXT_SUBSET_NOT_FINISHED: - return Tcl_NewStringObj("external-dtd-subset-not-finished", -1); - case XML_ERR_DOCTYPE_NOT_FINISHED: - return Tcl_NewStringObj("document-type-declaration-not-finished", -1); - case XML_ERR_MISPLACED_CDATA_END: - return Tcl_NewStringObj("misplaced-cdata-section-end", -1); - case XML_ERR_CDATA_NOT_FINISHED: - return Tcl_NewStringObj("cdata-section-not-finished", -1); - case XML_ERR_RESERVED_XML_NAME: - return Tcl_NewStringObj("reserved-xml-name", -1); - case XML_ERR_SPACE_REQUIRED: - return Tcl_NewStringObj("space-required", -1); - case XML_ERR_SEPARATOR_REQUIRED: - return Tcl_NewStringObj("separator-required", -1); - case XML_ERR_NMTOKEN_REQUIRED: - return Tcl_NewStringObj("NMTOKEN-required", -1); - case XML_ERR_NAME_REQUIRED: - return Tcl_NewStringObj("NAME-required", -1); - case XML_ERR_PCDATA_REQUIRED: - return Tcl_NewStringObj("PCDATA-required", -1); - case XML_ERR_URI_REQUIRED: - return Tcl_NewStringObj("URI-required", -1); - case XML_ERR_PUBID_REQUIRED: - return Tcl_NewStringObj("public-identifier-required", -1); - case XML_ERR_LT_REQUIRED: - return Tcl_NewStringObj("less-than-character-required", -1); - case XML_ERR_GT_REQUIRED: - return Tcl_NewStringObj("greater-than-character-required", -1); - case XML_ERR_LTSLASH_REQUIRED: - return Tcl_NewStringObj("less-than-and-slash-characters-required", -1); - case XML_ERR_EQUAL_REQUIRED: - return Tcl_NewStringObj("equal-character-required", -1); - case XML_ERR_TAG_NAME_MISMATCH: - return Tcl_NewStringObj("tag-name-mismatch", -1); - case XML_ERR_TAG_NOT_FINISHED: - return Tcl_NewStringObj("tag-not-finished", -1); - case XML_ERR_STANDALONE_VALUE: - return Tcl_NewStringObj("standalone-value", -1); - case XML_ERR_ENCODING_NAME: - return Tcl_NewStringObj("encoding-name", -1); - case XML_ERR_HYPHEN_IN_COMMENT: - return Tcl_NewStringObj("hyphen-in-comment", -1); - case XML_ERR_INVALID_ENCODING: - return Tcl_NewStringObj("invalid-encoding", -1); - case XML_ERR_EXT_ENTITY_STANDALONE: - return Tcl_NewStringObj("external-entity-standalone", -1); - case XML_ERR_CONDSEC_INVALID: - return Tcl_NewStringObj("conditional-section-invalid", -1); - case XML_ERR_VALUE_REQUIRED: - return Tcl_NewStringObj("value-required", -1); - case XML_ERR_NOT_WELL_BALANCED: - return Tcl_NewStringObj("not-well-balanced", -1); - case XML_ERR_EXTRA_CONTENT: - return Tcl_NewStringObj("extra-content", -1); - case XML_ERR_ENTITY_CHAR_ERROR: - return Tcl_NewStringObj("entity-character-error", -1); - case XML_ERR_ENTITY_PE_INTERNAL: - return Tcl_NewStringObj("parameter-entity-internal-error", -1); - case XML_ERR_ENTITY_LOOP: - return Tcl_NewStringObj("entity-loop", -1); - case XML_ERR_ENTITY_BOUNDARY: - return Tcl_NewStringObj("entity-boundary", -1); - case XML_ERR_INVALID_URI: - return Tcl_NewStringObj("invalid-URI", -1); - case XML_ERR_URI_FRAGMENT: - return Tcl_NewStringObj("URI-fragment", -1); - case XML_WAR_CATALOG_PI: - return Tcl_NewStringObj("catalog-processing-instruction", -1); - case XML_ERR_NO_DTD: - return Tcl_NewStringObj("no-document-type-definition", -1); - case XML_ERR_CONDSEC_INVALID_KEYWORD: - return Tcl_NewStringObj("conditional-section-invalid-keyword", -1); - case XML_ERR_VERSION_MISSING: - return Tcl_NewStringObj("version-missing", -1); - case XML_WAR_UNKNOWN_VERSION: - return Tcl_NewStringObj("unknown-version", -1); - case XML_WAR_LANG_VALUE: - return Tcl_NewStringObj("lang-value", -1); - case XML_WAR_NS_URI: - return Tcl_NewStringObj("namespace-uri", -1); - case XML_WAR_NS_URI_RELATIVE: - return Tcl_NewStringObj("namespace-uri-relative", -1); - case XML_NS_ERR_XML_NAMESPACE: - return Tcl_NewStringObj("xml-namespace", -1); - case XML_NS_ERR_UNDEFINED_NAMESPACE: - return Tcl_NewStringObj("undefined-namespace", -1); - case XML_NS_ERR_QNAME: - return Tcl_NewStringObj("qualified-name", -1); - case XML_NS_ERR_ATTRIBUTE_REDEFINED: - return Tcl_NewStringObj("attribute-redefined", -1); - case XML_DTD_ATTRIBUTE_DEFAULT: - return Tcl_NewStringObj("attribute-default", -1); - case XML_DTD_ATTRIBUTE_REDEFINED: - return Tcl_NewStringObj("attribute-redefined", -1); - case XML_DTD_ATTRIBUTE_VALUE: - return Tcl_NewStringObj("attribute-value", -1); - case XML_DTD_CONTENT_ERROR: - return Tcl_NewStringObj("content-error", -1); - case XML_DTD_CONTENT_MODEL: - return Tcl_NewStringObj("content-model", -1); - case XML_DTD_CONTENT_NOT_DETERMINIST: - return Tcl_NewStringObj("content-model-not-deterministic", -1); - case XML_DTD_DIFFERENT_PREFIX: - return Tcl_NewStringObj("different-prefix", -1); - case XML_DTD_ELEM_DEFAULT_NAMESPACE: - return Tcl_NewStringObj("element-default-namespace", -1); - case XML_DTD_ELEM_NAMESPACE: - return Tcl_NewStringObj("element-namespace", -1); - case XML_DTD_ELEM_REDEFINED: - return Tcl_NewStringObj("element-type-redefined", -1); - case XML_DTD_EMPTY_NOTATION: - return Tcl_NewStringObj("empty-notation", -1); - case XML_DTD_ENTITY_TYPE: - return Tcl_NewStringObj("entity-type", -1); - case XML_DTD_ID_FIXED: - return Tcl_NewStringObj("ID-fixed", -1); - case XML_DTD_ID_REDEFINED: - return Tcl_NewStringObj("ID-redefined", -1); - case XML_DTD_ID_SUBSET: - return Tcl_NewStringObj("ID-subset", -1); - case XML_DTD_INVALID_CHILD: - return Tcl_NewStringObj("invalid-child", -1); - case XML_DTD_INVALID_DEFAULT: - return Tcl_NewStringObj("invalid-default", -1); - case XML_DTD_LOAD_ERROR: - return Tcl_NewStringObj("load-error", -1); - case XML_DTD_MISSING_ATTRIBUTE: - return Tcl_NewStringObj("missing-attribute", -1); - case XML_DTD_MIXED_CORRUPT: - return Tcl_NewStringObj("mixed-content-corrupt", -1); - case XML_DTD_MULTIPLE_ID: - return Tcl_NewStringObj("multiple-ID", -1); - case XML_DTD_NO_DOC: - return Tcl_NewStringObj("no-document", -1); - case XML_DTD_NO_DTD: - return Tcl_NewStringObj("no-document-type-definition", -1); - case XML_DTD_NO_ELEM_NAME: - return Tcl_NewStringObj("no-element-name", -1); - case XML_DTD_NO_PREFIX: - return Tcl_NewStringObj("no-prefix", -1); - case XML_DTD_NO_ROOT: - return Tcl_NewStringObj("no-root", -1); - case XML_DTD_NOTATION_REDEFINED: - return Tcl_NewStringObj("notation-redefined", -1); - case XML_DTD_NOTATION_VALUE: - return Tcl_NewStringObj("notation-value", -1); - case XML_DTD_NOT_EMPTY: - return Tcl_NewStringObj("not-empty", -1); - case XML_DTD_NOT_PCDATA: - return Tcl_NewStringObj("not-PCDATA", -1); - case XML_DTD_NOT_STANDALONE: - return Tcl_NewStringObj("not-standalone", -1); - case XML_DTD_ROOT_NAME: - return Tcl_NewStringObj("root-name", -1); - case XML_DTD_STANDALONE_WHITE_SPACE: - return Tcl_NewStringObj("standalone-white-space", -1); - case XML_DTD_UNKNOWN_ATTRIBUTE: - return Tcl_NewStringObj("unknown-attribute", -1); - case XML_DTD_UNKNOWN_ELEM: - return Tcl_NewStringObj("unknown-element-type", -1); - case XML_DTD_UNKNOWN_ENTITY: - return Tcl_NewStringObj("unknown-entity", -1); - case XML_DTD_UNKNOWN_ID: - return Tcl_NewStringObj("unknown-ID", -1); - case XML_DTD_UNKNOWN_NOTATION: - return Tcl_NewStringObj("unknown-notation", -1); - case XML_HTML_STRUCURE_ERROR: - return Tcl_NewStringObj("structure-error", -1); - case XML_HTML_UNKNOWN_TAG: - return Tcl_NewStringObj("unknown-tag", -1); - case XML_RNGP_ANYNAME_ATTR_ANCESTOR: - return Tcl_NewStringObj("anyname-attribute-ancestor", -1); - case XML_RNGP_ATTR_CONFLICT: - return Tcl_NewStringObj("attribute-conflict", -1); - case XML_RNGP_ATTRIBUTE_CHILDREN: - return Tcl_NewStringObj("attribute-children", -1); - case XML_RNGP_ATTRIBUTE_CONTENT: - return Tcl_NewStringObj("attribute-content", -1); - case XML_RNGP_ATTRIBUTE_EMPTY: - return Tcl_NewStringObj("attribute-empty", -1); - case XML_RNGP_ATTRIBUTE_NOOP: - return Tcl_NewStringObj("attribute-noop", -1); - case XML_RNGP_CHOICE_CONTENT: - return Tcl_NewStringObj("choice-content", -1); - case XML_RNGP_CREATE_FAILURE: - return Tcl_NewStringObj("create-failure", -1); - case XML_RNGP_DATA_CONTENT: - return Tcl_NewStringObj("data-content", -1); - case XML_RNGP_DEF_CHOICE_AND_INTERLEAVE: - return Tcl_NewStringObj("def-choice-and-interleave", -1); - case XML_RNGP_DEFINE_CREATE_FAILED: - return Tcl_NewStringObj("define-create-failed", -1); - case XML_RNGP_DEFINE_EMPTY: - return Tcl_NewStringObj("define-empty", -1); - case XML_RNGP_DEFINE_MISSING: - return Tcl_NewStringObj("define-missing", -1); - case XML_RNGP_DEFINE_NAME_MISSING: - return Tcl_NewStringObj("define-name-missing", -1); - case XML_RNGP_ELEM_CONTENT_EMPTY: - return Tcl_NewStringObj("elem-content-empty", -1); - case XML_RNGP_ELEM_CONTENT_ERROR: - return Tcl_NewStringObj("elem-content-error", -1); - case XML_RNGP_ELEMENT_EMPTY: - return Tcl_NewStringObj("element-empty", -1); - case XML_RNGP_ELEMENT_CONTENT: - return Tcl_NewStringObj("element-content", -1); - case XML_RNGP_ELEMENT_NAME: - return Tcl_NewStringObj("element-name", -1); - case XML_RNGP_ELEMENT_NO_CONTENT: - return Tcl_NewStringObj("element-no-content", -1); - case XML_RNGP_ELEM_TEXT_CONFLICT: - return Tcl_NewStringObj("element-text-conflict", -1); - case XML_RNGP_EMPTY: - return Tcl_NewStringObj("empty", -1); - case XML_RNGP_EMPTY_CONSTRUCT: - return Tcl_NewStringObj("empty-construct", -1); - case XML_RNGP_EMPTY_CONTENT: - return Tcl_NewStringObj("empty-content", -1); - case XML_RNGP_EMPTY_NOT_EMPTY: - return Tcl_NewStringObj("empty-not-empty", -1); - case XML_RNGP_ERROR_TYPE_LIB: - return Tcl_NewStringObj("error-type-library", -1); - case XML_RNGP_EXCEPT_EMPTY: - return Tcl_NewStringObj("except-empty", -1); - case XML_RNGP_EXCEPT_MISSING: - return Tcl_NewStringObj("except-missing", -1); - case XML_RNGP_EXCEPT_MULTIPLE: - return Tcl_NewStringObj("except-multiple", -1); - case XML_RNGP_EXCEPT_NO_CONTENT: - return Tcl_NewStringObj("except-no-content", -1); - case XML_RNGP_EXTERNALREF_EMTPY: - return Tcl_NewStringObj("external-reference-empty", -1); - case XML_RNGP_EXTERNAL_REF_FAILURE: - return Tcl_NewStringObj("external-reference-failure", -1); - case XML_RNGP_EXTERNALREF_RECURSE: - return Tcl_NewStringObj("external-reference-recursive", -1); - case XML_RNGP_FORBIDDEN_ATTRIBUTE: - return Tcl_NewStringObj("forbidden-attribute", -1); - case XML_RNGP_FOREIGN_ELEMENT: - return Tcl_NewStringObj("foreign-element", -1); - case XML_RNGP_GRAMMAR_CONTENT: - return Tcl_NewStringObj("grammar-content", -1); - case XML_RNGP_GRAMMAR_EMPTY: - return Tcl_NewStringObj("grammar-empty", -1); - case XML_RNGP_GRAMMAR_MISSING: - return Tcl_NewStringObj("grammar-missing", -1); - case XML_RNGP_GRAMMAR_NO_START: - return Tcl_NewStringObj("grammar-no-start", -1); - case XML_RNGP_GROUP_ATTR_CONFLICT: - return Tcl_NewStringObj("group-attribute-conflict-", -1); - case XML_RNGP_HREF_ERROR: - return Tcl_NewStringObj("href-error", -1); - case XML_RNGP_INCLUDE_EMPTY: - return Tcl_NewStringObj("include-empty", -1); - case XML_RNGP_INCLUDE_FAILURE: - return Tcl_NewStringObj("include-failure", -1); - case XML_RNGP_INCLUDE_RECURSE: - return Tcl_NewStringObj("include-recurse", -1); - case XML_RNGP_INTERLEAVE_ADD: - return Tcl_NewStringObj("interleave-add", -1); - case XML_RNGP_INTERLEAVE_CREATE_FAILED: - return Tcl_NewStringObj("interleave-create-failed", -1); - case XML_RNGP_INTERLEAVE_EMPTY: - return Tcl_NewStringObj("interleave-empty", -1); - case XML_RNGP_INTERLEAVE_NO_CONTENT: - return Tcl_NewStringObj("interleave-no-content", -1); - case XML_RNGP_INVALID_DEFINE_NAME: - return Tcl_NewStringObj("invalid-define-name", -1); - case XML_RNGP_INVALID_URI: - return Tcl_NewStringObj("invalid-URI", -1); - case XML_RNGP_INVALID_VALUE: - return Tcl_NewStringObj("invalid-value", -1); - case XML_RNGP_MISSING_HREF: - return Tcl_NewStringObj("missing-href", -1); - case XML_RNGP_NAME_MISSING: - return Tcl_NewStringObj("NAME-missing", -1); - case XML_RNGP_NEED_COMBINE: - return Tcl_NewStringObj("need-combine", -1); - case XML_RNGP_NOTALLOWED_NOT_EMPTY: - return Tcl_NewStringObj("notallowed-not-empty", -1); - case XML_RNGP_NSNAME_ATTR_ANCESTOR: - return Tcl_NewStringObj("nsname-attr-ancestor", -1); - case XML_RNGP_NSNAME_NO_NS: - return Tcl_NewStringObj("nsname-no-namespace", -1); - case XML_RNGP_PARAM_FORBIDDEN: - return Tcl_NewStringObj("param-forbidden", -1); - case XML_RNGP_PARAM_NAME_MISSING: - return Tcl_NewStringObj("param-name-missing", -1); - case XML_RNGP_PARENTREF_CREATE_FAILED: - return Tcl_NewStringObj("parentref-create-failed", -1); - case XML_RNGP_PARENTREF_NAME_INVALID: - return Tcl_NewStringObj("parentref-name-invalid", -1); - case XML_RNGP_PARENTREF_NO_NAME: - return Tcl_NewStringObj("parentref-no-name", -1); - case XML_RNGP_PARENTREF_NO_PARENT: - return Tcl_NewStringObj("parentref-no-parent", -1); - case XML_RNGP_PARENTREF_NOT_EMPTY: - return Tcl_NewStringObj("parentref-not-empty", -1); - case XML_RNGP_PARSE_ERROR: - return Tcl_NewStringObj("parse-error", -1); - case XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME: - return Tcl_NewStringObj("pat-anyname-except-anyname", -1); - case XML_RNGP_PAT_ATTR_ATTR: - return Tcl_NewStringObj("par-attr-attr", -1); - case XML_RNGP_PAT_ATTR_ELEM: - return Tcl_NewStringObj("pat-attr-elem", -1); - case XML_RNGP_PAT_DATA_EXCEPT_ATTR: - return Tcl_NewStringObj("pat-data-except-attr", -1); - case XML_RNGP_PAT_DATA_EXCEPT_ELEM: - return Tcl_NewStringObj("pat-data-except-elem", -1); - case XML_RNGP_PAT_DATA_EXCEPT_EMPTY: - return Tcl_NewStringObj("pat-data-except-empty", -1); - case XML_RNGP_PAT_DATA_EXCEPT_GROUP: - return Tcl_NewStringObj("pat-data-except-group", -1); - case XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE: - return Tcl_NewStringObj("pat-data-except-interleave", -1); - case XML_RNGP_PAT_DATA_EXCEPT_LIST: - return Tcl_NewStringObj("pat-data-except-list", -1); - case XML_RNGP_PAT_DATA_EXCEPT_ONEMORE: - return Tcl_NewStringObj("pat-data-except-onemore", -1); - case XML_RNGP_PAT_DATA_EXCEPT_REF: - return Tcl_NewStringObj("pat-data-except-ref", -1); - case XML_RNGP_PAT_DATA_EXCEPT_TEXT: - return Tcl_NewStringObj("pat-data-except-text", -1); - case XML_RNGP_PAT_LIST_ATTR: - return Tcl_NewStringObj("pat-list-attr", -1); - case XML_RNGP_PAT_LIST_ELEM: - return Tcl_NewStringObj("pat-list-elem", -1); - case XML_RNGP_PAT_LIST_INTERLEAVE: - return Tcl_NewStringObj("pat-list-interleave", -1); - case XML_RNGP_PAT_LIST_LIST: - return Tcl_NewStringObj("pat-list-list", -1); - case XML_RNGP_PAT_LIST_REF: - return Tcl_NewStringObj("pat-list-ref", -1); - case XML_RNGP_PAT_LIST_TEXT: - return Tcl_NewStringObj("pat-list-text", -1); - case XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME: - return Tcl_NewStringObj("pat-nsname-except-anyname", -1); - case XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME: - return Tcl_NewStringObj("pat-nsname-except-nsname", -1); - case XML_RNGP_PAT_ONEMORE_GROUP_ATTR: - return Tcl_NewStringObj("pat-onemore-group-attr", -1); - case XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR: - return Tcl_NewStringObj("pat-onemore-interleave-attr", -1); - case XML_RNGP_PAT_START_ATTR: - return Tcl_NewStringObj("pat-start-attr", -1); - case XML_RNGP_PAT_START_DATA: - return Tcl_NewStringObj("pat-start-data", -1); - case XML_RNGP_PAT_START_EMPTY: - return Tcl_NewStringObj("pat-start-empty", -1); - case XML_RNGP_PAT_START_GROUP: - return Tcl_NewStringObj("pat-start-group", -1); - case XML_RNGP_PAT_START_INTERLEAVE: - return Tcl_NewStringObj("pat-start-interleave", -1); - case XML_RNGP_PAT_START_LIST: - return Tcl_NewStringObj("pat-start-list", -1); - case XML_RNGP_PAT_START_ONEMORE: - return Tcl_NewStringObj("pat-start-onemore", -1); - case XML_RNGP_PAT_START_TEXT: - return Tcl_NewStringObj("pat-start-text", -1); - case XML_RNGP_PAT_START_VALUE: - return Tcl_NewStringObj("pat-start-value", -1); - case XML_RNGP_PREFIX_UNDEFINED: - return Tcl_NewStringObj("prefix-undefined", -1); - case XML_RNGP_REF_CREATE_FAILED: - return Tcl_NewStringObj("ref-create-failed", -1); - case XML_RNGP_REF_CYCLE: - return Tcl_NewStringObj("ref-cycle", -1); - case XML_RNGP_REF_NAME_INVALID: - return Tcl_NewStringObj("ref-name-invalid", -1); - case XML_RNGP_REF_NO_DEF: - return Tcl_NewStringObj("ref-no-def", -1); - case XML_RNGP_REF_NO_NAME: - return Tcl_NewStringObj("ref-no-name", -1); - case XML_RNGP_REF_NOT_EMPTY: - return Tcl_NewStringObj("ref-not-empty", -1); - case XML_RNGP_START_CHOICE_AND_INTERLEAVE: - return Tcl_NewStringObj("start-choice-and-interleave", -1); - case XML_RNGP_START_CONTENT: - return Tcl_NewStringObj("start-content", -1); - case XML_RNGP_START_EMPTY: - return Tcl_NewStringObj("start-empty", -1); - case XML_RNGP_START_MISSING: - return Tcl_NewStringObj("start-missing", -1); - case XML_RNGP_TEXT_EXPECTED: - return Tcl_NewStringObj("text-expected", -1); - case XML_RNGP_TEXT_HAS_CHILD: - return Tcl_NewStringObj("text-has-child", -1); - case XML_RNGP_TYPE_MISSING: - return Tcl_NewStringObj("type-missing", -1); - case XML_RNGP_TYPE_NOT_FOUND: - return Tcl_NewStringObj("type-not-found", -1); - case XML_RNGP_UNKNOWN_ATTRIBUTE: - return Tcl_NewStringObj("unknown-attribute", -1); - case XML_RNGP_UNKNOWN_COMBINE: - return Tcl_NewStringObj("unknown-combine", -1); - case XML_RNGP_UNKNOWN_CONSTRUCT: - return Tcl_NewStringObj("unknown-construct", -1); - case XML_RNGP_UNKNOWN_TYPE_LIB: - return Tcl_NewStringObj("unknown-type-lib", -1); - case XML_RNGP_URI_FRAGMENT: - return Tcl_NewStringObj("URI-fragment", -1); - case XML_RNGP_URI_NOT_ABSOLUTE: - return Tcl_NewStringObj("URI-not-absolute", -1); - case XML_RNGP_VALUE_EMPTY: - return Tcl_NewStringObj("value-empty", -1); - case XML_RNGP_VALUE_NO_CONTENT: - return Tcl_NewStringObj("value-no-content", -1); - case XML_RNGP_XMLNS_NAME: - return Tcl_NewStringObj("xmlns-name", -1); - case XML_RNGP_XML_NS: - return Tcl_NewStringObj("xml-ns", -1); - case XML_XPATH_EXPRESSION_OK: - return Tcl_NewStringObj("expression-ok", -1); - case XML_XPATH_NUMBER_ERROR: - return Tcl_NewStringObj("number-error", -1); - case XML_XPATH_UNFINISHED_LITERAL_ERROR: - return Tcl_NewStringObj("unfinished-literal", -1); - case XML_XPATH_START_LITERAL_ERROR: - return Tcl_NewStringObj("start-literal", -1); - case XML_XPATH_VARIABLE_REF_ERROR: - return Tcl_NewStringObj("variable-reference", -1); - case XML_XPATH_UNDEF_VARIABLE_ERROR: - return Tcl_NewStringObj("undefined-variable", -1); - case XML_XPATH_INVALID_PREDICATE_ERROR: - return Tcl_NewStringObj("invalid-predicate", -1); - case XML_XPATH_EXPR_ERROR: - return Tcl_NewStringObj("expression-error", -1); - case XML_XPATH_UNCLOSED_ERROR: - return Tcl_NewStringObj("unclosed", -1); - case XML_XPATH_UNKNOWN_FUNC_ERROR: - return Tcl_NewStringObj("unknown-function", -1); - case XML_XPATH_INVALID_OPERAND: - return Tcl_NewStringObj("invalid-operand", -1); - case XML_XPATH_INVALID_TYPE: - return Tcl_NewStringObj("invalid-type", -1); - case XML_XPATH_INVALID_ARITY: - return Tcl_NewStringObj("invalid-arity", -1); - case XML_XPATH_INVALID_CTXT_SIZE: - return Tcl_NewStringObj("invalid-context-size", -1); - case XML_XPATH_INVALID_CTXT_POSITION: - return Tcl_NewStringObj("invalid-context-position", -1); - case XML_XPATH_MEMORY_ERROR: - return Tcl_NewStringObj("memory-error", -1); - case XML_XPTR_SYNTAX_ERROR: - return Tcl_NewStringObj("syntax-error", -1); - case XML_XPTR_RESOURCE_ERROR: - return Tcl_NewStringObj("resource-error", -1); - case XML_XPTR_SUB_RESOURCE_ERROR: - return Tcl_NewStringObj("sub-resource-error", -1); - case XML_XPATH_UNDEF_PREFIX_ERROR: - return Tcl_NewStringObj("undefined-prefix", -1); - case XML_XPATH_ENCODING_ERROR: - return Tcl_NewStringObj("encoding-error", -1); - case XML_XPATH_INVALID_CHAR_ERROR: - return Tcl_NewStringObj("invalid-character", -1); - case XML_TREE_INVALID_HEX: - return Tcl_NewStringObj("invalid-hex", -1); - case XML_TREE_INVALID_DEC: - return Tcl_NewStringObj("invalid-decimal", -1); - case XML_TREE_UNTERMINATED_ENTITY: - return Tcl_NewStringObj("unterminated-entity", -1); - case XML_SAVE_NOT_UTF8: - return Tcl_NewStringObj("not-utf8", -1); - case XML_SAVE_CHAR_INVALID: - return Tcl_NewStringObj("invalid-character", -1); - case XML_SAVE_NO_DOCTYPE: - return Tcl_NewStringObj("no-document-type-declaration", -1); - case XML_SAVE_UNKNOWN_ENCODING: - return Tcl_NewStringObj("unknown-encoding", -1); - case XML_REGEXP_COMPILE_ERROR: - return Tcl_NewStringObj("compile-error", -1); - case XML_IO_UNKNOWN: - return Tcl_NewStringObj("unknown", -1); - case XML_IO_EACCES: - return Tcl_NewStringObj("eacces", -1); - case XML_IO_EAGAIN: - return Tcl_NewStringObj("eagain", -1); - case XML_IO_EBADF: - return Tcl_NewStringObj("ebadf", -1); - case XML_IO_EBADMSG: - return Tcl_NewStringObj("ebadmsg", -1); - case XML_IO_EBUSY: - return Tcl_NewStringObj("ebusy", -1); - case XML_IO_ECANCELED: - return Tcl_NewStringObj("ecanceled", -1); - case XML_IO_ECHILD: - return Tcl_NewStringObj("echild", -1); - case XML_IO_EDEADLK: - return Tcl_NewStringObj("edeadlk", -1); - case XML_IO_EDOM: - return Tcl_NewStringObj("edom", -1); - case XML_IO_EEXIST: - return Tcl_NewStringObj("eexist", -1); - case XML_IO_EINPROGRESS: - return Tcl_NewStringObj("einprogress", -1); - case XML_IO_EINTR: - return Tcl_NewStringObj("eintr", -1); - case XML_IO_EINVAL: - return Tcl_NewStringObj("einval", -1); - case XML_IO_EIO: - return Tcl_NewStringObj("eio", -1); - case XML_IO_EISDIR: - return Tcl_NewStringObj("eisdir", -1); - case XML_IO_EMFILE: - return Tcl_NewStringObj("emfile", -1); - case XML_IO_EMLINK: - return Tcl_NewStringObj("emlink", -1); - case XML_IO_EMSGSIZE: - return Tcl_NewStringObj("emsgsize", -1); - case XML_IO_ENAMETOOLONG: - return Tcl_NewStringObj("enametoolong", -1); - case XML_IO_ENFILE: - return Tcl_NewStringObj("enfile", -1); - case XML_IO_ENODEV: - return Tcl_NewStringObj("enodev", -1); - case XML_IO_ENOENT: - return Tcl_NewStringObj("enoent", -1); - case XML_IO_ENOEXEC: - return Tcl_NewStringObj("enoexec", -1); - case XML_IO_ENOLCK: - return Tcl_NewStringObj("enolck", -1); - case XML_IO_ENOMEM: - return Tcl_NewStringObj("enomem", -1); - case XML_IO_ENOSPC: - return Tcl_NewStringObj("enospc", -1); - case XML_IO_ENOSYS: - return Tcl_NewStringObj("enosys", -1); - case XML_IO_ENOTDIR: - return Tcl_NewStringObj("enotdir", -1); - case XML_IO_ENOTEMPTY: - return Tcl_NewStringObj("enotempty", -1); - case XML_IO_ENOTSUP: - return Tcl_NewStringObj("enotsup", -1); - case XML_IO_ENOTTY: - return Tcl_NewStringObj("enotty", -1); - case XML_IO_ENXIO: - return Tcl_NewStringObj("enxio", -1); - case XML_IO_EPERM: - return Tcl_NewStringObj("eperm", -1); - case XML_IO_EPIPE: - return Tcl_NewStringObj("epipe", -1); - case XML_IO_ERANGE: - return Tcl_NewStringObj("erange", -1); - case XML_IO_EROFS: - return Tcl_NewStringObj("erofs", -1); - case XML_IO_ESPIPE: - return Tcl_NewStringObj("espipe", -1); - case XML_IO_ESRCH: - return Tcl_NewStringObj("esrch", -1); - case XML_IO_ETIMEDOUT: - return Tcl_NewStringObj("etimedout", -1); - case XML_IO_EXDEV: - return Tcl_NewStringObj("exdev", -1); - case XML_IO_NETWORK_ATTEMPT: - return Tcl_NewStringObj("network-attempt", -1); - case XML_IO_ENCODER: - return Tcl_NewStringObj("encoder", -1); - case XML_IO_FLUSH: - return Tcl_NewStringObj("flush", -1); - case XML_IO_WRITE: - return Tcl_NewStringObj("write", -1); - case XML_IO_NO_INPUT: - return Tcl_NewStringObj("no-input", -1); - case XML_IO_BUFFER_FULL: - return Tcl_NewStringObj("buffer-full", -1); - case XML_IO_LOAD_ERROR: - return Tcl_NewStringObj("load-error", -1); - case XML_IO_ENOTSOCK: - return Tcl_NewStringObj("enotsock", -1); - case XML_IO_EISCONN: - return Tcl_NewStringObj("eisconn", -1); - case XML_IO_ECONNREFUSED: - return Tcl_NewStringObj("econnrefused", -1); - case XML_IO_ENETUNREACH: - return Tcl_NewStringObj("enetunreach", -1); - case XML_IO_EADDRINUSE: - return Tcl_NewStringObj("eaddrinuse", -1); - case XML_IO_EALREADY: - return Tcl_NewStringObj("ealready", -1); - case XML_IO_EAFNOSUPPORT: - return Tcl_NewStringObj("eafnosupport", -1); - case XML_XINCLUDE_RECURSION: - return Tcl_NewStringObj("recursion", -1); - case XML_XINCLUDE_PARSE_VALUE: - return Tcl_NewStringObj("parse-value", -1); - case XML_XINCLUDE_ENTITY_DEF_MISMATCH: - return Tcl_NewStringObj("entity-def-mismatch", -1); - case XML_XINCLUDE_NO_HREF: - return Tcl_NewStringObj("no-href", -1); - case XML_XINCLUDE_NO_FALLBACK: - return Tcl_NewStringObj("no-fallback", -1); - case XML_XINCLUDE_HREF_URI: - return Tcl_NewStringObj("href-URI", -1); - case XML_XINCLUDE_TEXT_FRAGMENT: - return Tcl_NewStringObj("text-fragment", -1); - case XML_XINCLUDE_TEXT_DOCUMENT: - return Tcl_NewStringObj("text-document", -1); - case XML_XINCLUDE_INVALID_CHAR: - return Tcl_NewStringObj("invalid-character", -1); - case XML_XINCLUDE_BUILD_FAILED: - return Tcl_NewStringObj("build-failed", -1); - case XML_XINCLUDE_UNKNOWN_ENCODING: - return Tcl_NewStringObj("unknown-encoding", -1); - case XML_XINCLUDE_MULTIPLE_ROOT: - return Tcl_NewStringObj("multiple-root", -1); - case XML_XINCLUDE_XPTR_FAILED: - return Tcl_NewStringObj("XPointer-failed", -1); - case XML_XINCLUDE_XPTR_RESULT: - return Tcl_NewStringObj("XPointer-result", -1); - case XML_XINCLUDE_INCLUDE_IN_INCLUDE: - return Tcl_NewStringObj("include-in-include", -1); - case XML_XINCLUDE_FALLBACKS_IN_INCLUDE: - return Tcl_NewStringObj("fallbacks-in-include", -1); - case XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE: - return Tcl_NewStringObj("fallback-not-in-include", -1); - case XML_CATALOG_MISSING_ATTR: - return Tcl_NewStringObj("missing-attribute", -1); - case XML_CATALOG_ENTRY_BROKEN: - return Tcl_NewStringObj("entry-broken", -1); - case XML_CATALOG_PREFER_VALUE: - return Tcl_NewStringObj("prefer-value", -1); - case XML_CATALOG_NOT_CATALOG: - return Tcl_NewStringObj("not-catalog", -1); - case XML_CATALOG_RECURSION: - return Tcl_NewStringObj("recursion", -1); - case XML_SCHEMAP_PREFIX_UNDEFINED: - return Tcl_NewStringObj("prefix-undefined", -1); - case XML_SCHEMAP_ATTRFORMDEFAULT_VALUE: - return Tcl_NewStringObj("attribute-form-default-value", -1); - case XML_SCHEMAP_ATTRGRP_NONAME_NOREF: - return Tcl_NewStringObj("attribute-group-noname-noref", -1); - case XML_SCHEMAP_ATTR_NONAME_NOREF: - return Tcl_NewStringObj("attribute-noname-noref", -1); - case XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF: - return Tcl_NewStringObj("complexType-noname-noref", -1); - case XML_SCHEMAP_ELEMFORMDEFAULT_VALUE: - return Tcl_NewStringObj("element-form-default-value", -1); - case XML_SCHEMAP_ELEM_NONAME_NOREF: - return Tcl_NewStringObj("element-noname-noref", -1); - case XML_SCHEMAP_EXTENSION_NO_BASE: - return Tcl_NewStringObj("extension-no-base", -1); - case XML_SCHEMAP_FACET_NO_VALUE: - return Tcl_NewStringObj("facet-no-value", -1); - case XML_SCHEMAP_FAILED_BUILD_IMPORT: - return Tcl_NewStringObj("failed-build-import", -1); - case XML_SCHEMAP_GROUP_NONAME_NOREF: - return Tcl_NewStringObj("group-noname-noref", -1); - case XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI: - return Tcl_NewStringObj("import-namespace-not-URI", -1); - case XML_SCHEMAP_IMPORT_REDEFINE_NSNAME: - return Tcl_NewStringObj("import-redefine-nsname", -1); - case XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI: - return Tcl_NewStringObj("import-schema-not-URI", -1); - case XML_SCHEMAP_INVALID_BOOLEAN: - return Tcl_NewStringObj("invalid-boolean", -1); - case XML_SCHEMAP_INVALID_ENUM: - return Tcl_NewStringObj("invalid-enumeration", -1); - case XML_SCHEMAP_INVALID_FACET: - return Tcl_NewStringObj("invalid-facet", -1); - case XML_SCHEMAP_INVALID_FACET_VALUE: - return Tcl_NewStringObj("invalid-facet-value", -1); - case XML_SCHEMAP_INVALID_MAXOCCURS: - return Tcl_NewStringObj("invalid-maxOccurs", -1); - case XML_SCHEMAP_INVALID_MINOCCURS: - return Tcl_NewStringObj("invalid-minOccurs", -1); - case XML_SCHEMAP_INVALID_REF_AND_SUBTYPE: - return Tcl_NewStringObj("invalid-ref-and-subtype", -1); - case XML_SCHEMAP_INVALID_WHITE_SPACE: - return Tcl_NewStringObj("invalid-white-space", -1); - case XML_SCHEMAP_NOATTR_NOREF: - return Tcl_NewStringObj("noattr-noref", -1); - case XML_SCHEMAP_NOTATION_NO_NAME: - return Tcl_NewStringObj("notation-no-name", -1); - case XML_SCHEMAP_NOTYPE_NOREF: - return Tcl_NewStringObj("notype-noref", -1); - case XML_SCHEMAP_REF_AND_SUBTYPE: - return Tcl_NewStringObj("ref-and-subtype", -1); - case XML_SCHEMAP_RESTRICTION_NONAME_NOREF: - return Tcl_NewStringObj("restriction-noname-noref", -1); - case XML_SCHEMAP_SIMPLETYPE_NONAME: - return Tcl_NewStringObj("simpleType-noname", -1); - case XML_SCHEMAP_TYPE_AND_SUBTYPE: - return Tcl_NewStringObj("type-and-subtype", -1); - case XML_SCHEMAP_UNKNOWN_ALL_CHILD: - return Tcl_NewStringObj("unknown-all-child", -1); - case XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD: - return Tcl_NewStringObj("unknown-anyattribute-child", -1); - case XML_SCHEMAP_UNKNOWN_ATTR_CHILD: - return Tcl_NewStringObj("unknown-attribute-child", -1); - case XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD: - return Tcl_NewStringObj("unknown-attributeGroup-child", -1); - case XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP: - return Tcl_NewStringObj("unknown-attributeGroup", -1); - case XML_SCHEMAP_UNKNOWN_BASE_TYPE: - return Tcl_NewStringObj("unknown-base-type", -1); - case XML_SCHEMAP_UNKNOWN_CHOICE_CHILD: - return Tcl_NewStringObj("unknown-choice-child", -1); - case XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD: - return Tcl_NewStringObj("unknown-complexContent-child", -1); - case XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD: - return Tcl_NewStringObj("unknown-complexType-child", -1); - case XML_SCHEMAP_UNKNOWN_ELEM_CHILD: - return Tcl_NewStringObj("unknown-element-child", -1); - case XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD: - return Tcl_NewStringObj("unknown-extension-child", -1); - case XML_SCHEMAP_UNKNOWN_FACET_CHILD: - return Tcl_NewStringObj("unknown-facet-child", -1); - case XML_SCHEMAP_UNKNOWN_FACET_TYPE: - return Tcl_NewStringObj("unknown-facet-type", -1); - case XML_SCHEMAP_UNKNOWN_GROUP_CHILD: - return Tcl_NewStringObj("unknown-group-child", -1); - case XML_SCHEMAP_UNKNOWN_IMPORT_CHILD: - return Tcl_NewStringObj("unknown-import-child", -1); - case XML_SCHEMAP_UNKNOWN_LIST_CHILD: - return Tcl_NewStringObj("unknown-list-child", -1); - case XML_SCHEMAP_UNKNOWN_NOTATION_CHILD: - return Tcl_NewStringObj("unknown-notation-child", -1); - case XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD: - return Tcl_NewStringObj("unknown-processContent-child", -1); - case XML_SCHEMAP_UNKNOWN_REF: - return Tcl_NewStringObj("unknown-ref", -1); - case XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD: - return Tcl_NewStringObj("unknown-restriction-child", -1); - case XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD: - return Tcl_NewStringObj("unknown-schemas-child", -1); - case XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD: - return Tcl_NewStringObj("unknown-sequence-child", -1); - case XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD: - return Tcl_NewStringObj("unknown-simpleType-child", -1); - case XML_SCHEMAP_UNKNOWN_TYPE: - return Tcl_NewStringObj("unknown-type", -1); - case XML_SCHEMAP_UNKNOWN_UNION_CHILD: - return Tcl_NewStringObj("unknown-union-child", -1); - case XML_SCHEMAP_ELEM_DEFAULT_FIXED: - return Tcl_NewStringObj("element-default-fixed", -1); - case XML_SCHEMAP_REGEXP_INVALID: - return Tcl_NewStringObj("regexp-invalid", -1); - case XML_SCHEMAP_FAILED_LOAD: - return Tcl_NewStringObj("failed-load", -1); - case XML_SCHEMAP_NOTHING_TO_PARSE: - return Tcl_NewStringObj("nothing-to-parse", -1); - case XML_SCHEMAP_NOROOT: - return Tcl_NewStringObj("no-root", -1); - case XML_SCHEMAP_REDEFINED_GROUP: - return Tcl_NewStringObj("redefined-group", -1); - case XML_SCHEMAP_REDEFINED_TYPE: - return Tcl_NewStringObj("redefined-type", -1); - case XML_SCHEMAP_REDEFINED_ELEMENT: - return Tcl_NewStringObj("redefined-element", -1); - case XML_SCHEMAP_REDEFINED_ATTRGROUP: - return Tcl_NewStringObj("redefined-attributeGroup", -1); - case XML_SCHEMAP_REDEFINED_ATTR: - return Tcl_NewStringObj("redefined-attribute", -1); - case XML_SCHEMAP_REDEFINED_NOTATION: - return Tcl_NewStringObj("redefined-notation", -1); - case XML_SCHEMAP_FAILED_PARSE: - return Tcl_NewStringObj("failed-parse", -1); - case XML_SCHEMAV_NOROOT: - return Tcl_NewStringObj("no-root", -1); - case XML_SCHEMAV_UNDECLAREDELEM: - return Tcl_NewStringObj("undeclared-element", -1); - case XML_SCHEMAV_NOTTOPLEVEL: - return Tcl_NewStringObj("not-toplevel", -1); - case XML_SCHEMAV_MISSING: - return Tcl_NewStringObj("missing", -1); - case XML_SCHEMAV_WRONGELEM: - return Tcl_NewStringObj("wrong-element", -1); - case XML_SCHEMAV_NOTYPE: - return Tcl_NewStringObj("no-type", -1); - case XML_SCHEMAV_NOROLLBACK: - return Tcl_NewStringObj("no-rollback", -1); - case XML_SCHEMAV_ISABSTRACT: - return Tcl_NewStringObj("is-abstract", -1); - case XML_SCHEMAV_NOTEMPTY: - return Tcl_NewStringObj("not-empty", -1); - case XML_SCHEMAV_ELEMCONT: - return Tcl_NewStringObj("element-content", -1); - case XML_SCHEMAV_HAVEDEFAULT: - return Tcl_NewStringObj("have-default", -1); - case XML_SCHEMAV_NOTNILLABLE: - return Tcl_NewStringObj("not-nillable", -1); - case XML_SCHEMAV_EXTRACONTENT: - return Tcl_NewStringObj("extra-content", -1); - case XML_SCHEMAV_INVALIDATTR: - return Tcl_NewStringObj("invalid-attribute", -1); - case XML_SCHEMAV_INVALIDELEM: - return Tcl_NewStringObj("invalid-element", -1); - case XML_SCHEMAV_NOTDETERMINIST: - return Tcl_NewStringObj("not-deterministic", -1); - case XML_SCHEMAV_CONSTRUCT: - return Tcl_NewStringObj("construct", -1); - case XML_SCHEMAV_INTERNAL: - return Tcl_NewStringObj("internal", -1); - case XML_SCHEMAV_NOTSIMPLE: - return Tcl_NewStringObj("not-simple", -1); - case XML_SCHEMAV_ATTRUNKNOWN: - return Tcl_NewStringObj("attribute-unknown", -1); - case XML_SCHEMAV_ATTRINVALID: - return Tcl_NewStringObj("attribute-invalid", -1); - case XML_SCHEMAV_VALUE: - return Tcl_NewStringObj("value", -1); - case XML_SCHEMAV_FACET: - return Tcl_NewStringObj("facet", -1); - case XML_XPTR_UNKNOWN_SCHEME: - return Tcl_NewStringObj("unknown-scheme", -1); - case XML_XPTR_CHILDSEQ_START: - return Tcl_NewStringObj("child-sequence-start", -1); - case XML_XPTR_EVAL_FAILED: - return Tcl_NewStringObj("eval-failed", -1); - case XML_XPTR_EXTRA_OBJECTS: - return Tcl_NewStringObj("extra-objects", -1); - case XML_C14N_CREATE_CTXT: - return Tcl_NewStringObj("create-context", -1); - case XML_C14N_REQUIRES_UTF8: - return Tcl_NewStringObj("requires-utf-8", -1); - case XML_C14N_CREATE_STACK: - return Tcl_NewStringObj("create-stack", -1); - case XML_C14N_INVALID_NODE: - return Tcl_NewStringObj("invalid-node", -1); - case XML_FTP_PASV_ANSWER: - return Tcl_NewStringObj("pasv-answer", -1); - case XML_FTP_EPSV_ANSWER: - return Tcl_NewStringObj("epsv-answer", -1); - case XML_FTP_ACCNT: - return Tcl_NewStringObj("account", -1); - case XML_HTTP_URL_SYNTAX: - return Tcl_NewStringObj("URL-syntax", -1); - case XML_HTTP_USE_IP: - return Tcl_NewStringObj("use-IP", -1); - case XML_HTTP_UNKNOWN_HOST: - return Tcl_NewStringObj("unknown-host", -1); - default: - return Tcl_NewIntObj(code); - } -} - -void -TclXML_libxml2_ErrorHandler (ctx, error) - void *ctx; /* ignore - depends on context */ - xmlErrorPtr error; -{ - ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - Tcl_Obj *objPtr; - - if (tsdPtr->errorInfoPtr->listPtr == NULL) { - tsdPtr->errorInfoPtr->listPtr = Tcl_NewObj(); - Tcl_IncrRefCount(tsdPtr->errorInfoPtr->listPtr); - } - - objPtr = Tcl_NewListObj(0, NULL); - - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, - ErrorDomainToString(error->domain)); - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, - ErrorLevelToString(error->level)); - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, - ErrorCodeToString(error->code)); - - if (error->node == NULL) { - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, Tcl_NewObj()); - } else if (((xmlDocPtr) error->node)->type == XML_DOCUMENT_NODE) { - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, - TclXML_libxml2_CreateObjFromDoc((xmlDocPtr) error->node)); - } else if (tsdPtr->errorInfoPtr->nodeHandlerProc != NULL) { - Tcl_Obj *nodeObjPtr; - - nodeObjPtr = (tsdPtr->errorInfoPtr->nodeHandlerProc)(tsdPtr->errorInfoPtr->interp, (ClientData) error->node); - if (nodeObjPtr != NULL) { - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, nodeObjPtr); - } else { - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, Tcl_NewObj()); - } - } else { - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, Tcl_NewObj()); - } - - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, - Tcl_NewIntObj(error->line)); - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, - Tcl_NewStringObj(error->message, -1)); - - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, - Tcl_NewIntObj(error->int1)); - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, - Tcl_NewIntObj(error->int2)); - if (error->str1) { - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, - Tcl_NewStringObj(error->str1, -1)); - } - if (error->str2) { - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, - Tcl_NewStringObj(error->str2, -1)); - } - if (error->str3) { - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, objPtr, - Tcl_NewStringObj(error->str3, -1)); - } - - Tcl_ListObjAppendElement(tsdPtr->errorInfoPtr->interp, tsdPtr->errorInfoPtr->listPtr, objPtr); -} - -void -TclXML_libxml2_ResetError(interp) - Tcl_Interp *interp; -{ - ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - - if (tsdPtr->errorInfoPtr->listPtr != NULL) { - Tcl_DecrRefCount(tsdPtr->errorInfoPtr->listPtr); - tsdPtr->errorInfoPtr->listPtr = NULL; - } -} - -Tcl_Obj * -TclXML_libxml2_GetErrorObj(interp) - Tcl_Interp *interp; -{ - ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - - return tsdPtr->errorInfoPtr->listPtr; -} - -void -TclXML_libxml2_SetErrorNodeFunc(interp, proc) - Tcl_Interp *interp; - TclXML_ErrorNodeHandlerProc *proc; -{ - ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - - if (!tsdPtr->initialized) { - Tcl_SetObjResult(interp, Tcl_NewStringObj("internal error: docObj data not initialized", -1)); - Tcl_BackgroundError(interp); - return; - } - - tsdPtr->errorInfoPtr->nodeHandlerProc = proc; -} - |