Exemplo n.º 1
0
 internal static uint Write(object argument, IDefinitionWriter writer)
 {
     var(parameterCount, type) = (Constructor)argument;
     writer.WriteValueU8(parameterCount);
     writer.WriteReference(type);
     return(9);
 }
Exemplo n.º 2
0
        public static uint Write(object argument, IDefinitionWriter writer)
        {
            var local = (LocalDefinition)argument;

            writer.WriteReference(local);
            return(8);
        }
Exemplo n.º 3
0
 public static uint Write(object argument, IDefinitionWriter writer)
 {
     var(bytes, unknown) = ((byte[], byte))argument;
     writer.WriteBytes(bytes);
     writer.WriteValueU8(unknown);
     return((uint)bytes.Length + 5);
 }
Exemplo n.º 4
0
        public static uint Write(object argument, IDefinitionWriter writer)
        {
            var definition = (T)argument;

            writer.WriteReference(definition);
            return(8);
        }
Exemplo n.º 5
0
        public static uint Write(object argument, IDefinitionWriter writer)
        {
            var native = (NativeDefinition)argument;

            writer.WriteReference(native);
            return(8);
        }
Exemplo n.º 6
0
        public static uint Write(object argument, IDefinitionWriter writer)
        {
            var parameter = (ParameterDefinition)argument;

            writer.WriteReference(parameter);
            return(8);
        }
Exemplo n.º 7
0
        public static uint Write(object argument, IDefinitionWriter writer)
        {
            var property = (PropertyDefinition)argument;

            writer.WriteReference(property);
            return(8);
        }
Exemplo n.º 8
0
 internal static uint Write(object argument, IDefinitionWriter writer)
 {
     var(type, size) = (EnumCast)argument;
     writer.WriteReference(type);
     writer.WriteValueU8(size);
     return(9);
 }
Exemplo n.º 9
0
 internal static uint Write(object argument, IDefinitionWriter writer)
 {
     var (type, unknown) = (DynamicCast)argument;
     writer.WriteReference(type);
     writer.WriteValueU8(unknown);
     return 9;
 }
Exemplo n.º 10
0
 internal static uint Write(object argument, IDefinitionWriter writer)
 {
     var(enumeration, enumeral) = (EnumConst)argument;
     writer.WriteReference(enumeration);
     writer.WriteReference(enumeral);
     return(16);
 }
Exemplo n.º 11
0
 internal static uint Write(object argument, IDefinitionWriter writer)
 {
     var(type, firstCaseOffset) = (Switch)argument;
     firstCaseOffset           -= 1 + 8 + 2; // make relative to the jump offset
     writer.WriteReference(type);
     writer.WriteValueS16(firstCaseOffset);
     return(10);
 }
Exemplo n.º 12
0
        public static uint Write(object argument, IDefinitionWriter writer)
        {
            var targetOffset = (short)argument;

            targetOffset -= 1 + 2; // make relative to the jump offset;
            writer.WriteValueS16(targetOffset);
            return(2);
        }
Exemplo n.º 13
0
 internal static uint Write(object argument, IDefinitionWriter writer)
 {
     var(falseOffset, trueOffset) = (SwitchLabel)argument;
     falseOffset -= 1 + 2;     // make relative to the jump offset
     trueOffset  -= 1 + 2 + 2; // make relative to the jump offset
     writer.WriteValueS16(falseOffset);
     writer.WriteValueS16(trueOffset);
     return(4);
 }
Exemplo n.º 14
0
 internal static uint Write(object argument, IDefinitionWriter writer)
 {
     var(jnextOffset, sourceLine, function) = (FinalFunc_Offset)argument;
     jnextOffset -= 1 + 2; // make relative to the jump offset;
     writer.WriteValueS16(jnextOffset);
     writer.WriteValueU16(sourceLine);
     writer.WriteReference(function);
     return(12);
 }
Exemplo n.º 15
0
        internal override void Serialize(IDefinitionWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            writer.WriteValueS64(this.Value);
        }
Exemplo n.º 16
0
        internal static uint Write(IDefinitionWriter writer, IEnumerable <Instruction> body)
        {
            uint size = 0;

            foreach (var instruction in body)
            {
                size += InstructionHandlers.Write(instruction, writer);
            }
            return(size);
        }
Exemplo n.º 17
0
        internal override void Serialize(IDefinitionWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            writer.WriteReference(this.Type);
            writer.WriteValueU8(this.Unknown28);
        }
        internal override void Serialize(IDefinitionWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            writer.WriteValueU32(this.Id);
            writer.WriteValueU64(this.PathHash);
            writer.WriteStringU16(this.Path);
        }
Exemplo n.º 19
0
 public static uint Write(object argument, IDefinitionWriter writer)
 {
     var(unknown0, unknown1, unknown2, unknown3, unknown4, unknown5) = ((ushort, uint, ushort, ushort, byte, ulong))argument;
     writer.WriteValueU16(unknown0);
     writer.WriteValueU32(unknown1);
     writer.WriteValueU16(unknown2);
     writer.WriteValueU16(unknown3);
     writer.WriteValueU8(unknown4);
     writer.WriteValueU64(unknown5);
     return(19);
 }
Exemplo n.º 20
0
        internal static uint Write(object argument, IDefinitionWriter writer)
        {
            var instance   = (VirtualFunc)argument;
            var jumpOffset = instance.JumpOffset;

            jumpOffset -= 1 + 2; // make relative to the jump offset
            writer.WriteValueS16(jumpOffset);
            writer.WriteValueU16(instance.SourceLine);
            writer.WriteName(instance.Function);
            return(12);
        }
Exemplo n.º 21
0
        internal override void Serialize(IDefinitionWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            writer.WriteValueU8((byte)this.Visibility);
            writer.WriteValueU32((uint)this.Flags);

            if ((this.Flags & FunctionFlags.IsNative) == 0)
            {
                writer.WriteReference(this.SourceFile);
                writer.WriteValueU32(this.SourceLine);
            }

            if ((this.Flags & FunctionFlags.HasReturnValue) != 0)
            {
                writer.WriteReference(this.ReturnType);
                writer.WriteValueB8(this.Unknown50);
            }

            if ((this.Flags & FunctionFlags.Unknown8) != 0)
            {
                writer.WriteReference(this.Unknown58);
            }

            if ((this.Flags & FunctionFlags.HasParameters) != 0)
            {
                writer.WriteReferences(this.Parameters);
            }
            if ((this.Flags & FunctionFlags.HasLocals) != 0)
            {
                writer.WriteReferences(this.Locals);
            }
            if ((this.Flags & FunctionFlags.Unknown6) != 0)
            {
                writer.WriteValueU32(this.Unknown98);
            }
            if ((this.Flags & FunctionFlags.Unknown12) != 0)
            {
                writer.WriteValueU8(this.UnknownA0);
            }
            if ((this.Flags & FunctionFlags.HasBody) != 0)
            {
                var bodySizePosition = writer.Position;
                writer.WriteValueU32(uint.MaxValue);
                var bodySize    = Instructions.Write(writer, this.Body);
                var endPosition = writer.Position;
                writer.Position = bodySizePosition;
                writer.WriteValueU32(bodySize);
                writer.Position = endPosition;
            }
        }
Exemplo n.º 22
0
        internal override void Serialize(IDefinitionWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            writer.WriteValueU8(this.Unknown2A);
            writer.WriteValueU8(this.Size);
            writer.WriteReferences(this.Enumerals);
            writer.WriteValueB8(this.Unknown29);
        }
Exemplo n.º 23
0
        internal override void Serialize(IDefinitionWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            writer.WriteValueU8((byte)this.NativeType);

            if (HasBaseType(this.NativeType) == true)
            {
                writer.WriteReference(this.BaseType);
            }

            if (this.NativeType == NativeType.StaticArray)
            {
                writer.WriteValueU32(this.ArraySize);
            }
        }
        internal static uint Write(Instruction instruction, IDefinitionWriter writer)
        {
            var op = instruction.Op;

            uint size = 0;

            writer.WriteValueU8((byte)op);
            size++;

            if (_Lookup.TryGetValue(op, out var handler) == false)
            {
                throw new FormatException($"no handler for {op}");
            }

            if (handler.write != null)
            {
                size += handler.write(instruction.Argument, writer);
            }

            return(size);
        }
Exemplo n.º 25
0
        internal override void Serialize(IDefinitionWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            writer.WriteValueU8((byte)this.Visibility);
            writer.WriteValueU16((ushort)this.Flags);
            writer.WriteReference(this.BaseClass);
            if ((this.Flags & ClassFlags.HasFunctions) != 0)
            {
                writer.WriteReferences(this.Functions);
            }
            if ((this.Flags & ClassFlags.Unknown5) != 0)
            {
                writer.WriteReferences(this.Unknown20s);
            }
            if ((this.Flags & ClassFlags.Unknown8) != 0)
            {
                writer.WriteReferences(this.Unknown30s);
            }
        }
Exemplo n.º 26
0
 public static uint Write(object argument, IDefinitionWriter writer)
 {
     writer.WriteValueU8((byte)argument);
     return(1);
 }
Exemplo n.º 27
0
 public static uint Write(object argument, IDefinitionWriter writer)
 {
     writer.WriteValueS16((short)argument);
     return(2);
 }
Exemplo n.º 28
0
 public static uint Write(object argument, IDefinitionWriter writer)
 {
     writer.WriteValueS64((long)argument);
     return(8);
 }
Exemplo n.º 29
0
 public static uint Write(object argument, IDefinitionWriter writer)
 {
     writer.WriteResource((string)argument);
     return(8);
 }
Exemplo n.º 30
0
 public static uint Write(object argument, IDefinitionWriter writer)
 {
     writer.WriteValueS32((int)argument);
     return(4);
 }