inline Class *GetClass(Module *module, const std::string &className) { Member *member = module->GetMember(className); if(!member || !member->IsClass()) throw VirtualMachineException("Failed to load " + className); // Cast the class. return static_cast<Class*> (member); }
void TypeGroup::ReadStructure(ModuleReader &reader, const MemberHeader &header) { // Read the group members. Member *parent = GetParent(); Module *module = GetModule(); int count = header.memberSize/4; for(int i = 0; i < count; i++) { uint32_t id; reader >> id; // Get the member and check it.. Member *member = module->GetMember(id); if(!member->IsClass() && !member->IsStructure() && !member->IsInterface()) throw ModuleException("expected class/structure/interface member in type group."); // Store the member. buildings.push_back(static_cast<Structure*> (member)); // Update his parent. if(member && parent) member->UpdateParent(parent); } }