From fe9620793f5a73f5daab3f8da7c439455eabb520 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sun, 19 Apr 2015 21:45:39 +0200 Subject: [PATCH] check token order when composing in DEBUG only --- alib2data/src/sax/SaxComposeInterface.cpp | 32 +++++++++++++++-------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/alib2data/src/sax/SaxComposeInterface.cpp b/alib2data/src/sax/SaxComposeInterface.cpp index bc27ecc1a3..cdcb51e3f8 100644 --- a/alib2data/src/sax/SaxComposeInterface.cpp +++ b/alib2data/src/sax/SaxComposeInterface.cpp @@ -52,18 +52,24 @@ void SaxComposeInterface::printStream(std::ostream& out, const std::deque<Token> void SaxComposeInterface::xmlSAXUserPrint(xmlTextWriterPtr writer, const std::deque<Token>& in) { xmlTextWriterStartDocument(writer, NULL, NULL, NULL); - std::deque<Token> stack; + #ifdef DEBUG + std::deque<Token> stack; + #endif for(const Token& token : in) { switch(token.getType()) { case Token::TokenType::START_ELEMENT: xmlTextWriterStartElement(writer, (const xmlChar*) token.getData().c_str()); - stack.push_back(token); + #ifdef DEBUG + stack.push_back(token); + #endif break; case Token::TokenType::END_ELEMENT: - if(stack.empty() || stack.back().getData() != token.getData() || stack.back().getType() != Token::TokenType::START_ELEMENT) { - throw ComposerException(Token(stack.back().getData(), Token::TokenType::END_ELEMENT), token); - } - stack.pop_back(); + #ifdef DEBUG + if(stack.empty() || stack.back().getData() != token.getData() || stack.back().getType() != Token::TokenType::START_ELEMENT) { + throw ComposerException(Token(stack.back().getData(), Token::TokenType::END_ELEMENT), token); + } + stack.pop_back(); + #endif xmlTextWriterEndElement(writer); break; case Token::TokenType::CHARACTER: @@ -71,13 +77,17 @@ void SaxComposeInterface::xmlSAXUserPrint(xmlTextWriterPtr writer, const std::de break; case Token::TokenType::START_ATTRIBUTE: xmlTextWriterStartAttribute(writer, (const xmlChar*) token.getData().c_str()); - stack.push_back(token); + #ifdef DEBUG + stack.push_back(token); + #endif break; case Token::TokenType::END_ATTRIBUTE: - if(stack.empty() || stack.back().getData() != token.getData() || stack.back().getType() != Token::TokenType::START_ATTRIBUTE) { - throw ComposerException(Token(stack.back().getData(), Token::TokenType::END_ATTRIBUTE), token); - } - stack.pop_back(); + #ifdef DEBUG + if(stack.empty() || stack.back().getData() != token.getData() || stack.back().getType() != Token::TokenType::START_ATTRIBUTE) { + throw ComposerException(Token(stack.back().getData(), Token::TokenType::END_ATTRIBUTE), token); + } + stack.pop_back(); + #endif xmlTextWriterEndAttribute(writer); break; } -- GitLab