Example #1
0
    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);
    }
Example #2
0
    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);
        }
    }