CMake/Source/CPack/WiX/cmWIXSourceWriter.h
Nils Gladitz 7b390f75e8 CPackWiX: add CPack component support
Creates a hierarchy of WiX features from CPack components and component groups.
Switch to the FeatureTree UI in case components have been defined.
Handles the component REQUIRE and HIDDEN options
and the component group EXPANDED option.
2013-11-26 22:15:57 +01:00

73 lines
1.6 KiB
C++

/*============================================================================
CMake - Cross Platform Makefile Generator
Copyright 2012 Kitware, Inc.
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 cmWIXSourceWriter_h
#define cmWIXSourceWriter_h
#include <vector>
#include <string>
#include <fstream>
#include <CPack/cmCPackLog.h>
/** \class cmWIXSourceWriter
* \brief Helper class to generate XML WiX source files
*/
class cmWIXSourceWriter
{
public:
cmWIXSourceWriter(cmCPackLog* logger,
const std::string& filename, bool isIncludeFile = false);
~cmWIXSourceWriter();
void BeginElement(const std::string& name);
void EndElement(const std::string& name);
void AddProcessingInstruction(
const std::string& target, const std::string& content);
void AddAttribute(
const std::string& key, const std::string& value);
void AddAttributeUnlessEmpty(
const std::string& key, const std::string& value);
static std::string WindowsCodepageToUtf8(const std::string& value);
private:
enum State
{
DEFAULT,
BEGIN
};
void WriteXMLDeclaration();
void Indent(size_t count);
static std::string EscapeAttributeValue(const std::string& value);
cmCPackLog* Logger;
std::ofstream file;
State state;
std::vector<std::string> elements;
std::string sourceFilename;
};
#endif