cmXCodeObject.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef cmXCodeObject_h
  2. #define cmXCodeObject_h
  3. #include "cmStandardIncludes.h"
  4. class cmTarget;
  5. class cmXCodeObject
  6. {
  7. public:
  8. enum Type { OBJECT_LIST, STRING, ATTRIBUTE_GROUP, OBJECT_REF, OBJECT };
  9. enum PBXType { PBXGroup, PBXBuildStyle, PBXProject, PBXHeadersBuildPhase,
  10. PBXSourcesBuildPhase, PBXFrameworksBuildPhase,
  11. PBXNativeTarget, PBXFileReference, PBXBuildFile,
  12. PBXContainerItemProxy, PBXTargetDependency,
  13. PBXShellScriptBuildPhase, PBXResourcesBuildPhase,
  14. PBXApplicationReference, PBXExecutableFileReference,
  15. PBXLibraryReference, PBXToolTarget, PBXLibraryTarget,
  16. PBXAggregateTarget,
  17. None
  18. };
  19. static const char* PBXTypeNames[];
  20. ~cmXCodeObject();
  21. cmXCodeObject(PBXType ptype, Type type);
  22. void SetString(const char* s)
  23. {
  24. m_String = "\"";
  25. m_String += s;
  26. m_String += "\"";
  27. }
  28. void AddAttribute(const char* name, cmXCodeObject* value)
  29. {
  30. m_ObjectAttributes[name] = value;
  31. }
  32. void SetObject(cmXCodeObject* value)
  33. {
  34. m_Object = value;
  35. }
  36. void AddObject(cmXCodeObject* value)
  37. {
  38. m_List.push_back(value);
  39. }
  40. static void Indent(int level, std::ostream& out);
  41. void Print(std::ostream& out);
  42. static void PrintList(std::vector<cmXCodeObject*> const&, std::ostream& out);
  43. const char* GetId()
  44. {
  45. return m_Id.c_str();
  46. }
  47. cmTarget* GetcmTarget()
  48. {
  49. return m_cmTarget;
  50. }
  51. void SetcmTarget(cmTarget* t)
  52. {
  53. m_cmTarget = t;
  54. }
  55. cmXCodeObject* GetObject(const char* name)
  56. {
  57. if(m_ObjectAttributes.count(name))
  58. {
  59. return m_ObjectAttributes[name];
  60. }
  61. return 0;
  62. }
  63. private:
  64. cmTarget* m_cmTarget;
  65. Type m_Type;
  66. cmStdString m_Id;
  67. PBXType m_IsA;
  68. cmStdString m_String;
  69. cmXCodeObject* m_Object;
  70. std::vector<cmXCodeObject*> m_List;
  71. std::map<cmStdString, cmXCodeObject*> m_ObjectAttributes;
  72. };
  73. #endif