public Module(string name) { Classes = new List<Class>(); Methods = new List<Method>(); Fields = new List<Variant>(); Body = null; Name = name; }
private void WriteMethod(Method method, BinaryWriter stream) { stream.Write(method.Name); stream.Write((ushort)method.ArgumentCount); stream.Write((ushort)method.Variables.Count); // TODO This is incredibly lazy and it's bulkier than Nick's Mom because of it stream.Write((uint)method.Instructions.Count); foreach (Instruction instr in method.Instructions) { stream.Write((byte)instr.Opcode); if (instr.Operands == null) { stream.Write((byte)0); continue; } stream.Write((byte)instr.Operands.Count); foreach (Variant v in instr.Operands) { stream.Write((byte)v.Type); switch (v.Type) { case VariantType.String: stream.Write(v.StringValue); break; case VariantType.Double: stream.Write(v.DoubleValue); break; case VariantType.Int64: stream.Write(v.IntValue); break; case VariantType.Array: stream.Write((uint)v.ArrayValue.Count); break; case VariantType.Object: // TODO What to do? break; case VariantType.Nil: break; } } } }