*reinterpret_cast<void **>(iter)
= GetObject(fd.TypeId(), *j);
} else {
- Postpone(typeId, id, fd.Offset() + (iter - aggregate), *j, fd.TypeId(), false);
+ Postpone(iter, *j, fd.TypeId(), false);
}
}
}
}
}
} else {
- Postpone(typeId, id, fd.Offset(), i->second->GetIdentifier(), fd.TypeId(), !fd.IsReferenced());
+ Postpone(object, i->second->GetIdentifier(), fd.TypeId(), !fd.IsReferenced(), fd.IsAggregate());
}
}
td.Load(object);
return v.IsLiteral() || source.IsDefined(v.GetIdentifier());
}
-void Interpreter::Postpone(int type, int id, std::ptrdiff_t offset, const std::string &identifier, int linkedType, bool inlined) {
+void Interpreter::Postpone(
+ char *dest,
+ const std::string &identifier,
+ int type,
+ bool inlined,
+ bool aggregate) {
char *str(alloc.Alloc(identifier.size() + 1));
std::memcpy(str, identifier.c_str(), identifier.size());
str[identifier.size()] = '\0';
- postponedDefinitions.push_back(PostponedDefinition(type, id, offset, str, linkedType, inlined));
+ postponedDefinitions.push_back(
+ PostponedDefinition(dest, str, type, inlined, aggregate));
}