summaryrefslogtreecommitdiffstats
path: root/Source/cmIDEOptions.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmIDEOptions.h')
-rw-r--r--Source/cmIDEOptions.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/Source/cmIDEOptions.h b/Source/cmIDEOptions.h
index e7749ec..7386016 100644
--- a/Source/cmIDEOptions.h
+++ b/Source/cmIDEOptions.h
@@ -29,7 +29,12 @@ public:
void AddDefines(const char* defines);
void AddDefines(const std::vector<std::string> &defines);
void AddFlag(const char* flag, const char* value);
+ void AddFlag(const char* flag, std::vector<std::string> const& value);
+ void AppendFlag(std::string const& flag, std::string const& value);
+ void AppendFlag(std::string const& flag,
+ std::vector<std::string> const& value);
void RemoveFlag(const char* flag);
+ bool HasFlag(std::string const& flag) const;
const char* GetFlag(const char* flag);
protected:
@@ -40,7 +45,23 @@ protected:
// Then parse the command line flags specified in CMAKE_CXX_FLAGS
// and CMAKE_C_FLAGS
// and overwrite or add new values to this map
- std::map<std::string, std::string> FlagMap;
+ class FlagValue: public std::vector<std::string>
+ {
+ typedef std::vector<std::string> derived;
+ public:
+ FlagValue& operator=(std::string const& r)
+ {
+ this->resize(1);
+ this->operator[](0) = r;
+ return *this;
+ }
+ FlagValue& operator=(std::vector<std::string> const& r)
+ {
+ this->derived::operator=(r);
+ return *this;
+ }
+ };
+ std::map<std::string, FlagValue > FlagMap;
// Preprocessor definitions.
std::vector<std::string> Defines;