cmXCodeObject.h 1.6 KB

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