summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/cmXCodeObject.cxx16
-rw-r--r--Source/cmXCodeObject.h9
2 files changed, 25 insertions, 0 deletions
diff --git a/Source/cmXCodeObject.cxx b/Source/cmXCodeObject.cxx
index 3d31343..fabf097 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 1502c27..ed917af 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); }