a74bd470a4
...revealed by the Nightly dashboard runs last night. Use "size_t" instead of "std::size_t" so that it compiles with Visual Studio 6, too. Fix warnings about shadowed "tmp" local variable and ordering of member variables vs. lines of code in the constructor initializer list.
68 lines
1.5 KiB
C++
68 lines
1.5 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();
|
|
|
|
void AddProcessingInstruction(
|
|
const std::string& target, const std::string& content);
|
|
|
|
void AddAttribute(
|
|
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;
|
|
};
|
|
|
|
#endif
|