serialization - C++ class "upgrade" with minimal boiler-plate -
serialization - C++ class "upgrade" with minimal boiler-plate -
let's have following:
struct c1 { int w; } struct b1 { int x; int y; int z; c1 c; }; struct a1 { int x; int y; int z; b1 b; }; struct c2 { long w; short t; } struct b2 { int x; int y; int z; c2 c; }; struct a2 { int x; int y; int z; b2 b; };    and want implement function
a2 upgrade(const a1 &a1);    such takes a1 object, , creates a2 object (assume a2.w = a1.w , a2.t = 6).
an ideal (but impossible knowledge) implementation following:
a2 upgrade(const a1 &a1) {     dynamic d = to_dyn(a1);     d["b"]["c"]["w"] = (long)d["b"]["c"]["w"];     d["b"]["c"]["z"] = (short)5;     a2 a2 = from_dyn(d);      homecoming a2; }    how close can in actual c++?
as classes aggregates, concise , straight-forward using aggregate-initialization:
a2 upgrade(const a1& a) {      homecoming {a.x, a.y, a.z, {a.b.x, a.b.y, a.b.z, {a.b.c.w, (short)5}}}; }    c++ not have facility iterate on types members, neither compile-time nor runtime. there people working on proposal add together such compile-time facility language, still needs much work.
 c++ serialization dynamic reflection types 
 
  
Comments
Post a Comment