public static DebugNativeEntry[] From(BinaryReader rd, SmxNameTable names) { var header = new DebugNativesHeader(); header.num_entries = rd.ReadUInt32(); return(DebugNativeEntry.From(rd, header, names)); }
public static DebugNativeEntry[] From(BinaryReader rd, DebugNativesHeader header, SmxNameTable names) { var entries = new DebugNativeEntry[header.num_entries]; for (var i = 0; i < header.num_entries; i++) { var entry = new DebugNativeEntry(); entry.Index = rd.ReadInt32(); entry.nameoffs = rd.ReadInt32(); entry.tagid = rd.ReadUInt16(); entry.nargs = rd.ReadUInt16(); entry.Name = names.StringAt(entry.nameoffs); if (entry.nargs > 0) { entry.Args = DebugNativeArgEntry.From(rd, names, entry.nargs); } else { entry.Args = new DebugNativeArgEntry[0]; } entries[i] = entry; } return(entries); }
public static DebugNativeEntry[] From(BinaryReader rd, DebugNativesHeader header, SmxNameTable names) { var entries = new DebugNativeEntry[header.num_entries]; for (var i = 0; i < header.num_entries; i++) { var entry = new DebugNativeEntry(); entry.Index = rd.ReadInt32(); entry.nameoffs = rd.ReadInt32(); entry.tagid = rd.ReadUInt16(); entry.nargs = rd.ReadUInt16(); entry.Name = names.StringAt(entry.nameoffs); if (entry.nargs > 0) entry.Args = DebugNativeArgEntry.From(rd, names, entry.nargs); else entry.Args = new DebugNativeArgEntry[0]; entries[i] = entry; } return entries; }
private void renderDebugNative(DebugNativeEntry entry) { Tag tag = null; if (file_.Tags != null) tag = file_.Tags.FindTag(entry.tagid); startDetailUpdate(); addDetailLine("nameoffs = 0x{0:x}", entry.nameoffs, entry.Name); if (tag == null) addDetailLine("tagid = 0x{0:x}", entry.tagid); else addDetailLine("tagid = 0x{0:x} ; {1}", entry.tagid, entry.Name); addDetailLine("index = {0}", entry.Index); for (var i = 0; i < entry.Args.Length; i++) { var arg = entry.Args[i]; addDetailLine("arg {0}", i); addDetailLine(" nameoffs = 0x{0:x} ; {1}", arg.nameoffs, arg.Name); addDetailLine(" kind = {0:d} ; {1}", arg.Ident, arg.Ident.ToString()); if (arg.Dims != null) { addDetailLine(" dims = {0}", dimsToString(tag, arg.Dims)); } } endDetailUpdate(); }