public LingoHandler(LingoScriptChunk script, ref ShockwaveReader input) : this(script) { NameIndex = input.ReadInt16(); HandlerVectorPosition = input.ReadInt16(); Body = new LingoHandlerBody(this, ref input); int codeOffset = input.ReadInt32(); Arguments.Capacity = input.ReadInt16(); int argumentsOffset = input.ReadInt32(); Locals.Capacity = input.ReadInt16(); int localsOffset = input.ReadInt32(); input.ReadInt16(); //offset(?) input.ReadInt32(); //length(?) input.ReadInt32(); //offset? input.ReadInt16(); //length? BytesPerLine.Capacity = input.ReadInt16(); int lineOffset = input.ReadInt32(); Body.StackHeight = input.ReadInt32(); int handlerEndOffset = input.Position; input.Position = codeOffset; input.ReadBytes(Body.Code); input.Position = argumentsOffset; for (int i = 0; i < Arguments.Capacity; i++) { Arguments.Add(input.ReadInt16()); } input.Position = localsOffset; for (int i = 0; i < Locals.Capacity; i++) { Locals.Add(input.ReadInt16()); } input.Position = lineOffset; for (int i = 0; i < BytesPerLine.Capacity; i++) { BytesPerLine.Add(input.ReadByte()); } input.Position = handlerEndOffset; }
/// <summary> /// GetHashCode() /// </summary> /// <returns></returns> public override int GetHashCode() => CharsPerLine.GetHashCode() ^ BytesPerLine.GetHashCode() ^ GroupSizeInBytes.GetHashCode() ^ ShowOffset.GetHashCode() ^ OffsetLowerCaseHex.GetHashCode() ^ (int)OffsetFormat ^ StartPosition.GetHashCode() ^ EndPosition.GetHashCode() ^ BasePosition.GetHashCode() ^ UseRelativePositions.GetHashCode() ^ ShowValues.GetHashCode() ^ ValuesLowerCaseHex.GetHashCode() ^ OffsetBitSize.GetHashCode() ^ (int)ValuesFormat ^ ShowAscii.GetHashCode() ^ GetHexColumnTypeArrayHashCode(ColumnOrder);