32 if (info::is_fundamental(rt->get_type_id())) {
33 if (info::is_fundamental(value_rt->get_type_id())) {
34 cgv::type::assign_variant(rt->get_type_name(), member_ptr, value_rt->get_type_name(), value_ptr);
37 else if (value_rt->has_string_conversions()) {
39 value_rt->get_to_string(value_ptr, tmp_str);
40 set_variant(tmp_str, rt->get_type_name(), member_ptr);
45 if (!valid && rt->has_string_conversions() && value_rt->has_string_conversions()) {
47 value_rt->get_to_string(value_ptr, tmp);
48 valid = rt->set_from_string(member_ptr, tmp);
50 if (!valid && rt->has_string_conversions() && value_rt->get_type_id() ==
info::TI_STRING) {
51 valid = rt->set_from_string(member_ptr, *
static_cast<const std::string*
>(value_ptr));
55 if (info::is_fundamental(rt->get_type_id())) {
56 cgv::type::assign_variant(rt->get_type_name(), member_ptr, value_type, value_ptr);
59 else if (value_type == rt->get_type_name()) {
60 memcpy(member_ptr, value_ptr, rt->size());
63 else if (value_type ==
"string" && rt->has_string_conversions()) {
64 valid = rt->set_from_string(member_ptr, *
static_cast<const std::string*
>(value_ptr));
virtual void process_member_void(const std::string &member_name, void *member_ptr, abst_reflection_traits *rt, GroupKind group_kind=GK_NO_GROUP, unsigned grp_size=-1)
virtual method that is overloaded by derived classes to handle the target member
void process_member_void(const std::string &member_name, void *member_ptr, abst_reflection_traits *rt, GroupKind group_kind, unsigned grp_size)
virtual method that is overloaded by derived classes to handle the target member
set_reflection_handler(const std::string &_target, const std::string &_value_type, const void *_value_ptr, abst_reflection_traits *_value_rt=0)
construct from target, value type, pointer to value and optionally reflection_traits