mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 00:11:07 -06:00
cmIDEOptions: Add SpaceAppendable flag table type
This commit is contained in:
@@ -24,6 +24,9 @@ struct cmIDEFlagTable
|
||||
// IgnoreDefaultLibraryNames)
|
||||
UserFollowing = (1 << 5), // expect value in following argument
|
||||
CaseInsensitive = (1 << 6), // flag may be any case
|
||||
SpaceAppendable = (1 << 7), // a flag that if specified multiple times
|
||||
// should have its value appended to the
|
||||
// old value with spaces
|
||||
|
||||
UserValueIgnored = UserValue | UserIgnored,
|
||||
UserValueRequired = UserValue | UserRequired
|
||||
|
||||
@@ -125,6 +125,8 @@ void cmIDEOptions::FlagMapUpdate(cmIDEFlagTable const* entry,
|
||||
this->FlagMap[entry->IDEName] = entry->value;
|
||||
} else if (entry->special & cmIDEFlagTable::SemicolonAppendable) {
|
||||
this->FlagMap[entry->IDEName].push_back(new_value);
|
||||
} else if (entry->special & cmIDEFlagTable::SpaceAppendable) {
|
||||
this->FlagMap[entry->IDEName].append_with_space(new_value);
|
||||
} else {
|
||||
// Use the user-specified value.
|
||||
this->FlagMap[entry->IDEName] = new_value;
|
||||
@@ -172,6 +174,12 @@ void cmIDEOptions::AppendFlag(std::string const& flag,
|
||||
std::copy(value.begin(), value.end(), std::back_inserter(fv));
|
||||
}
|
||||
|
||||
void cmIDEOptions::AppendFlagString(std::string const& flag,
|
||||
std::string const& value)
|
||||
{
|
||||
this->FlagMap[flag].append_with_space(value);
|
||||
}
|
||||
|
||||
void cmIDEOptions::RemoveFlag(const char* flag)
|
||||
{
|
||||
this->FlagMap.erase(flag);
|
||||
|
||||
@@ -29,6 +29,7 @@ public:
|
||||
void AppendFlag(std::string const& flag, std::string const& value);
|
||||
void AppendFlag(std::string const& flag,
|
||||
std::vector<std::string> const& value);
|
||||
void AppendFlagString(std::string const& flag, std::string const& value);
|
||||
void RemoveFlag(const char* flag);
|
||||
bool HasFlag(std::string const& flag) const;
|
||||
const char* GetFlag(const char* flag);
|
||||
@@ -57,6 +58,16 @@ protected:
|
||||
this->derived::operator=(r);
|
||||
return *this;
|
||||
}
|
||||
FlagValue& append_with_space(std::string const& r)
|
||||
{
|
||||
this->resize(1);
|
||||
std::string& l = this->operator[](0);
|
||||
if (!l.empty()) {
|
||||
l += " ";
|
||||
}
|
||||
l += r;
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
std::map<std::string, FlagValue> FlagMap;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user