cmXCode21Object.cxx 3.3 KB

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