| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 | /*============================================================================  CMake - Cross Platform Makefile Generator  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium  Distributed under the OSI-approved BSD License (the "License");  see accompanying file Copyright.txt for details.  This software is distributed WITHOUT ANY WARRANTY; without even the  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the License for more information.============================================================================*/#ifndef cmXCodeObject_h#define cmXCodeObject_h#include "cmStandardIncludes.h"class cmTarget;class cmXCodeObject{public:  enum Type { OBJECT_LIST, STRING, 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,                 PBXAggregateTarget,XCBuildConfiguration,XCConfigurationList,                 PBXCopyFilesBuildPhase,                 None  };  class StringVec: public std::vector<cmStdString> {};  static const char* PBXTypeNames[];  virtual ~cmXCodeObject();  cmXCodeObject(PBXType ptype, Type type);  Type GetType() { return this->TypeValue;}  PBXType GetIsA() { return this->IsA;}  void SetString(const char* s);  const char* GetString()    {      return this->String.c_str();    }  void AddAttribute(const char* name, cmXCodeObject* value)    {      this->ObjectAttributes[name] = value;    }  void SetObject(cmXCodeObject* value)    {      this->Object = value;    }  cmXCodeObject* GetObject()    {      return this->Object;    }  void AddObject(cmXCodeObject* value)    {      this->List.push_back(value);    }  bool HasObject(cmXCodeObject* o)  {    return !(std::find(this->List.begin(), this->List.end(), o)             == this->List.end());  }  void AddUniqueObject(cmXCodeObject* value)  {    if(std::find(this->List.begin(), this->List.end(), value)       == this->List.end())      {      this->List.push_back(value);      }  }  static void Indent(int level, std::ostream& out);  void Print(std::ostream& out);  virtual void PrintComment(std::ostream&) {};  static void PrintList(std::vector<cmXCodeObject*> const&,                        std::ostream& out);  const char* GetId()    {      return this->Id.c_str();    }  void SetId(const char* id)    {      this->Id = id;    }  cmTarget* GetTarget()    {      return this->Target;    }  void SetTarget(cmTarget* t)    {      this->Target = t;    }  const char* GetComment() {return this->Comment.c_str();}  bool HasComment() { return (this->Comment.size() !=  0);}  cmXCodeObject* GetObject(const char* name)    {      if(this->ObjectAttributes.count(name))        {        return this->ObjectAttributes[name];        }      return 0;    }  // serach the attribute list for an object of the specified type  cmXCodeObject* GetObject(cmXCodeObject::PBXType t)    {      for(std::vector<cmXCodeObject*>::iterator i = this->List.begin();          i != this->List.end(); ++i)        {        cmXCodeObject* o = *i;        if(o->IsA == t)          {          return o;          }        }      return 0;    }  void CopyAttributes(cmXCodeObject* );  void AddDependLibrary(const char* configName,                        const char* l)    {      if(!configName)        {        configName = "";        }      this->DependLibraries[configName].push_back(l);    }  std::map<cmStdString, StringVec> const& GetDependLibraries()    {      return this->DependLibraries;    }  void AddDependTarget(const char* configName,                       const char* tName)    {      if(!configName)        {        configName = "";        }      this->DependTargets[configName].push_back(tName);    }  std::map<cmStdString, StringVec> const& GetDependTargets()    {    return this->DependTargets;    }  std::vector<cmXCodeObject*> const& GetObjectList() { return this->List;}  void SetComment(const char* c) { this->Comment = c;}  static void PrintString(std::ostream& os,cmStdString String);protected:  void PrintString(std::ostream& os) const;  cmTarget* Target;  Type TypeValue;  cmStdString Id;  PBXType IsA;  int Version;  cmStdString Comment;  cmStdString String;  cmXCodeObject* Object;  std::vector<cmXCodeObject*> List;  std::map<cmStdString, StringVec> DependLibraries;  std::map<cmStdString, StringVec> DependTargets;  std::map<cmStdString, cmXCodeObject*> ObjectAttributes;};#endif
 |