| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | 
							- /*============================================================================
 
-   CMake - Cross Platform Makefile Generator
 
-   Copyright 2015 Daniel Pfeifer <[email protected]>
 
-   Distributed under the OSI-approved BSD License (the "License");
 
-   see accompanying file Copyright.txt for details.
 
-   This software is distributed WITHOUT ANY WARRANTY; without even the
 
-   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
-   See the License for more information.
 
- ============================================================================*/
 
- #ifndef cmXMLWiter_h
 
- #define cmXMLWiter_h
 
- #include "cmStandardIncludes.h"
 
- #include "cmXMLSafe.h"
 
- #include <ostream>
 
- #include <stack>
 
- #include <string>
 
- #include <vector>
 
- class cmXMLWriter
 
- {
 
- public:
 
-   cmXMLWriter(std::ostream& output, std::size_t level = 0);
 
-   ~cmXMLWriter();
 
-   void StartDocument(const char* encoding = "UTF-8");
 
-   void EndDocument();
 
-   void StartElement(std::string const& name);
 
-   void EndElement();
 
-   void BreakAttributes();
 
-   template <typename T>
 
-   void Attribute(const char* name, T const& value)
 
-     {
 
-     this->PreAttribute();
 
-     this->Output << name << "=\"" << SafeAttribute(value) << '"';
 
-     }
 
-   template <typename T>
 
-   void Element(std::string const& name, T const& value)
 
-     {
 
-     this->StartElement(name);
 
-     this->Content(value);
 
-     this->EndElement();
 
-     }
 
-   template <typename T>
 
-   void Content(T const& content)
 
-     {
 
-     this->PreContent();
 
-     this->Output << SafeContent(content);
 
-     }
 
-   void Comment(const char* comment);
 
-   void CData(std::string const& data);
 
-   void ProcessingInstruction(const char* target, const char* data);
 
-   void FragmentFile(const char* fname);
 
- private:
 
-   cmXMLWriter(const cmXMLWriter&);
 
-   cmXMLWriter& operator=(const cmXMLWriter&);
 
-   void ConditionalLineBreak(bool condition, std::size_t indent);
 
-   void PreAttribute();
 
-   void PreContent();
 
-   void CloseStartElement();
 
- private:
 
-   static cmXMLSafe SafeAttribute(const char* value)
 
-     {
 
-     return cmXMLSafe(value);
 
-     }
 
-   static cmXMLSafe SafeAttribute(std::string const& value)
 
-     {
 
-     return cmXMLSafe(value);
 
-     }
 
-   template <typename T>
 
-   static T SafeAttribute(T value)
 
-     {
 
-     return value;
 
-     }
 
-   static cmXMLSafe SafeContent(const char* value)
 
-     {
 
-     return cmXMLSafe(value).Quotes(false);
 
-     }
 
-   static cmXMLSafe SafeContent(std::string const& value)
 
-     {
 
-     return cmXMLSafe(value).Quotes(false);
 
-     }
 
-   template <typename T>
 
-   static T SafeContent(T value)
 
-     {
 
-     return value;
 
-     }
 
- private:
 
-   std::ostream& Output;
 
-   std::stack<std::string, std::vector<std::string> > Elements;
 
-   std::size_t Level;
 
-   bool ElementOpen;
 
-   bool BreakAttrib;
 
-   bool IsContent;
 
- };
 
- #endif
 
 
  |