summaryrefslogtreecommitdiffstats
path: root/Source/cmXMLSafe.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmXMLSafe.h')
-rw-r--r--Source/cmXMLSafe.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/Source/cmXMLSafe.h b/Source/cmXMLSafe.h
new file mode 100644
index 0000000..11ced13
--- /dev/null
+++ b/Source/cmXMLSafe.h
@@ -0,0 +1,46 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+ 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 cmXMLSafe_h
+#define cmXMLSafe_h
+
+#include <cmsys/Configure.hxx>
+
+#include <iosfwd>
+#include <string>
+
+/** \class cmXMLSafe
+ * \brief Write strings to XML with proper escapes
+ */
+class cmXMLSafe
+{
+public:
+ /** Construct with the data to be written. This assumes the data
+ will exist for the duration of this object's life. */
+ cmXMLSafe(const char* s);
+ cmXMLSafe(std::string const& s);
+
+ /** Specify whether to escape quotes too. This is needed when
+ writing the content of an attribute value. By default quotes
+ are escaped. */
+ cmXMLSafe& Quotes(bool b = true);
+
+ /** Get the escaped data as a string. */
+ std::string str();
+
+private:
+ char const* Data;
+ unsigned long Size;
+ bool DoQuotes;
+ friend std::ostream& operator<<(std::ostream&, cmXMLSafe const&);
+};
+
+#endif