|
|
@@ -0,0 +1,115 @@
|
|
|
+/*============================================================================
|
|
|
+ CMake - Cross Platform Makefile Generator
|
|
|
+ Copyright 2014 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.
|
|
|
+============================================================================*/
|
|
|
+#include "cmInstalledFile.h"
|
|
|
+#include "cmSystemTools.h"
|
|
|
+#include "cmMakefile.h"
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+cmInstalledFile::cmInstalledFile():
|
|
|
+ NameExpression(0)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+cmInstalledFile::~cmInstalledFile()
|
|
|
+{
|
|
|
+ if(NameExpression)
|
|
|
+ {
|
|
|
+ delete NameExpression;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+void cmInstalledFile::SetName(cmMakefile* mf, const std::string& name)
|
|
|
+{
|
|
|
+ cmListFileBacktrace backtrace;
|
|
|
+ mf->GetBacktrace(backtrace);
|
|
|
+ cmGeneratorExpression ge(backtrace);
|
|
|
+
|
|
|
+ this->Name = name;
|
|
|
+ this->NameExpression = ge.Parse(name).release();
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+std::string const& cmInstalledFile::GetName() const
|
|
|
+{
|
|
|
+ return this->Name;
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+cmCompiledGeneratorExpression const& cmInstalledFile::GetNameExpression() const
|
|
|
+{
|
|
|
+ return *(this->NameExpression);
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+void cmInstalledFile::RemoveProperty(const std::string& prop)
|
|
|
+{
|
|
|
+ this->Properties.erase(prop);
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+void cmInstalledFile::SetProperty(cmMakefile const* mf,
|
|
|
+ const std::string& prop, const char* value)
|
|
|
+{
|
|
|
+ this->RemoveProperty(prop);
|
|
|
+ this->AppendProperty(mf, prop, value);
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+void cmInstalledFile::AppendProperty(cmMakefile const* mf,
|
|
|
+ const std::string& prop, const char* value, bool /*asString*/)
|
|
|
+{
|
|
|
+ cmListFileBacktrace backtrace;
|
|
|
+ mf->GetBacktrace(backtrace);
|
|
|
+ cmGeneratorExpression ge(backtrace);
|
|
|
+
|
|
|
+ Property& property = this->Properties[prop];
|
|
|
+ property.ValueExpressions.push_back(ge.Parse(value).release());
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+bool cmInstalledFile::GetProperty(
|
|
|
+ const std::string& prop, std::string& value) const
|
|
|
+{
|
|
|
+ PropertyMapType::const_iterator i = this->Properties.find(prop);
|
|
|
+ if(i == this->Properties.end())
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ Property const& property = i->second;
|
|
|
+
|
|
|
+ std::string output;
|
|
|
+ std::string separator;
|
|
|
+
|
|
|
+ for(ExpressionVectorType::const_iterator
|
|
|
+ j = property.ValueExpressions.begin();
|
|
|
+ j != property.ValueExpressions.end(); ++j)
|
|
|
+ {
|
|
|
+ output += separator;
|
|
|
+ output += (*j)->GetInput();
|
|
|
+ separator = ";";
|
|
|
+ }
|
|
|
+
|
|
|
+ value = output;
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+bool cmInstalledFile::GetPropertyAsBool(const std::string& prop) const
|
|
|
+{
|
|
|
+ std::string value;
|
|
|
+ bool isSet = this->GetProperty(prop, value);
|
|
|
+ return isSet && cmSystemTools::IsOn(value.c_str());
|
|
|
+}
|