Beispiel #1
0
        public override void Write(ModuleWriter writer)
        {
            // Write the header.
            MemberHeader header = new MemberHeader();

            header.memberType  = (byte)MemberHeaderType.Event;
            header.memberName  = GetModule().RegisterString(GetName());
            header.memberFlags = (uint)GetFlags();
            header.memberSize  = 12;
            header.Write(writer);

            // Write the type and accessors..
            writer.Write((uint)GetModule().RegisterType(GetVariableType()));
            if (addModifier != null)
            {
                writer.Write((uint)addModifier.GetSerialId());
            }
            else
            {
                writer.Write((uint)0);
            }

            if (removeModifier != null)
            {
                writer.Write((uint)removeModifier.GetSerialId());
            }
            else
            {
                writer.Write((uint)0);
            }
        }
Beispiel #2
0
        public override void Write(ModuleWriter writer)
        {
            // Compute the field size.
            int fieldSize = 8;

            if (initializer != null)
            {
                fieldSize += initializer.GetQualifiedSize();
            }

            // Write the header.
            MemberHeader header = new MemberHeader();

            header.memberType       = (byte)MemberHeaderType.Field;
            header.memberName       = GetModule().RegisterString(GetName());
            header.memberFlags      = (uint)GetFlags();
            header.memberSize       = (uint)fieldSize;
            header.memberAttributes = GetAttributeCount();
            header.Write(writer);

            // Write the attributes.
            WriteAttributes(writer);

            // Write the type and the slot.
            writer.Write((uint)GetModule().RegisterType(GetVariableType()));
            writer.Write((int)slot);

            // Write the initializer.
            if (initializer != null)
            {
                initializer.WriteQualified(GetModule(), writer);
            }
        }
Beispiel #3
0
        internal static new void PreloadMember(ChelaModule module, ModuleReader reader, MemberHeader header)
        {
            // Create the temporal interface and register it.
            Interface iface = new Interface(module);
            module.RegisterMember(iface);

            // Read the name.
            iface.name = module.GetString(header.memberName);
            iface.flags = (MemberFlags)header.memberFlags;

            // Skip the class elements.
            reader.Skip(header.memberSize);
        }
Beispiel #4
0
        internal override void Read(ModuleReader reader, MemberHeader header)
        {
            // Get the module.
            ChelaModule module = GetModule();

            // Read the type.
            type = module.GetType(reader.ReadUInt());

            // Read the add modifier.
            addModifier = (Function)module.GetMember(reader.ReadUInt());

            // Read the remove modifier.
            removeModifier = (Function)module.GetMember(reader.ReadUInt());
        }
Beispiel #5
0
        internal static void PreloadMember(ChelaModule module, ModuleReader reader, MemberHeader header)
        {
            // Create the temporal event and register it.
            EventVariable ev = new EventVariable(module);

            module.RegisterMember(ev);

            // Read the name and flags.
            ev.SetName(module.GetString(header.memberName));
            ev.flags = (MemberFlags)header.memberFlags;

            // Skip the structure elements.
            reader.Skip(header.memberSize);
        }
Beispiel #6
0
        internal static void PreloadMember(ChelaModule module, ModuleReader reader, MemberHeader header)
        {
            // Create the temporal field and register it.
            FieldVariable field = new FieldVariable(module);

            module.RegisterMember(field);

            // Read the name and flags.
            field.SetName(module.GetString(header.memberName));
            field.flags = (MemberFlags)header.memberFlags;

            // Skip the structure elements.
            reader.Skip(header.memberSize);
        }
Beispiel #7
0
        public override void Write(ModuleWriter writer)
        {
            // Create the member header.
            MemberHeader mheader = new MemberHeader();

            mheader.memberFlags      = (uint)GetFlags();
            mheader.memberName       = 0;
            mheader.memberAttributes = 0;

            ChelaModule module = GetModule();

            if (factory != null)
            {
                // This is a member instance.
                mheader.memberType = (byte)MemberHeaderType.MemberInstance;
                mheader.memberSize = (uint)8;

                // Write the member header.
                mheader.Write(writer);

                // Write the template.
                writer.Write(module.RegisterMember(template));

                // Write the factory id.
                writer.Write(module.RegisterMember(factory));
            }
            else
            {
                // This is a function instance
                mheader.memberType = (byte)MemberHeaderType.FunctionInstance;
                mheader.memberSize = (uint)(4 + genericInstance.GetSize());

                // Write the member header.
                mheader.Write(writer);

                // Write the template id.
                writer.Write(module.RegisterMember(template));

                // Write the template parameters.
                genericInstance.Write(writer, GetModule());
            }
        }
Beispiel #8
0
        public override void Write(ModuleWriter writer)
        {
            // Create the member header.
            MemberHeader mheader = new MemberHeader();
            mheader.memberType = (byte) MemberHeaderType.MemberInstance;
            mheader.memberFlags = (uint) GetFlags();
            mheader.memberName = 0;
            mheader.memberSize = 8;
            mheader.memberAttributes = 0;

            // Write the header.
            mheader.Write(writer);

            // Write the template.
            ChelaModule module = GetModule();
            writer.Write(module.RegisterMember(template));

            // Write the factory.
            writer.Write(module.RegisterMember(factory));
        }
Beispiel #9
0
        public override void Write(ModuleWriter writer)
        {
            // Create the member header.
            MemberHeader mheader = new MemberHeader();
            mheader.memberFlags = (uint) GetFlags();
            mheader.memberName = 0;
            mheader.memberAttributes = 0;

            ChelaModule module = GetModule();
            if(factory != null)
            {
                // This is a member instance.
                mheader.memberType = (byte)MemberHeaderType.MemberInstance;
                mheader.memberSize = (uint)8;

                // Write the member header.
                mheader.Write(writer);

                // Write the template.
                writer.Write(module.RegisterMember(template));

                // Write the factory id.
                writer.Write(module.RegisterMember(factory));
            }
            else
            {
                // This is a function instance
                mheader.memberType = (byte)MemberHeaderType.FunctionInstance;
                mheader.memberSize = (uint)(4 + genericInstance.GetSize());

                // Write the member header.
                mheader.Write(writer);

                // Write the template id.
                writer.Write(module.RegisterMember(template));

                // Write the template parameters.
                genericInstance.Write(writer, GetModule());
            }
        }
Beispiel #10
0
        public override void Write(ModuleWriter writer)
        {
            // Create the member header.
            MemberHeader mheader = new MemberHeader();

            mheader.memberType       = (byte)MemberHeaderType.MemberInstance;
            mheader.memberFlags      = (uint)GetFlags();
            mheader.memberName       = 0;
            mheader.memberSize       = 8;
            mheader.memberAttributes = 0;

            // Write the header.
            mheader.Write(writer);

            // Write the template.
            ChelaModule module = GetModule();

            writer.Write(module.RegisterMember(template));

            // Write the factory.
            writer.Write(module.RegisterMember(factory));
        }
Beispiel #11
0
        internal override void Read(ModuleReader reader, MemberHeader header)
        {
            // Read the type and slot.
            uint typeId = reader.ReadUInt();

            slot = reader.ReadInt();

            // Load the field type.
            this.type = GetModule().GetType(typeId);

            uint initializerSize = header.memberSize - 8;

            if (!type.IsConstant() || IsExternal())
            {
                // Skip the initializer.
                reader.Skip(initializerSize);
            }
            else
            {
                // Load the initializer.
                initializer = ConstantValue.ReadQualified(GetModule(), reader);
            }
        }
Beispiel #12
0
 public Member(MemberHeader MemberHeader = default, ref ptr <io.SectionReader> sr = default)
 {
     this.m_MemberHeaderRef = new ptr <MemberHeader>(MemberHeader);
     this.sr = sr;
 }
Beispiel #13
0
        internal override void Read(ModuleReader reader, MemberHeader header)
        {
            // Read the type and slot.
            uint typeId = reader.ReadUInt();
            slot = reader.ReadInt();

            // Load the field type.
            this.type = GetModule().GetType(typeId);

            uint initializerSize = header.memberSize - 8;
            if(!type.IsConstant() || IsExternal())
            {
                // Skip the initializer.
                reader.Skip(initializerSize);
            }
            else
            {
                // Load the initializer.
                initializer = ConstantValue.ReadQualified(GetModule(), reader);
            }
        }
Beispiel #14
0
        public override void Write(ModuleWriter writer)
        {
            // Write the header.
            MemberHeader header = new MemberHeader();
            header.memberType = (byte) MemberHeaderType.Event;
            header.memberName = GetModule().RegisterString(GetName());
            header.memberFlags = (uint) GetFlags();
            header.memberSize = 12;
            header.Write(writer);

            // Write the type and accessors..
            writer.Write((uint)GetModule().RegisterType(GetVariableType()));
            if(addModifier != null)
                writer.Write((uint)addModifier.GetSerialId());
            else
                writer.Write((uint)0);

            if(removeModifier != null)
                writer.Write((uint)removeModifier.GetSerialId());
            else
                writer.Write((uint)0);
        }
Beispiel #15
0
        public override void Write(ModuleWriter writer)
        {
            // Compute the field size.
            int fieldSize = 8;
            if(initializer != null)
                fieldSize += initializer.GetQualifiedSize();

            // Write the header.
            MemberHeader header = new MemberHeader();
            header.memberType = (byte) MemberHeaderType.Field;
            header.memberName = GetModule().RegisterString(GetName());
            header.memberFlags = (uint) GetFlags();
            header.memberSize = (uint)fieldSize;
            header.memberAttributes = GetAttributeCount();
            header.Write(writer);

            // Write the attributes.
            WriteAttributes(writer);

            // Write the type and the slot.
            writer.Write((uint)GetModule().RegisterType(GetVariableType()));
            writer.Write((int)slot);

            // Write the initializer.
            if(initializer != null)
                initializer.WriteQualified(GetModule(), writer);
        }
Beispiel #16
0
        internal static void PreloadMember(ChelaModule module, ModuleReader reader, MemberHeader header)
        {
            // Create the temporal field and register it.
            FieldVariable field = new FieldVariable(module);
            module.RegisterMember(field);

            // Read the name and flags.
            field.SetName(module.GetString(header.memberName));
            field.flags = (MemberFlags)header.memberFlags;

            // Skip the structure elements.
            reader.Skip(header.memberSize);
        }
Beispiel #17
0
        internal static void PreloadMember(ChelaModule module, ModuleReader reader, MemberHeader header)
        {
            // Create the temporal event and register it.
            EventVariable ev = new EventVariable(module);
            module.RegisterMember(ev);

            // Read the name and flags.
            ev.SetName(module.GetString(header.memberName));
            ev.flags = (MemberFlags)header.memberFlags;

            // Skip the structure elements.
            reader.Skip(header.memberSize);
        }
Beispiel #18
0
        internal new static void PreloadMember(ChelaModule module, ModuleReader reader, MemberHeader header)
        {
            // Create the temporal interface and register it.
            Interface iface = new Interface(module);

            module.RegisterMember(iface);

            // Read the name.
            iface.name  = module.GetString(header.memberName);
            iface.flags = (MemberFlags)header.memberFlags;

            // Skip the class elements.
            reader.Skip(header.memberSize);
        }
Beispiel #19
0
        internal override void Read(ModuleReader reader, MemberHeader header)
        {
            // Get the module.
            ChelaModule module = GetModule();

            // Read the type.
            type = module.GetType(reader.ReadUInt());

            // Read the add modifier.
            addModifier = (Function)module.GetMember(reader.ReadUInt());

            // Read the remove modifier.
            removeModifier = (Function)module.GetMember(reader.ReadUInt());
        }