31 #ifndef _Core_Base_hpp_
32 #define _Core_Base_hpp_
53 namespace Physic {
class Material;}
79 virtual std::string
info()
const;
97 template<
class T>
const T&
cast_to()
const;
98 template<
class T>
bool is()
const;
100 virtual bool is(
size_t)
const;
101 virtual const std::string&
get_ID()
const;
107 virtual std::ostream&
write_ascii (std::ostream& out)
const;
108 virtual std::istream&
read_ascii (std::istream& in);
121 template<
class Archive>
void serialize(Archive & ar,
const unsigned int );
140 return (classID == class_num_ID());
143 inline const std::string&
151 return is(T::class_num_ID());
158 "T must inherit from Core::Base class");
161 return reinterpret_cast<T&
>(*this);
168 "T must inherit from Core::Base class");
171 return reinterpret_cast<const T&
>(*this);
186 template<
class Archive>
195 std::ostringstream os;
227 AssertMsg(
_mat !=
nullptr,
"no material is available for this item");
265 ". You must specialize the Read struct with the given class.");
272 GRANOO_CLASS_DECLARE_TPL(Core::Base);
276 #include <boost/serialization/version.hpp>
286 template <
typename ... Args>
289 template <
typename First,
typename ... Args>
290 struct Concat<First, Args...>
292 static std::string ID() {
293 return First::class_ID() + Concat<Args...>::SEP() + Concat<Args...>::ID();
296 static std::string SEP() {
305 static std::string ID() {
309 static std::string SEP() {
315 template <
typename ... Args>
316 std::string Concatclass_ID() {
317 return Concat<Args...>::ID();
BOOST_CLASS_VERSION(GranOO3::Core::Base, 1) namespace GranOO3
Definition: Base.hpp:277
#define SafeModeAssert(condition, message)
Definition: Macro.hpp:47
#define AssertMsg(condition, message)
Definition: Macro.hpp:67
#define UserAssert(condition, message)
Definition: Macro.hpp:54
Base & operator=(const Base &)=delete
Base & item()
Definition: Base.hpp:237
size_t numID() const
Definition: Base.hpp:201
virtual std::string info() const
Definition: Base.hpp:194
size_t uID() const
Definition: Base.hpp:205
void serialize(Archive &ar, const unsigned int)
Definition: Base.hpp:188
Signal< Base & > _deleted_signal
Definition: Base.hpp:129
bool is() const
Definition: Base.hpp:150
Signal< Base & > & deleted_signal()
Definition: Base.hpp:134
virtual std::ostream & export_to_povray(std::ostream &out) const
Definition: Base.cpp:97
virtual std::istream & read_ascii(std::istream &in)
Definition: Base.cpp:92
T & cast_to()
Definition: Base.hpp:156
static unsigned int get_sub_class_number()
Definition: Base.cpp:59
void set_numID(size_t val)
Definition: Base.hpp:211
Physic::Material * _mat
Definition: Base.hpp:130
static void clear_all_numID()
Definition: Base.cpp:53
virtual ~Base()
Definition: Base.cpp:75
static unsigned int _sub_class_number
Definition: Base.hpp:73
bool is_same(const Base &) const
Definition: Base.hpp:182
static size_t uID_counter
Definition: Base.hpp:74
static Base & get_by_numID(size_t)
Definition: Base.cpp:46
Physic::Material & get_mat() const
Definition: Base.hpp:226
void clear_numID()
Definition: Base.hpp:217
void set_mat(Physic::Material *)
Definition: Base.hpp:232
size_t _uID
Definition: Base.hpp:128
static unsigned int affect_class_rank_ID()
Definition: Base.cpp:64
friend class boost::serialization::access
Definition: Base.hpp:120
T & clone_to()
Definition: Base.hpp:176
Base()
Definition: Base.cpp:70
virtual Base & clone()
Definition: Base.cpp:81
virtual std::ostream & write_ascii(std::ostream &out) const
Definition: Base.cpp:87
size_t _numID
Definition: Base.hpp:127
virtual const std::string & get_ID() const
Definition: Base.hpp:144
static std::map< size_t, Base * > _registered_num
Definition: Base.hpp:124
Definition: Drawable.hpp:55
Definition: SetOf.hpp:346
unsigned long long int get_numeric_ID() const
Definition: SetOfGeneric.hpp:46
static type & get_item_by_base_class_rank(size_t i)
SetOf< typename type::base > * get_base_class_set(SetOfGeneric *)
Definition: Signal.hpp:53
Definition: Material.hpp:69
Definition: Common.hpp:198
T max(const T v0, const T v1)
Definition: Exprtk.hpp:1463
T value(details::expression_node< T > *n)
Definition: Exprtk.hpp:15070
static Base * new_object(const std::string &classID, std::istream &in)
Definition: Base.hpp:263
Definition: SetOfManager.hpp:63
static std::string quote(const std::string &str)
Definition: String.cpp:73
static const std::string empty_string
Definition: String.hpp:45