cmXCode21Object.cxx 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. #include <ostream>
  5. #include <string>
  6. #include <utility>
  7. #include "cmSystemTools.h"
  8. cmXCode21Object::cmXCode21Object(PBXType ptype, Type type, std::string id)
  9. : cmXCodeObject(ptype, type, std::move(id))
  10. {
  11. this->Version = 21;
  12. }
  13. void cmXCode21Object::PrintComment(std::ostream& out)
  14. {
  15. if (this->Comment.empty()) {
  16. cmXCodeObject* n = this->GetAttribute("name");
  17. if (n) {
  18. this->Comment = n->GetString();
  19. cmSystemTools::ReplaceString(this->Comment, "\"", "");
  20. }
  21. }
  22. if (this->Comment.empty()) {
  23. return;
  24. }
  25. out << " /* " << this->Comment << " */";
  26. }
  27. void cmXCode21Object::PrintList(
  28. std::vector<std::unique_ptr<cmXCodeObject>> const& v, std::ostream& out,
  29. PBXType t)
  30. {
  31. bool hasOne = false;
  32. for (const auto& obj : v) {
  33. if (obj->GetType() == OBJECT && obj->GetIsA() == t) {
  34. hasOne = true;
  35. break;
  36. }
  37. }
  38. if (!hasOne) {
  39. return;
  40. }
  41. out << "\n/* Begin " << PBXTypeNames[t] << " section */\n";
  42. for (const auto& obj : v) {
  43. if (obj->GetType() == OBJECT && obj->GetIsA() == t) {
  44. obj->Print(out);
  45. }
  46. }
  47. out << "/* End " << PBXTypeNames[t] << " section */\n";
  48. }
  49. void cmXCode21Object::PrintList(
  50. std::vector<std::unique_ptr<cmXCodeObject>> const& v, std::ostream& out)
  51. {
  52. cmXCodeObject::Indent(1, out);
  53. out << "objects = {\n";
  54. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXAggregateTarget);
  55. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXBuildFile);
  56. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXBuildStyle);
  57. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXContainerItemProxy);
  58. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXFileReference);
  59. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXFrameworksBuildPhase);
  60. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXGroup);
  61. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXHeadersBuildPhase);
  62. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXNativeTarget);
  63. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXProject);
  64. cmXCode21Object::PrintList(v, out,
  65. cmXCode21Object::PBXShellScriptBuildPhase);
  66. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXResourcesBuildPhase);
  67. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXSourcesBuildPhase);
  68. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXCopyFilesBuildPhase);
  69. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXApplicationReference);
  70. cmXCode21Object::PrintList(v, out,
  71. cmXCode21Object::PBXExecutableFileReference);
  72. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXLibraryReference);
  73. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXToolTarget);
  74. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXLibraryTarget);
  75. cmXCode21Object::PrintList(v, out, cmXCode21Object::PBXTargetDependency);
  76. cmXCode21Object::PrintList(v, out, cmXCode21Object::XCBuildConfiguration);
  77. cmXCode21Object::PrintList(v, out, cmXCode21Object::XCConfigurationList);
  78. cmXCodeObject::Indent(1, out);
  79. out << "};\n";
  80. }