| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 | /*============================================================================  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 cmGeneratorTarget;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<std::string> {};  static const char* PBXTypeNames[];  virtual ~cmXCodeObject();  cmXCodeObject(PBXType ptype, Type type);  Type GetType() { return this->TypeValue;}  PBXType GetIsA() { return this->IsA;}  void SetString(const std::string& s);  const std::string& GetString()    {      return this->String;    }  void AddAttribute(const std::string& 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);  void PrintAttribute(std::ostream& out, const int level,                      const std::string separator, const int factor,                      const std::string& name, const cmXCodeObject* object,                      const cmXCodeObject* parent);  virtual void PrintComment(std::ostream&) {}  static void PrintList(std::vector<cmXCodeObject*> const&,                        std::ostream& out);  const std::string& GetId()    {      return this->Id;    }  void SetId(const std::string& id)    {      this->Id = id;    }  cmGeneratorTarget* GetTarget()    {      return this->Target;    }  void SetTarget(cmGeneratorTarget* t)    {      this->Target = t;    }  const std::string& GetComment() {return this->Comment;}  bool HasComment() { return (!this->Comment.empty());}  cmXCodeObject* GetObject(const char* name)    {      if(this->ObjectAttributes.count(name))        {        return this->ObjectAttributes[name];        }      return 0;    }  // search 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 std::string& configName,                        const std::string& l)    {      this->DependLibraries[configName].push_back(l);    }  std::map<std::string, StringVec> const& GetDependLibraries()    {      return this->DependLibraries;    }  void AddDependTarget(const std::string& configName,                       const std::string& tName)    {      this->DependTargets[configName].push_back(tName);    }  std::map<std::string, StringVec> const& GetDependTargets()    {    return this->DependTargets;    }  std::vector<cmXCodeObject*> const& GetObjectList() { return this->List;}  void SetComment(const std::string& c) { this->Comment = c;}  static void PrintString(std::ostream& os,std::string String);protected:  void PrintString(std::ostream& os) const;  cmGeneratorTarget* Target;  Type TypeValue;  std::string Id;  PBXType IsA;  int Version;  std::string Comment;  std::string String;  cmXCodeObject* Object;  std::vector<cmXCodeObject*> List;  std::map<std::string, StringVec> DependLibraries;  std::map<std::string, StringVec> DependTargets;  std::map<std::string, cmXCodeObject*> ObjectAttributes;};#endif
 |