cmXCodeObject.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef cmXCodeObject_h
  2. #define cmXCodeObject_h
  3. #include "cmStandardIncludes.h"
  4. class cmXCodeObject
  5. {
  6. public:
  7. enum Type { OBJECT_LIST, STRING, 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 SetString(const char* s)
  18. {
  19. m_String = "\"";
  20. m_String += s;
  21. m_String += "\"";
  22. }
  23. void AddAttribute(const char* name, cmXCodeObject* value)
  24. {
  25. m_ObjectAttributes[name] = value;
  26. }
  27. void SetObject(cmXCodeObject* value)
  28. {
  29. m_Object = value;
  30. }
  31. void AddObject(cmXCodeObject* value)
  32. {
  33. m_List.push_back(value);
  34. }
  35. static void Indent(int level, std::ostream& out);
  36. void Print(std::ostream& out);
  37. static void PrintList(std::vector<cmXCodeObject*> const&, std::ostream& out);
  38. const char* GetId()
  39. {
  40. return m_Id.c_str();
  41. }
  42. private:
  43. Type m_Type;
  44. cmStdString m_Id;
  45. PBXType m_IsA;
  46. cmStdString m_String;
  47. cmXCodeObject* m_Object;
  48. std::vector<cmXCodeObject*> m_List;
  49. std::map<cmStdString, cmXCodeObject*> m_ObjectAttributes;
  50. };
  51. #endif