Browse Source

Merge topic 'xcode-attribute-conditions'

c519bb2 XCode: Also qoute [] as needed to set build-configurations.
Brad King 14 years ago
parent
commit
89460b7fd7
2 changed files with 21 additions and 10 deletions
  1. 20 10
      Source/cmXCodeObject.cxx
  2. 1 0
      Source/cmXCodeObject.h

+ 20 - 10
Source/cmXCodeObject.cxx

@@ -146,13 +146,15 @@ void cmXCodeObject::Print(std::ostream& out)
 
         if(j->second->TypeValue == STRING)
           {
-          out << j->first << " = ";
+          cmXCodeObject::PrintString(out,j->first);
+          out << " = ";
           j->second->PrintString(out);
           out << ";";
           }
         else if(j->second->TypeValue == OBJECT_LIST)
           {
-          out << j->first << " = (";
+          cmXCodeObject::PrintString(out,j->first);
+          out << " = (";
           for(unsigned int k = 0; k < j->second->List.size(); k++)
             {
             if(j->second->List[k]->TypeValue == STRING)
@@ -169,7 +171,8 @@ void cmXCodeObject::Print(std::ostream& out)
           }
         else
           {
-          out << j->first << " = error_unexpected_TypeValue_" <<
+          cmXCodeObject::PrintString(out,j->first);
+          out << " = error_unexpected_TypeValue_" <<
             j->second->TypeValue << ";";
           }
 
@@ -180,7 +183,8 @@ void cmXCodeObject::Print(std::ostream& out)
       }
     else if(object->TypeValue == OBJECT_REF)
       {
-      out << i->first << " = " << object->Object->Id;
+      cmXCodeObject::PrintString(out,i->first);
+      out << " = " << object->Object->Id;
       if(object->Object->HasComment() && i->first != "remoteGlobalIDString")
         {
         out << " ";
@@ -190,7 +194,8 @@ void cmXCodeObject::Print(std::ostream& out)
       }
     else if(object->TypeValue == STRING)
       {
-      out << i->first << " = ";
+      cmXCodeObject::PrintString(out,i->first);
+      out << " = ";
       object->PrintString(out);
       out << ";" << separator;
       }
@@ -230,19 +235,19 @@ void cmXCodeObject::CopyAttributes(cmXCodeObject* copy)
 }
 
 //----------------------------------------------------------------------------
-void cmXCodeObject::PrintString(std::ostream& os) const
+void cmXCodeObject::PrintString(std::ostream& os,cmStdString String)
 {
   // The string needs to be quoted if it contains any characters
   // considered special by the Xcode project file parser.
   bool needQuote =
-    (this->String.empty() ||
-     this->String.find_first_of(" <>.+-=@$") != this->String.npos);
+    (String.empty() ||
+     String.find_first_of(" <>.+-=@$[]") != String.npos);
   const char* quote = needQuote? "\"" : "";
 
   // Print the string, quoted and escaped as necessary.
   os << quote;
-  for(std::string::const_iterator i = this->String.begin();
-      i != this->String.end(); ++i)
+  for(std::string::const_iterator i = String.begin();
+      i != String.end(); ++i)
     {
     if(*i == '"')
       {
@@ -254,6 +259,11 @@ void cmXCodeObject::PrintString(std::ostream& os) const
   os << quote;
 }
 
+void cmXCodeObject::PrintString(std::ostream& os) const
+{
+  cmXCodeObject::PrintString(os,this->String);
+}
+
 //----------------------------------------------------------------------------
 void cmXCodeObject::SetString(const char* s)
 {

+ 1 - 0
Source/cmXCodeObject.h

@@ -141,6 +141,7 @@ public:
     }
   std::vector<cmXCodeObject*> const& GetObjectList() { return this->List;}
   void SetComment(const char* c) { this->Comment = c;}
+  static void PrintString(std::ostream& os,cmStdString String);
 protected:
   void PrintString(std::ostream& os) const;