#ifndef cmXCodeObject_h #define cmXCodeObject_h #include "cmStandardIncludes.h" class cmXCodeObject { public: enum Type { OBJECT_LIST, ATTRIBUTE_GROUP, OBJECT_REF, OBJECT }; enum PBXType { PBXGroup, PBXBuildStyle, PBXProject, PBXHeadersBuildPhase, PBXSourcesBuildPhase, PBXFrameworksBuildPhase, PBXNativeTarget, PBXFileReference, PBXBuildFile, PBXContainerItemProxy, PBXTargetDependency, PBXShellScriptBuildPhase, PBXResourcesBuildPhase, PBXApplicationReference, PBXExecutableFileReference, PBXLibraryReference, PBXToolTarget, PBXLibraryTarget, None }; static const char* PBXTypeNames[]; cmXCodeObject(PBXType ptype, Type type); void AddAttribute(const char* name, const char* value) { m_StringAttributes[name] = value; } void AddAttribute(const char* name, cmXCodeObject* value) { m_ObjectAttributes[name] = value; } void SetObject(cmXCodeObject* value) { m_Object = value; } void AddObject(cmXCodeObject* value) { m_List.push_back(value); } static void Indent(int level, std::ostream& out); void Print(std::ostream& out); static void PrintList(std::vector const&, std::ostream& out); const char* GetId() { return m_Id.c_str(); } private: Type m_Type; cmStdString m_Id; PBXType m_IsA; cmXCodeObject* m_Object; std::vector m_List; std::map m_ObjectAttributes; std::map m_StringAttributes; }; #endif