43 #ifndef CORE_DATATYPES_DATATYPE_H
44 #define CORE_DATATYPES_DATATYPE_H 1
46 #include <boost/type_traits.hpp>
48 #include <Core/Thread/UsedWithLockingHandle.h>
49 #include <Core/Containers/LockingHandle.h>
50 #include <Core/Thread/RecursiveMutex.h>
66 virtual std::string dynamic_type_name()
const = 0;
68 static int compute_new_generation();
73 #ifdef APPLE_LEOPARD_OR_SNOW_LEOPARD
75 #define SCI_DATATYPE_CAST sci_datatype_cast
79 #define SCI_DATATYPE_CAST dynamic_cast
83 template <
typename TPtr>
91 typedef typename boost::remove_pointer<TPtr>::type return_type;
92 const std::string returnType = return_type::type_id.type;
95 return static_cast<TPtr
>(handle);
Definition: Persistent.h:187
#define SCISHARE
Definition: share.h:39
TPtr sci_datatype_cast(Datatype *handle)
Definition: Datatype.h:84
Base class for persistent objects...
Definition: Datatype.h:56
LockingHandle< Datatype > DatatypeHandle
Definition: Datatype.h:71
static bool is_base_of(const std::string &parent, const std::string &type)
Definition: Persistent.cc:761
int generation
unique id for each instance
Definition: Datatype.h:60
virtual std::string dynamic_type_name() const =0
Definition: UsedWithLockingHandle.h:44