13 #ifndef __SGOBJECT_H__
14 #define __SGOBJECT_H__
38 class CSerializableFile;
40 template <
class T,
class K>
class CMap;
50 #define VA_NARGS_IMPL(_1, _2, _3, _4, _5, N, ...) N
51 #define VA_NARGS(...) VA_NARGS_IMPL(__VA_ARGS__, 5, 4, 3, 2, 1)
53 #define VARARG_IMPL2(base, count, ...) base##count(__VA_ARGS__)
54 #define VARARG_IMPL(base, count, ...) VARARG_IMPL2(base, count, __VA_ARGS__)
55 #define VARARG(base, ...) VARARG_IMPL(base, VA_NARGS(__VA_ARGS__), __VA_ARGS__)
57 #define SG_ADD4(param, name, description, ms_available) {\
58 m_parameters->add(param, name, description);\
60 m_model_selection_parameters->add(param, name, description);\
63 #define SG_ADD5(param, name, description, ms_available, gradient_available) {\
64 m_parameters->add(param, name, description);\
66 m_model_selection_parameters->add(param, name, description);\
67 if (gradient_available)\
68 m_gradient_parameters->add(param, name, description);\
71 #define SG_ADD(...) VARARG(SG_ADD, __VA_ARGS__)
137 virtual const char*
get_name()
const = 0;
147 virtual bool is_generic(EPrimitiveType*
generic)
const;
206 const char* prefix=
"");
221 int32_t current_version,
239 int32_t& base_version,
356 TParameter*& to_migrate,
char* old_name=NULL);
432 void set_global_objects();
433 void unset_global_objects();
441 bool is_param_new(const
SGParamInfo param_info) const;
452 int32_t param_version=
Version::get_version_parameter());
458 const
char* prefix="");
468 void get_parameter_incremental_hash(uint32_t& hash, uint32_t& carry,
469 uint32_t& total_length);
498 EPrimitiveType m_generic;
499 bool m_load_pre_called;
500 bool m_load_post_called;
501 bool m_save_pre_called;
502 bool m_save_post_called;
505 #endif // __SGOBJECT_H__