diff options
author | Shawn Hussey <shawn@zeroc.com> | 2011-08-16 13:39:10 -0230 |
---|---|---|
committer | Shawn Hussey <shawn@zeroc.com> | 2011-08-16 13:39:10 -0230 |
commit | b1e407d3c7ca1f08d5e822226a17ba381f9003fc (patch) | |
tree | 0d5aca236c4d567736860500100ebd7dd28c40fc /cpp/src/slice2confluence/ConfluenceOutput.h | |
parent | Added support for replica & name cert CN verification (diff) | |
download | ice-b1e407d3c7ca1f08d5e822226a17ba381f9003fc.tar.bz2 ice-b1e407d3c7ca1f08d5e822226a17ba381f9003fc.tar.xz ice-b1e407d3c7ca1f08d5e822226a17ba381f9003fc.zip |
Initial commit of slice2confluence.
Diffstat (limited to 'cpp/src/slice2confluence/ConfluenceOutput.h')
-rw-r--r-- | cpp/src/slice2confluence/ConfluenceOutput.h | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/cpp/src/slice2confluence/ConfluenceOutput.h b/cpp/src/slice2confluence/ConfluenceOutput.h new file mode 100644 index 00000000000..2897f3086cd --- /dev/null +++ b/cpp/src/slice2confluence/ConfluenceOutput.h @@ -0,0 +1,170 @@ +#include <IceUtil/OutputUtil.h> + +#ifndef CONFLUENCE_OUTPUT +#define CONFLUENCE_OUTPUT + +namespace Confluence +{ + +// ---------------------------------------------------------------------- +// ConfluenceOutput +// ---------------------------------------------------------------------- + +class ICE_UTIL_API ConfluenceOutput : public IceUtilInternal::OutputBase +{ +public: + + ConfluenceOutput(); + ConfluenceOutput(std::ostream&); + ConfluenceOutput(const char*); + + virtual ~ConfluenceOutput(){}; + + virtual void print(const char*); // Print a string. + + virtual void newline(); // Print newline. + + void startElement(const std::string&); // Start an element. + void endElement(); // End an element. + void attr(const std::string&, const std::string&); // Add an attribute to an element. + + std::string getLinkMarkup(const std::string&, const std::string& = "", const std::string& = "", const std::string& = ""); + std::string getImageMarkup(const std::string&, const std::string& = ""); + + void startEscapes(); + void endEscapes(); + + std::string currentElement() const; + +private: + + std::string escape(const ::std::string&) const; + + std::stack<std::string> _elementStack; + + bool _se; + bool _text; + + bool _escape; + + std::string _listMarkers; +}; + +template<typename T> +inline ConfluenceOutput& +operator<<(ConfluenceOutput& out, const T& val) +{ + std::ostringstream s; + s << val; + out.print(s.str().c_str()); + return out; +} + +template<> +inline ConfluenceOutput& +operator<<(ConfluenceOutput& o, const IceUtilInternal::NextLine&) +{ + o.newline(); + return o; +} + +template<> +inline ConfluenceOutput& +operator<<(ConfluenceOutput& o, const IceUtilInternal::Separator&) +{ + o.separator(); + return o; +} + +class ICE_UTIL_API EndElement +{ +}; +extern ICE_UTIL_API EndElement ee; + +template<> +inline ConfluenceOutput& +operator<<(ConfluenceOutput& o, const EndElement&) +{ + o.endElement(); + return o; +} + +class ICE_UTIL_API StartElement +{ +public: + + StartElement(const std::string&); + + const std::string& getName() const; + +private: + + const std::string _name; +}; + +typedef StartElement se; + +template<> +inline ConfluenceOutput& +operator<<(ConfluenceOutput& o, const StartElement& e) +{ + o.startElement(e.getName()); + return o; +} + +class ICE_UTIL_API Attribute +{ +public: + + Attribute(const ::std::string&, const ::std::string&); + + const ::std::string& getName() const; + const ::std::string& getValue() const; + +private: + + const ::std::string _name; + const ::std::string _value; +}; + +typedef Attribute attr; + +template<> +inline ConfluenceOutput& +operator<<(ConfluenceOutput& o, const Attribute& e) +{ + o.attr(e.getName(), e.getValue()); + return o; +} + +class ICE_UTIL_API StartEscapes +{ +}; +extern ICE_UTIL_API StartEscapes startEscapes; + +class ICE_UTIL_API EndEscapes +{ +}; +extern ICE_UTIL_API EndEscapes endEscapes; + +template<> +inline ConfluenceOutput& +operator<<(ConfluenceOutput& o, const StartEscapes&) +{ + o.startEscapes(); + return o; +} + +template<> +inline ConfluenceOutput& +operator<<(ConfluenceOutput& o, const EndEscapes&) +{ + o.endEscapes(); + return o; +} + +ICE_UTIL_API ConfluenceOutput& operator<<(ConfluenceOutput&, std::ios_base& (*)(std::ios_base&)); + +} + +#endif |