resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmXCode21Object.cxx
1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing for details.  */
3 #include "cmXCode21Object.h"
4
5 #include <ostream>
6 #include <string>
7 #include <utility>
8
9 #include "cmSystemTools.h"
10
11 cmXCode21Object::cmXCode21Object(PBXType ptype, Type type, std::string id)
12   : cmXCodeObject(ptype, type, std::move(id))
13 {
14   this->Version = 21;
15 }
16
17 void cmXCode21Object::PrintComment(std::ostream& out)
18 {
19   if (this->Comment.empty()) {
20     cmXCodeObject* n = this->GetAttribute("name");
21     if (n) {
22       this->Comment = n->GetString();
23       cmSystemTools::ReplaceString(this->Comment, "\"", "");
24     }
25   }
26   if (this->Comment.empty()) {
27     return;
28   }
29   out << " /* ";
30   out << this->Comment;
31   out << " */";
32 }
33
34 void cmXCode21Object::PrintList(
35   std::vector<std::unique_ptr<cmXCodeObject>> const& v, std::ostream& out,
36   PBXType t)
37 {
38   bool hasOne = false;
39   for (const auto& obj : v) {
40     if (obj->GetType() == OBJECT && obj->GetIsA() == t) {
41       hasOne = true;
42       break;
43     }
44   }
45   if (!hasOne) {
46     return;
47   }
48   out << "\n/* Begin " << PBXTypeNames[t] << " section */\n";
49   for (const auto& obj : v) {
50     if (obj->GetType() == OBJECT && obj->GetIsA() == t) {
51       obj->Print(out);
52     }
53   }
54   out << "/* End " << PBXTypeNames[t] << " section */\n";
55 }
56
57 void cmXCode21Object::PrintList(
58   std::vector<std::unique_ptr<cmXCodeObject>> const& v, std::ostream& out)
59 {
60   cmXCodeObject::Indent(1, out);
61   out << "objects = {\n";
62   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXAggregateTarget);
63   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXBuildFile);
64   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXBuildStyle);
65   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXContainerItemProxy);
66   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXFileReference);
67   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXFrameworksBuildPhase);
68   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXGroup);
69   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXHeadersBuildPhase);
70   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXNativeTarget);
71   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXProject);
72   cmXCode21Object::PrintList(v, out,
73                              cmXCode21Object::PBXShellScriptBuildPhase);
74   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXResourcesBuildPhase);
75   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXSourcesBuildPhase);
76   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXCopyFilesBuildPhase);
77   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXApplicationReference);
78   cmXCode21Object::PrintList(v, out,
79                              cmXCode21Object::PBXExecutableFileReference);
80   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXLibraryReference);
81   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXToolTarget);
82   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXLibraryTarget);
83   cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXTargetDependency);
84   cmXCode21Object::PrintList(v, out, cmXCode21Object::XCBuildConfiguration);
85   cmXCode21Object::PrintList(v, out, cmXCode21Object::XCConfigurationList);
86   cmXCodeObject::Indent(1, out);
87   out << "};\n";
88 }