Imported Upstream version 2.8.9
[platform/upstream/cmake.git] / Source / cmXCode21Object.cxx
1 /*============================================================================
2   CMake - Cross Platform Makefile Generator
3   Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
4
5   Distributed under the OSI-approved BSD License (the "License");
6   see accompanying file Copyright.txt for details.
7
8   This software is distributed WITHOUT ANY WARRANTY; without even the
9   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10   See the License for more information.
11 ============================================================================*/
12 #include "cmXCode21Object.h"
13 #include "cmSystemTools.h"
14
15 //----------------------------------------------------------------------------
16 cmXCode21Object::cmXCode21Object(PBXType ptype, Type type)
17   :cmXCodeObject(ptype, type)
18 {
19   this->Version = 21;
20 }
21
22 //----------------------------------------------------------------------------
23 void cmXCode21Object::PrintComment(std::ostream& out)
24 {
25   if(this->Comment.size() == 0)
26     {
27     cmXCodeObject* n = this->GetObject("name");
28     if(n)
29       {
30       this->Comment = n->GetString();
31       cmSystemTools::ReplaceString(this->Comment, "\"", "");
32       }
33     }
34   out << "/* ";
35   out << this->Comment;
36   out << " */";
37 }
38
39 //----------------------------------------------------------------------------
40 void cmXCode21Object::PrintList(std::vector<cmXCodeObject*> const& v,
41                                 std::ostream& out, PBXType t)
42 {
43   bool hasOne = false;
44   for(std::vector<cmXCodeObject*>::const_iterator i = v.begin();
45       i != v.end(); ++i)
46     {
47     cmXCodeObject* obj = *i;
48     if(obj->GetType() == OBJECT && obj->GetIsA() == t)
49       {
50       hasOne = true;
51       break;
52       }
53     }
54   if(!hasOne)
55     {
56     return;
57     }
58   out << "\n/* Begin " <<  PBXTypeNames[t] << " section */\n";
59   for(std::vector<cmXCodeObject*>::const_iterator i = v.begin();
60       i != v.end(); ++i)
61     {
62     cmXCodeObject* obj = *i;
63     if(obj->GetType() == OBJECT && obj->GetIsA() == t)
64       {
65         obj->Print(out);
66       }
67     }
68   out << "/* End " <<  PBXTypeNames[t] << " section */\n";
69 }
70
71 //----------------------------------------------------------------------------
72 void cmXCode21Object::PrintList(std::vector<cmXCodeObject*> const& v,
73                                 std::ostream& out)
74 {
75   cmXCodeObject::Indent(1, out);
76   out << "objects = {\n";
77   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXAggregateTarget);
78   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXBuildFile);
79   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXBuildStyle);
80   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXContainerItemProxy);
81   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXFileReference);
82   cmXCode21Object::PrintList(v, out, 
83                              cmXCode21Object::PBXFrameworksBuildPhase);
84   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXGroup);
85   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXHeadersBuildPhase);
86   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXNativeTarget);
87   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXProject);
88   cmXCode21Object::PrintList(v, out, 
89                              cmXCode21Object::PBXShellScriptBuildPhase);
90   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXResourcesBuildPhase);
91   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXSourcesBuildPhase);
92   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXCopyFilesBuildPhase);
93   cmXCode21Object::PrintList(v, out, 
94                              cmXCode21Object::PBXApplicationReference);
95   cmXCode21Object::PrintList(v, out, 
96                              cmXCode21Object::PBXExecutableFileReference);
97   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXLibraryReference);
98   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXToolTarget);
99   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXLibraryTarget);
100   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXTargetDependency);
101   cmXCode21Object::PrintList(v, out, cmXCode21Object::XCBuildConfiguration);
102   cmXCode21Object::PrintList(v, out, cmXCode21Object::XCConfigurationList);
103   cmXCodeObject::Indent(1, out);
104   out << "};\n";
105 }