/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is the XML::Sablotron module. * * The Initial Developer of the Original Code is Ginfer Alliance Ltd. * Portions created by Ginger Alliance are * Copyright (C) 1999-2000 Ginger Alliance Ltd.. * All Rights Reserved. * * Contributor(s): Nicolas Trebst, science+computing ag * n.trebst@science-computing.de * * Alternatively, the contents of this file may be used under the * terms of the GNU General Public License Version 2 or later (the * "GPL"), in which case the provisions of the GPL are applicable * instead of those above. If you wish to allow use of your * version of this file only under the terms of the GPL and not to * allow others to use your version of this file under the MPL, * indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by * the GPL. If you do not delete the provisions above, a recipient * may use your version of this file under either the MPL or the * GPL. */ #ifndef CommonHIncl #define CommonHIncl #include "EXTERN.h" #include "perl.h" #include "XSUB.h" /* include declare macro via sxpath -> sablot() */ #include /*********************************************************** * useful macros ***********************************************************/ #define SIT_HANDLE(sit) (SablotSituation)SvIV(*hv_fetch((HV*)SvRV(sit), "_handle", 7, 0)) #define NODE_HANDLE(node) (NodeHandle)SvIV(*hv_fetch((HV*)SvRV(node), "_handle", 7, 0)) #define VALIDATE_RV(sv) (! SvOK(sv) || (SvROK(sv) && \ (SvTYPE(SvRV(sv)) == SVt_PVCV))) #define VALIDATE_HASHREF(object) (SvOK(object) && (SvROK(object)) && \ (SvTYPE(SvRV(object)) == SVt_PVHV)) #define GET_PROCESSOR(object) (void*)(SvIV(*hv_fetch((HV*)SvRV(object), \ "_handle", 7, 0))) #define DOC_HANDLE(doc) (SDOM_Document)SvIV(*hv_fetch((HV*)SvRV(doc), \ "_handle", 7, 0)) /* classes */ /* must match to SDOM_NodeType */ #define CLASSNAMES \ { \ "", /* zero is not defined */ \ "XML::Sablotron::DOM::Element", /* 1 */ \ "XML::Sablotron::DOM::Attribute", /* 2 */ \ "XML::Sablotron::DOM::Text", /* 3 */ \ "XML::Sablotron::DOM::CDATASection", /* 4 */ \ "XML::Sablotron::DOM::EntityReference", /* 5 */ \ "XML::Sablotron::DOM::Entity", /* 6 */ \ "XML::Sablotron::DOM::ProcessingInstruction", /* 7 */ \ "XML::Sablotron::DOM::Comment", /* 8 */ \ "XML::Sablotron::DOM::Document", /* 9 */ \ "XML::Sablotron::DOM::DocumentType", /* 10 */ \ "XML::Sablotron::DOM::DocumentFragment", /* 11 */ \ "XML::Sablotron::DOM::Notation", /* 12 */ \ "XML::Sablotron::SXP::Namespace" /* 13 */ \ } /* must match to SXP_ExpressionType */ #define EXPRESSIONTYPES \ { \ "XML::Sablotron::SXP::None", \ "XML::Sablotron::SXP::Number", \ "XML::Sablotron::SXP::String", \ "XML::Sablotron::SXP::Boolean", \ "XML::Sablotron::SXP::Nodeset" \ } /* keep sync with SDOM_Exception enumeration */ #define ERRORNAMES \ { \ "DOM_OK", /* 0 */ \ "INDEX_SIZE_ERR", /* 1 */ \ "DOMSTRING_SIZE_ERR", /* 2 */ \ "HIERARCHY_REQUEST_ERR", /* 3 */ \ "WRONG_DOCUMENT_ERR", /* 4 */ \ "INVALID_CHARACTER_ERR", /* 5 */ \ "NO_DATA_ALLOWED_ERR", /* 6 */ \ "NO_MODIFICATION_ALLOWED_ERR", /* 7 */ \ "NOT_FOUND_ERR", /* 8 */ \ "NOT_SUPPORTED_ERR", /* 9 */ \ "INUSE_ATTRIBUTE_ERR", /* 10 */ \ "INVALID_STATE_ERR", /* 11 */ \ "SYNTAX_ERR", /* 12 */ \ "INVALID_MODIFICATION_ERR", /* 13 */ \ "NAMESPACE_ERR", /* 14 */ \ "INVALID_ACCESS_ERR", /* 15 */ \ /*non spec errors - continued*/ \ "INVALID_NODE_TYPE_ERR", /* 16 */ \ "QUERY_PARSE_ERR", /* 17 */ \ "QUERY_EXECUTION_ERR", /* 18 */ \ "NOT_OK" /* 19 */ \ } Declare ( void perl_report_err( const char * msg ); ) #endif /* defined CommonHIncl */