cmXCodeObject.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "cmStandardIncludes.h"
  2. class cmXCodeObject
  3. {
  4. public:
  5. enum Type { OBJECT_LIST, ATTRIBUTE_GROUP, OBJECT_REF, OBJECT };
  6. enum PBXType { PBXGroup, PBXBuildStyle, PBXProject, PBXHeadersBuildPhase,
  7. PBXSourcesBuildPhase, PBXFrameworksBuildPhase, PBXNativeTarget,
  8. PBXFileReference, PBXBuildFile, PBXContainerItemProxy, PBXTargetDependency,
  9. PBXShellScriptBuildPhase, PBXResourcesBuildPhase, PBXApplicationReference,
  10. PBXExecutableFileReference, PBXLibraryReference, PBXToolTarget, PBXLibraryTarget,
  11. None
  12. };
  13. static const char* PBXTypeNames[];
  14. cmXCodeObject(PBXType ptype, Type type);
  15. void AddAttribute(const char* name, const char* value)
  16. {
  17. m_StringAttributes[name] = value;
  18. }
  19. void AddAttribute(const char* name, cmXCodeObject* value)
  20. {
  21. m_ObjectAttributes[name] = value;
  22. }
  23. void SetObject(cmXCodeObject* value)
  24. {
  25. m_Object = value;
  26. }
  27. void AddObject(cmXCodeObject* value)
  28. {
  29. m_List.push_back(value);
  30. }
  31. void Indent(int level, std::ostream& out);
  32. void Print(std::ostream& out);
  33. static void PrintAll(std::ostream& out);
  34. const char* GetId()
  35. {
  36. return m_Id.c_str();
  37. }
  38. Type m_Type;
  39. cmStdString m_Id;
  40. PBXType m_IsA;
  41. cmXCodeObject* m_Object;
  42. std::vector<cmXCodeObject*> m_List;
  43. std::map<cmStdString, cmXCodeObject*> m_ObjectAttributes;
  44. std::map<cmStdString, cmStdString> m_StringAttributes;
  45. static std::vector<cmXCodeObject*> s_AllObjects;
  46. };