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); } }
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); } }
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); }
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()); }
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); }
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); }
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()); } }
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)); }
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()); } }
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)); }
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); } }
public Member(MemberHeader MemberHeader = default, ref ptr <io.SectionReader> sr = default) { this.m_MemberHeaderRef = new ptr <MemberHeader>(MemberHeader); this.sr = sr; }
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); } }
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); }
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); }
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); }