| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | /*============================================================================  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"#include "cmAlgorithms.h"//----------------------------------------------------------------------------cmInstalledFile::cmInstalledFile():  NameExpression(0){}//----------------------------------------------------------------------------cmInstalledFile::~cmInstalledFile(){  if(NameExpression)    {    delete NameExpression;    }}cmInstalledFile::Property::Property(){}cmInstalledFile::Property::~Property(){  cmDeleteAll(this->ValueExpressions);}//----------------------------------------------------------------------------void cmInstalledFile::SetName(cmMakefile* mf, const std::string& name){  cmListFileBacktrace backtrace = mf->GetBacktrace();  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();  cmGeneratorExpression ge(backtrace);  Property& property = this->Properties[prop];  property.ValueExpressions.push_back(ge.Parse(value).release());}//----------------------------------------------------------------------------bool cmInstalledFile::HasProperty(  const std::string& prop) const{  return this->Properties.find(prop) != this->Properties.end();}//----------------------------------------------------------------------------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());}//----------------------------------------------------------------------------void cmInstalledFile::GetPropertyAsList(const std::string& prop,  std::vector<std::string>& list) const{  std::string value;  this->GetProperty(prop, value);  list.clear();  cmSystemTools::ExpandListArgument(value, list);}
 |