}
}
-#define STATE_VERSION 1
+#define STATE_VERSION 2
void VM::save_state(FILEIO* state_fio)
{
state_fio->FputUint32(STATE_VERSION);
for(DEVICE* device = first_device; device; device = device->next_device) {
+ const char *name = typeid(*device).name() + 6; // skip "class "
+
+ state_fio->FputInt32(strlen(name));
+ state_fio->Fwrite(name, strlen(name), 1);
device->save_state(state_fio);
}
}
return false;
}
for(DEVICE* device = first_device; device; device = device->next_device) {
+ const char *name = typeid(*device).name() + 6; // skip "class "
+
+ if(!(state_fio->FgetInt32() == strlen(name) && state_fio->Fcompare(name, strlen(name)))) {
+ return false;
+ }
if(!device->load_state(state_fio)) {
return false;
}