From 82ebbf683e201af7b9bb493a221804992abf5a4a Mon Sep 17 00:00:00 2001 From: Gregor Jasny Date: Sun, 12 Jun 2016 21:39:16 +0200 Subject: [PATCH] Xcode: Add function to conditionally add Xcode Attributes --- Source/cmXCodeObject.cxx | 16 ++++++++++++++++ Source/cmXCodeObject.h | 9 +++++++++ 2 files changed, 25 insertions(+) diff --git a/Source/cmXCodeObject.cxx b/Source/cmXCodeObject.cxx index 3d3134339..fabf097ad 100644 --- a/Source/cmXCodeObject.cxx +++ b/Source/cmXCodeObject.cxx @@ -83,6 +83,22 @@ cmXCodeObject::cmXCodeObject(PBXType ptype, Type type) } } +bool cmXCodeObject::IsEmpty() const +{ + switch (this->TypeValue) { + case OBJECT_LIST: + return this->List.empty(); + case STRING: + return this->String.empty(); + case ATTRIBUTE_GROUP: + return this->ObjectAttributes.empty(); + case OBJECT_REF: + case OBJECT: + return this->Object == 0; + } + return true; // unreachable, but quiets warnings +} + void cmXCodeObject::Indent(int level, std::ostream& out) { while (level) { diff --git a/Source/cmXCodeObject.h b/Source/cmXCodeObject.h index 1502c2785..ed917aff4 100644 --- a/Source/cmXCodeObject.h +++ b/Source/cmXCodeObject.h @@ -62,6 +62,8 @@ public: Type GetType() const { return this->TypeValue; } PBXType GetIsA() const { return this->IsA; } + bool IsEmpty() const; + void SetString(const std::string& s); const std::string& GetString() const { return this->String; } @@ -70,6 +72,13 @@ public: this->ObjectAttributes[name] = value; } + void AddAttributeIfNotEmpty(const std::string& name, cmXCodeObject* value) + { + if (value && !value->IsEmpty()) { + AddAttribute(name, value); + } + } + void SetObject(cmXCodeObject* value) { this->Object = value; } cmXCodeObject* GetObject() { return this->Object; } void AddObject(cmXCodeObject* value) { this->List.push_back(value); }