-operator>>(unmarshall &u, E &e) {
- e = to_enum<E>(u.grab<enum_type_t<E>>());
+operator>>(unmarshall & u, E & e) {
+ e = to_enum<E>(u._grab<enum_type_t<E>>());
+ return u;
+}
+
+//
+// Recursive marshalling
+//
+
+inline marshall & operator<<(marshall & m, marshall & n) {
+ return m << n.content();
+}
+
+inline unmarshall & operator>>(unmarshall & u, unmarshall & v) {
+ v = unmarshall(u._grab<string>(), false);