49template <
typename DIMENSION >
51 virtual public Observer< Perspective< DIMENSION > >,
56 typedef std::vector< Id >
Ids;
115 explicit Identifiable(
117 Perspective< DIMENSION >* perspective = NULL
120 physical::
Class< Identifiable< DIMENSION > >(this),
128 Observer< Perspective< DIMENSION > >
::Initialize(perspective);
142 Identifiable(
const Identifiable& other)
144 physical::
Class< Identifiable< DIMENSION > >(this),
150 Observer< Perspective< DIMENSION > >
::Initialize(other.GetPerspective());
157 virtual ~Identifiable()
159 #if BIO_MEMORY_OPTIMIZE_LEVEL == 0
167 virtual operator DIMENSION()
const
176 virtual bool operator==(
const Id id)
const
182 if (!this->GetId() ==
id.m_t)
198 virtual bool operator==(
Name name)
const
223 virtual bool operator==(
const Identifiable< DIMENSION >& other)
const
225 return this->IsId(other.GetId()) && this->
GetPerspective() == other.GetPerspective();
231 virtual Name GetName()
const
233 #if BIO_MEMORY_OPTIMIZE_LEVEL == 0
243 virtual Id GetId()
const
253 virtual void SetName(
Name name)
271 virtual void SetId(
Id id)
288 virtual bool IsName(
Name name)
const
299 virtual bool IsNameInsensitive(
Name name)
const
310 virtual bool IsId(
Id id)
const
319 virtual void SetPerspective(Perspective< DIMENSION >* perspective)
337 virtual void MakeWave(
bool force =
false)
361 virtual Symmetry*
Spin()
const
372 virtual Code
Reify(Symmetry* symmetry)
385 if (args.size() == 2)
387 if (args[1].Is< Perspective< DIMENSION >* >())
389 Observer< Perspective< DIMENSION > >
::Initialize(args[1]);
393 if (args.size() == 1)
395 if (args[0].Is(
m_id))
399 else if (args[0].Is(m_name))
407 #if BIO_MEMORY_OPTIMIZE_LEVEL == 0
415 #if BIO_MEMORY_OPTIMIZE_LEVEL == 0
#define BIO_MEMORY_OPTIMIZE_LEVEL
#define BIO_SANITIZE_WITH_CACHE(test, success, failure)
void Initialize(ByteStreams args)
Class(Identifiable< DIMENSION > *object, Symmetry *symmetry=NULL)
void CloneIntoName(Name name)
BIO_DISAMBIGUATE_ALL_CLASS_METHODS(physical, Identifiable< DIMENSION >) explicit Identifiable(Perspective< DIMENSION > *perspective
virtual Perspective * GetPerspective() const
virtual void SetPerspective(Perspective *perspective)
virtual void InitializeImplementation(ByteStreams args)
Perspective< DIMENSION > Perspective
static Name InvalidName()
virtual Symmetry * Spin() const
virtual Code Reify(Symmetry *symmetry)
void CloneInto(const char *source, const char *&target)
std::vector< ByteStream > ByteStreams