From dd27e31351be89bc0c28183fc347d6082bca1e36 Mon Sep 17 00:00:00 2001 From: Daniel Pfeifer Date: Thu, 16 Jul 2015 21:50:28 +0200 Subject: cmXMLWriter: overload Element() method for empty elements --- Source/cmXMLWriter.cxx | 7 +++++++ Source/cmXMLWriter.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/Source/cmXMLWriter.cxx b/Source/cmXMLWriter.cxx index f9b3b49..ab9939a 100644 --- a/Source/cmXMLWriter.cxx +++ b/Source/cmXMLWriter.cxx @@ -67,6 +67,13 @@ void cmXMLWriter::EndElement() this->ElementOpen = false; } +void cmXMLWriter::Element(const char* name) +{ + this->CloseStartElement(); + this->ConditionalLineBreak(!this->IsContent, this->Elements.size()); + this->Output << '<' << name << "/>"; +} + void cmXMLWriter::BreakAttributes() { this->BreakAttrib = true; diff --git a/Source/cmXMLWriter.h b/Source/cmXMLWriter.h index c38c0de..c839a62 100644 --- a/Source/cmXMLWriter.h +++ b/Source/cmXMLWriter.h @@ -41,6 +41,8 @@ public: this->Output << name << "=\"" << SafeAttribute(value) << '"'; } + void Element(const char* name); + template void Element(std::string const& name, T const& value) { -- cgit v0.12 From d740762181976834df32bc9baaf273e5278313b0 Mon Sep 17 00:00:00 2001 From: Daniel Pfeifer Date: Thu, 16 Jul 2015 23:06:44 +0200 Subject: cmXMLWriter: add Doctype() method --- Source/cmXMLWriter.cxx | 7 +++++++ Source/cmXMLWriter.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/Source/cmXMLWriter.cxx b/Source/cmXMLWriter.cxx index ab9939a..6a9172a 100644 --- a/Source/cmXMLWriter.cxx +++ b/Source/cmXMLWriter.cxx @@ -92,6 +92,13 @@ void cmXMLWriter::CData(std::string const& data) this->Output << ""; } +void cmXMLWriter::Doctype(const char* doctype) +{ + this->CloseStartElement(); + this->ConditionalLineBreak(!this->IsContent, this->Elements.size()); + this->Output << ""; +} + void cmXMLWriter::ProcessingInstruction(const char* target, const char* data) { this->CloseStartElement(); diff --git a/Source/cmXMLWriter.h b/Source/cmXMLWriter.h index c839a62..3083059 100644 --- a/Source/cmXMLWriter.h +++ b/Source/cmXMLWriter.h @@ -62,6 +62,8 @@ public: void CData(std::string const& data); + void Doctype(const char* doctype); + void ProcessingInstruction(const char* target, const char* data); void FragmentFile(const char* fname); -- cgit v0.12 From 27e097645350fc07dadc79a8944b47a97e5ecdc3 Mon Sep 17 00:00:00 2001 From: Daniel Pfeifer Date: Thu, 16 Jul 2015 21:52:35 +0200 Subject: cmExtraCodeBlocksGenerator: port to cmXMLWriter --- Source/cmExtraCodeBlocksGenerator.cxx | 234 +++++++++++++++++++++------------- Source/cmExtraCodeBlocksGenerator.h | 4 +- 2 files changed, 147 insertions(+), 91 deletions(-) diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index 476d3ac..52512a8 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -18,7 +18,7 @@ #include "cmSourceFile.h" #include "cmGeneratedFileStream.h" #include "cmSystemTools.h" -#include "cmXMLSafe.h" +#include "cmXMLWriter.h" #include @@ -101,11 +101,11 @@ struct Tree void InsertPath(const std::vector& splitted, std::vector::size_type start, const std::string& fileName); - void BuildVirtualFolder(std::string& virtualFolders) const; + void BuildVirtualFolder(cmXMLWriter& xml) const; void BuildVirtualFolderImpl(std::string& virtualFolders, const std::string& prefix) const; - void BuildUnit(std::string& unitString, const std::string& fsPath) const; - void BuildUnitImpl(std::string& unitString, + void BuildUnit(cmXMLWriter& xml, const std::string& fsPath) const; + void BuildUnitImpl(cmXMLWriter& xml, const std::string& virtualFolderPath, const std::string& fsPath) const; }; @@ -159,16 +159,18 @@ void Tree::InsertPath(const std::vector& splitted, } -void Tree::BuildVirtualFolder(std::string& virtualFolders) const +void Tree::BuildVirtualFolder(cmXMLWriter& xml) const { - virtualFolders += "