1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #ifndef cmWIXSourceWriter_h
- #define cmWIXSourceWriter_h
- #include "cmCPackLog.h"
- #include "cmsys/FStream.hxx"
- #include <string>
- #include <vector>
- /** \class cmWIXSourceWriter
- * \brief Helper class to generate XML WiX source files
- */
- class cmWIXSourceWriter
- {
- public:
- enum GuidType
- {
- WIX_GENERATED_GUID,
- CMAKE_GENERATED_GUID
- };
- enum RootElementType
- {
- WIX_ELEMENT_ROOT,
- INCLUDE_ELEMENT_ROOT
- };
- cmWIXSourceWriter(cmCPackLog* logger, std::string const& filename,
- GuidType componentGuidType,
- RootElementType rootElementType = WIX_ELEMENT_ROOT);
- ~cmWIXSourceWriter();
- void BeginElement(std::string const& name);
- void EndElement(std::string const& name);
- void AddTextNode(std::string const& text);
- void AddProcessingInstruction(std::string const& target,
- std::string const& content);
- void AddAttribute(std::string const& key, std::string const& value);
- void AddAttributeUnlessEmpty(std::string const& key,
- std::string const& value);
- std::string CreateGuidFromComponentId(std::string const& componentId);
- protected:
- cmCPackLog* Logger;
- private:
- enum State
- {
- DEFAULT,
- BEGIN
- };
- void WriteXMLDeclaration();
- void Indent(size_t count);
- static std::string EscapeAttributeValue(std::string const& value);
- cmsys::ofstream File;
- State State;
- std::vector<std::string> Elements;
- std::string SourceFilename;
- GuidType ComponentGuidType;
- };
- #endif
|