X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fxml%2FParser.cpp;h=b2d1e5119240f7f9f593c2863b4832e08aa618d7;hb=5a6cba5fde2b2f538a7515f8293cc0a8d9589dfa;hp=4c621fc7d9d285359a78f8995de90b24e436a5b5;hpb=4e12ac57e93c052f716a6305ad8fc099c45899d1;p=anna.git diff --git a/source/xml/Parser.cpp b/source/xml/Parser.cpp index 4c621fc..b2d1e51 100644 --- a/source/xml/Parser.cpp +++ b/source/xml/Parser.cpp @@ -1,37 +1,9 @@ -// ANNA - Anna is Not 'N' Anymore -// -// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo -// -// https://bitbucket.org/testillano/anna -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: eduardo.ramos.testillano@gmail.com -// cisco.tierra@gmail.com +// ANNA - Anna is Not Nothingness Anymore // +// // +// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo // +// // +// See project site at http://redmine.teslayout.com/projects/anna-suite // +// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE // #include @@ -75,7 +47,7 @@ Parser::~Parser() { } const Node* Parser::apply(const Document& document) -throw(RuntimeException) { +noexcept(false) { LOGMETHOD(TraceMethod tf("anna::xml::Parser", "apply(Document)", ANNA_FILE_LOCATION)); Guard guard(*this); reset(); @@ -84,7 +56,7 @@ throw(RuntimeException) { } const Node* Parser::apply(const Document& document, const DTD& dtd) -throw(RuntimeException) { +noexcept(false) { LOGMETHOD(TraceMethod tf("anna::xml::Parser", "apply(Document,DTD)", ANNA_FILE_LOCATION)); Guard guard(*this); reset(); @@ -94,7 +66,7 @@ throw(RuntimeException) { } void Parser::apply(_xmlDoc* document) -throw(RuntimeException) { +noexcept(false) { LOGMETHOD(TraceMethod tf("anna::xml::Parser", "apply (_xmlDoc)", ANNA_FILE_LOCATION)); xmlNode* root; @@ -119,14 +91,14 @@ throw(RuntimeException) { } void Parser::children(Node* node, xmlNode* xmlNode) -throw(RuntimeException) { +noexcept(false) { Node* child; bool isSeparator; const char* w; while(xmlNode != NULL) { - switch(xmlNode->type) { - case XML_ELEMENT_NODE: + + if((xmlNode->type) == XML_ELEMENT_NODE) { child = node->createChild((const char*) xmlNode->name); for(xmlNs* ns = xmlNode->nsDef; ns != NULL; ns = ns->next) @@ -138,8 +110,8 @@ throw(RuntimeException) { attributes(child, xmlNode->properties); children(child, xmlNode->children); - break; - case XML_TEXT_NODE: + } + else if((xmlNode->type) == XML_TEXT_NODE) { w = (const char*) xmlNode->content; isSeparator = true; @@ -148,22 +120,20 @@ throw(RuntimeException) { isSeparator = false; break; } - w ++; } if(isSeparator == false) node->createText(decode(xmlNode->content)); - - break; } + xmlNode = xmlNode->next; } } void Parser::attributes(Node* node, xmlAttr* attribute) -throw(RuntimeException) { +noexcept(false) { const char* value; const Namespace* ns = NULL; @@ -177,7 +147,7 @@ throw(RuntimeException) { /* static */ void Parser::errorHandler(void *ctx, const char *msg, ...) -throw() { +{ va_list ap; va_start(ap, msg); vsprintf(st_text, msg, ap); @@ -192,7 +162,7 @@ throw() { /* static */ void Parser::warningHandler(void *ctx, const char *msg, ...) -throw() { +{ va_list ap; if(Logger::isActive(Logger::Warning)) { @@ -210,13 +180,13 @@ throw() { // La metodo que invoque a este debe hacerlo con una secci�n cr�tica activa. void Parser::reset() -throw() { +{ if(a_root != NULL) a_root->clear(); } void Parser::setupEncoding(_xmlDoc* document) -throw() { +{ if(document->encoding != NULL) { a_encoding = true; @@ -235,7 +205,7 @@ throw() { } const char* Parser::decode(const unsigned char* source) -throw() { +{ if(a_encoding == false) return (const char*) source;