--- parser3/src/classes/xnode.C 2020/12/15 17:10:29 1.97 +++ parser3/src/classes/xnode.C 2026/09/20 00:27:40 1.104 @@ -1,8 +1,8 @@ /** @file Parser: @b dom parser class. - Copyright (c) 2001-2020 Art. Lebedev Studio (http://www.artlebedev.com) - Author: Alexandr Petrosian (http://paf.design.ru) + Copyright (c) 2001-2026 Art. Lebedev Studio (https://www.artlebedev.com) + Authors: Konstantin Morshnev , Alexandr Petrosian */ #include "classes.h" #ifdef XML @@ -21,7 +21,7 @@ #include "libxml/xpath.h" #include "libxml/xpathInternals.h" -volatile const char * IDENT_XNODE_C="$Id: xnode.C,v 1.97 2020/12/15 17:10:29 moko Exp $" IDENT_XNODE_H; +volatile const char * IDENT_XNODE_C="$Id: xnode.C,v 1.104 2026/09/20 00:27:40 moko Exp $" IDENT_XNODE_H; // classes @@ -95,12 +95,10 @@ private: xmlNode& as_node(MethodParams& params, int index, const char* msg) { Value& value=params.as_no_junction(index, msg); - if(Value* vxnode=value.as(VXNODE_TYPE)) - return static_cast(vxnode)->get_xmlnode(); + if(VXnode* vxnode=dynamic_cast(&value)) + return vxnode->get_xmlnode(); else - throw Exception(PARSER_RUNTIME, - 0, - msg); + throw Exception(PARSER_RUNTIME, 0, msg); } xmlChar* as_xmlchar(Request& r, MethodParams& params, int index, const char* msg) { @@ -232,9 +230,7 @@ struct AccumulateFoundInfo #endif static void AccumulateFound(xmlNode& node, AccumulateFoundInfo* info) { - info->hash->put( - String::Body::Format(info->index++), - &info->vdoc->wrap(node)); + info->hash->put(String::Body::uitoa(info->index++), &info->vdoc->wrap(node)); } template static void pa_xmlNamedPreorderTraversal ( @@ -725,9 +721,7 @@ static void selectNodesHandler(Request&, if(int size=res->nodesetval->nodeNr) { HashStringValue& hash=vhash.hash(); for(int i=0; inodesetval->nodeTab[i])); + hash.put(String::Body::uitoa(i), &xdoc.wrap(*res->nodesetval->nodeTab[i])); } break; default: @@ -937,21 +931,21 @@ MXnode::MXnode(const char* aname): Metho // consts -#define CONST(name) consts.put(#name, new VInt(XML_##name)) -#define CONST2(name, value) consts.put(#name, new VInt(value)) +#define PA_CONST(name) consts.put(#name, new VInt(XML_##name)) +#define PA_CONST2(name, value) consts.put(#name, new VInt(value)) - CONST(ELEMENT_NODE); - CONST(ATTRIBUTE_NODE); - CONST(TEXT_NODE); - CONST(CDATA_SECTION_NODE); - CONST2(ENTITY_REFERENCE_NODE, XML_ENTITY_REF_NODE); - CONST(ENTITY_NODE); - CONST2(PROCESSING_INSTRUCTION_NODE, XML_PI_NODE); - CONST(COMMENT_NODE); - CONST(DOCUMENT_NODE); - CONST(DOCUMENT_TYPE_NODE); - CONST2(DOCUMENT_FRAGMENT_NODE, XML_DOCUMENT_FRAG_NODE); - CONST(NOTATION_NODE); + PA_CONST(ELEMENT_NODE); + PA_CONST(ATTRIBUTE_NODE); + PA_CONST(TEXT_NODE); + PA_CONST(CDATA_SECTION_NODE); + PA_CONST2(ENTITY_REFERENCE_NODE, XML_ENTITY_REF_NODE); + PA_CONST(ENTITY_NODE); + PA_CONST2(PROCESSING_INSTRUCTION_NODE, XML_PI_NODE); + PA_CONST(COMMENT_NODE); + PA_CONST(DOCUMENT_NODE); + PA_CONST(DOCUMENT_TYPE_NODE); + PA_CONST2(DOCUMENT_FRAGMENT_NODE, XML_DOCUMENT_FRAG_NODE); + PA_CONST(NOTATION_NODE); } #endif