refs #876 All metaclass mixins now directly access the metamembers.

This avoids bloating CMetaClassIntrospector with inconvenient convenience methods.
This commit is contained in:
Mathew Sutcliffe
2017-02-10 02:18:25 +00:00
parent 0e0f068471
commit 7b8d88876f
6 changed files with 30 additions and 79 deletions

View File

@@ -84,7 +84,7 @@ namespace BlackMisc
{
baseMarshall(static_cast<const TBaseOfT<Derived> *>(derived()), arg);
auto meta = introspect<Derived>().without(MetaFlags<DisabledForMarshalling>());
meta.forEachMember(*derived(), [ & ](const auto &member) { Private::marshallMember(arg, member); });
meta.forEachMember([ &, this ](auto member) { Private::marshallMember(arg, member.in(*derived())); });
}
//! Unmarshall without begin/endStructure, for when composed within another object
@@ -92,7 +92,7 @@ namespace BlackMisc
{
baseUnmarshall(static_cast<TBaseOfT<Derived> *>(derived()), arg);
auto meta = introspect<Derived>().without(MetaFlags<DisabledForMarshalling>());
meta.forEachMember(*derived(), [ & ](auto &member) { Private::unmarshallMember(arg, member); });
meta.forEachMember([ &, this ](auto member) { Private::unmarshallMember(arg, member.in(*derived())); });
}
private: