-// 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 //
#ifndef anna_xml_Compiler_hpp
#include <anna/core/RuntimeException.hpp>
#include <anna/core/mt/Mutex.hpp>
-// Three-space tabulator for xml string presentation (node indent)
-#define ANNA_XML_COMPILER_TAB " "
namespace anna {
Visual = 0, /**< Separa cada uno de los componentes con espacios y retornos de carro */
Compact = 1, /**< Los componentes no tienen separacion entre si. Se puede usar para optimizar envios de mensajes */
ShowNullAttribute = 2, /**< Visualiza el valor nulo de un atributo como ="" */
- NoNamespaces = 4 /**<Obtiene el documento XML sin ofrecer informaciĆ³n sobre los namespaces */
+ NoNamespaces = 4, /**<Obtiene el documento XML sin ofrecer informaciĆ³n sobre los namespaces */
+ Sort = 8, /** Sorts attribute names */
};
};
\param flag Combinacion de valores que configura la forma de crear el documento.
\return Una cadena con el documento XML correspondiente al nodo recibido.
*/
- const char* apply(const Node* node, const int flag = Mode::Visual) throw(RuntimeException);
+ const char* apply(const Node* node, const int flag = Mode::Visual) noexcept(false);
/**
Obtiene el documento XML correspondiente al nodo recibido.
\param flag Combinacion de valores que configura la forma de crear el documento.
\return Una cadena con el documento XML correspondiente al nodo recibido.
*/
- const char* apply(const Document& document, const Node* node, const int flag = Mode::Visual) throw(RuntimeException);
+ const char* apply(const Document& document, const Node* node, const int flag = Mode::Visual) noexcept(false);
private:
class Result {
}
~Result() { delete [] a_buffer; }
- void clear() throw() { a_buffer [a_size = 0] = 0; }
+ void clear() { a_buffer [a_size = 0] = 0; }
void operator += (const char c)
- throw(RuntimeException) {
+ noexcept(false) {
extend(sizeof(c) * 2);
a_buffer [a_size ++] = c;
a_buffer [a_size] = 0;
}
void operator += (const char* str)
- throw(RuntimeException) {
+ noexcept(false) {
const int len = anna_strlen(str);
extend(len + 1);
anna_strcpy(a_buffer + a_size, str);
a_size += len;
}
- void operator += (const std::string& str) throw(RuntimeException) {(*this) += str.c_str(); }
+ void operator += (const std::string& str) noexcept(false) {(*this) += str.c_str(); }
- const char* c_str() const throw() { return a_buffer; }
+ const char* c_str() const { return a_buffer; }
private:
char* a_buffer;
int a_size;
int a_maxSize;
- void extend(const int size) throw(RuntimeException);
+ void extend(const int size) noexcept(false);
};
Result a_result;
Compiler(const Compiler&);
- static void apply(const Node*, Result&, const int level, const int flags) throw(RuntimeException);
- static void apply(const Node*, Result&, const int flags) throw(RuntimeException);
+ static void apply(const Node*, Result&, const int level, const int flags) noexcept(false);
+ static void apply(const Node*, Result&, const int flags) noexcept(false);
static void open(const Node*, Result&, const int level, const bool quickClose, const bool newline, const int flags)
- throw(RuntimeException);
- static void writeFullName(const Node*, Result&, const int flags) throw(RuntimeException);
- static void writeFullName(const Attribute*, Result&, const int flags) throw(RuntimeException);
- static void close(const Node*, Result&, const int level, const int flags) throw(RuntimeException);
+ noexcept(false);
+ static void writeFullName(const Node*, Result&, const int flags) noexcept(false);
+ static void writeFullName(const Attribute*, Result&, const int flags) noexcept(false);
+ static void close(const Node*, Result&, const int level, const int flags) noexcept(false);
};
}