/* Save a member */ decl_mem( struct_name, decl ) { auto *e = lookup_tab( structtab, 32, struct_name ); /* sizeof(struct_entry) */ if (!e) int_error("No such struct found '%s'", struct_name); if (e[3]) int_error("Struct '%s' is sealed", struct_name); /* TODO: We need to pack members a bit better than this. * { char a, b, c; } has size 4, not 12. */ save_sym( &e[5], decl, e[1], 0 ); e[1] += promote_sz( type_size( decl[2] ) ); }
void IrrepSpace::Save(std::ofstream &ofs) { boost::archive::binary_oarchive save_sym(ofs); save_sym << *this; }