X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fxml%2FCompiler.cpp;h=1cbc286c0fd3b8497c43ef0d87b340e193eece0c;hb=26c27c2b83f99e6df420addc90010eb0d4a7724e;hp=a03b0371a7fb532bf6aec9895daba2315ca42341;hpb=39033fd99e58e994a5e98c1060dcc79e0d81f9c9;p=anna.git diff --git a/source/xml/Compiler.cpp b/source/xml/Compiler.cpp index a03b037..1cbc286 100644 --- a/source/xml/Compiler.cpp +++ b/source/xml/Compiler.cpp @@ -1,40 +1,13 @@ -// ANNA - Anna is Not Nothingness Anymore -// -// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo -// -// http://redmine.teslayout.com/projects/anna-suite -// -// 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 the copyright holder 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 +#include #include #include @@ -44,6 +17,10 @@ #include #include +#include +#include + + using namespace anna; using namespace anna::xml; @@ -161,7 +138,7 @@ throw(RuntimeException) { const Namespace* ns; for(int i = 0; i < level; i ++) - result += ANNA_XML_COMPILER_TAB; + result += std::string(ANNA_XML_INDENTATION_SPACES, ' '); result += '<'; writeFullName(node, result, flags); @@ -178,6 +155,13 @@ throw(RuntimeException) { } } + // Sort node attributes (this is a compiler used for on-demand representation, this sorting is not permanent in the object which uses it): + if(flags & Mode::Sort) { + Node *nc_node = const_cast(node); + std::sort(nc_node->attribute_begin(), nc_node->attribute_end(), + [](Attribute *a, Attribute *b) { return (std::strcmp(a->getName(), b->getName()) < 0); }); // sort alphabetically by attribute name + } + for(Node::const_attribute_iterator ii = node->attribute_begin(), maxii = node->attribute_end(); ii != maxii; ii ++) { attribute = Node::attribute(ii); result += ' '; @@ -231,7 +215,7 @@ throw(RuntimeException) { void Compiler::close(const Node* node, Result& result, const int level, const int flags) throw(RuntimeException) { for(int i = 0; i < level; i ++) - result += ANNA_XML_COMPILER_TAB; + result += std::string(ANNA_XML_INDENTATION_SPACES, ' '); result += "