Exemple #1
0
        public static DebugNativeEntry[] From(BinaryReader rd, SmxNameTable names)
        {
            var header = new DebugNativesHeader();

            header.num_entries = rd.ReadUInt32();
            return(DebugNativeEntry.From(rd, header, names));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 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;
 }
Exemple #4
0
        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();
        }