Commit 4d8aa4f0 authored by neverlord's avatar neverlord

bugfix

parent 754dbbe1
......@@ -28,6 +28,7 @@ struct list_member_util
{
list.push_back(get<value_type>(d->read_value(vptype)));
}
d->end_sequence();
}
};
......@@ -49,6 +50,7 @@ struct list_member_util<List, false>
{
m_value_type->serialize(&(*i), s);
}
s->end_sequence();
}
void operator()(List& list, deserializer* d) const
......@@ -61,6 +63,7 @@ struct list_member_util<List, false>
m_value_type->deserialize(&tmp, d);
list.push_back(tmp);
}
d->end_sequence();
}
};
......
......@@ -180,6 +180,11 @@ class string_deserializer : public deserializer
error += "' found '";
error += *m_pos;
error += "'";
if (m_open_objects.empty() == false)
{
error += "during deserialization an instance of ";
error += m_open_objects.top();
}
throw_malformed(error);
}
++m_pos;
......@@ -306,6 +311,7 @@ class string_deserializer : public deserializer
void end_sequence()
{
integrity_check();
consume('}');
}
......
......@@ -124,6 +124,28 @@ void deserialize_nullptr(deserializer* source)
source->end_object();
}
class void_type_tinfo : public util::abstract_uniform_type_info<void_type>
{
protected:
void serialize(const void*, serializer* sink) const
{
serialize_nullptr(sink);
}
void deserialize(void*, deserializer* source) const
{
std::string cname = source->seek_object();
if (cname != name())
{
throw std::logic_error("wrong type name found");
}
deserialize_nullptr(source);
}
};
class actor_ptr_tinfo : public util::abstract_uniform_type_info<actor_ptr>
{
......@@ -645,7 +667,8 @@ class uniform_type_info_map_helper
insert(d, new channel_ptr_tinfo, { raw_name<channel_ptr>() });
//insert(d, new message_tinfo, { raw_name<any_tuple>() });
insert(d, new atom_value_tinfo, { raw_name<atom_value>() });
insert(d, new addr_msg_tinfo, {raw_name<detail::addressed_message>()});
insert(d, new addr_msg_tinfo, {raw_name<detail::addressed_message>() });
insert(d, new void_type_tinfo, { raw_name<void_type>() });
insert<float>(d);
if (sizeof(double) == sizeof(long double))
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment