diff options
Diffstat (limited to 'Swiften/Client/XMLBeautifier.h')
-rw-r--r-- | Swiften/Client/XMLBeautifier.h | 63 |
1 files changed, 38 insertions, 25 deletions
diff --git a/Swiften/Client/XMLBeautifier.h b/Swiften/Client/XMLBeautifier.h index 44dfd20..7458211 100644 --- a/Swiften/Client/XMLBeautifier.h +++ b/Swiften/Client/XMLBeautifier.h @@ -4,50 +4,63 @@ * See Documentation/Licenses/BSD-simplified.txt for more information. */ +/* + * Copyright (c) 2014-2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ + #pragma once -#include <string> +#include <memory> +#include <sstream> #include <stack> +#include <string> -#include <Swiften/Base/boost_bsignals.h> -#include <Swiften/Parser/XMLParserFactory.h> -#include <Swiften/Parser/XMLParserClient.h> +#include <boost/signals2.hpp> + +#include <Swiften/Base/API.h> #include <Swiften/Parser/XMLParser.h> +#include <Swiften/Parser/XMLParserClient.h> +#include <Swiften/Parser/XMLParserFactory.h> namespace Swift { -class XMLBeautifier : public XMLParserClient { +class SWIFTEN_API XMLBeautifier : public XMLParserClient { public: - XMLBeautifier(bool indention, bool coloring); - virtual ~XMLBeautifier(); - std::string beautify(const std::string&); + XMLBeautifier(bool indention, bool coloring); + + std::string beautify(const std::string&); + bool wasReset() const; + int getLevel() const; private: - void handleStartElement(const std::string& element, const std::string& ns, const AttributeMap& attributes); - void handleEndElement(const std::string& element, const std::string& ns); - void handleCharacterData(const std::string& data); + void handleStartElement(const std::string& element, const std::string& ns, const AttributeMap& attributes); + void handleEndElement(const std::string& element, const std::string& ns); + void handleCharacterData(const std::string& data); private: - void indent(); + void indent(); + void reset(); private: - std::string styleTag(const std::string& text) const; - std::string styleNamespace(const std::string& text) const; - std::string styleAttribute(const std::string& text) const; - std::string styleValue(const std::string& text) const; + std::string styleTag(const std::string& text) const; + std::string styleNamespace(const std::string& text) const; + std::string styleAttribute(const std::string& text) const; + std::string styleValue(const std::string& text) const; private: - bool doIndention; - bool doColoring; + const bool doIndention_; + const bool doColoring_; - int intLevel; - std::string inputBuffer; - std::stringstream buffer; - XMLParserFactory* factory; - XMLParser* parser; + std::unique_ptr<XMLParserFactory> factory_; + std::unique_ptr<XMLParser> parser_; - bool lastWasStepDown; - std::stack<std::string> parentNSs; + bool wasReset_ = true; + int intLevel_ = 0; + bool lastWasStepDown_ = false; + std::stringstream buffer_; + std::stack<std::string> parentNSs_; }; } |