X-Git-Url: https://git.teslayout.com/public/public/public/?p=anna.git;a=blobdiff_plain;f=source%2Fxml%2FCompiler.cpp;h=1cbc286c0fd3b8497c43ef0d87b340e193eece0c;hp=483e86ec5e6e2a1ac1a602d017be4d9760f09266;hb=1fd0c19880f48fd5d98dfce81dfed21147b4dfe3;hpb=5c20be7038fe63f4c23f7bd265d3c1fd97f84088 diff --git a/source/xml/Compiler.cpp b/source/xml/Compiler.cpp index 483e86e..1cbc286 100644 --- a/source/xml/Compiler.cpp +++ b/source/xml/Compiler.cpp @@ -7,6 +7,7 @@ #include +#include #include #include @@ -16,6 +17,10 @@ #include #include +#include +#include + + using namespace anna; using namespace anna::xml; @@ -133,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); @@ -150,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 += ' '; @@ -203,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 += "