Esempio n. 1
0
        /// <summary>
        /// Gets and returns a display string from a specified node type, stream, address, and map file.
        /// </summary>
        /// <param name="itemType">The item type.</param>
        /// <param name="dataStream">The data stream.</param>
        /// <param name="address">The address of the data.</param>
        /// <param name="map">The map file.</param>
        /// <returns>A string.</returns>
        private static string GetNodeDisplayName(IfpNodeType itemType, VirtualStream dataStream, long address, MapFile map)
        {
            //Goto
            dataStream.Seek(address, SeekOrigin.Begin);
            using (BinaryReader reader = dataStream.CreateReader())
                try
                {
                    switch (itemType)
                    {
                    case IfpNodeType.Byte: return(reader.ReadByte().ToString());

                    case IfpNodeType.SignedByte: return(reader.ReadSByte().ToString());

                    case IfpNodeType.Short: return(reader.ReadInt16().ToString());

                    case IfpNodeType.UnsignedShort: return(reader.ReadUInt16().ToString());

                    case IfpNodeType.Int: return(reader.ReadInt32().ToString());

                    case IfpNodeType.UnsignedInt: return(reader.ReadUInt32().ToString());

                    case IfpNodeType.Long: return(reader.ReadInt64().ToString());

                    case IfpNodeType.UnsignedLong: return(reader.ReadUInt64().ToString());

                    case IfpNodeType.Single: return(reader.ReadSingle().ToString());

                    case IfpNodeType.Double: return(reader.ReadDouble().ToString());

                    case IfpNodeType.String32: return(reader.ReadUTF8(32).Trim('\0'));

                    case IfpNodeType.String64: return(reader.ReadUTF8(64).Trim('\0'));

                    case IfpNodeType.Unicode128: return(reader.ReadUTF8(128).Trim('\0'));

                    case IfpNodeType.Unicode256: return(reader.ReadUTF8(256).Trim('\0'));

                    case IfpNodeType.TagId:
                        IndexEntry entry = map.IndexEntries[reader.Read <TagId>()];
                        if (entry == null)
                        {
                            return("Null");
                        }
                        else
                        {
                            return($"{entry.Filename}.{entry.Root}");
                        }

                    case IfpNodeType.StringId: return(map.Strings[reader.Read <StringId>().Index]);
                    }
                }
                catch { }
            return(string.Empty);
        }
Esempio n. 2
0
        private string value_GetLabel(IfpNodeType itemType, Stream dataStream, long address)
        {
            //Goto
            dataStream.Seek(address, SeekOrigin.Begin);
            using (BinaryReader reader = new BinaryReader(dataStream))
                switch (itemType)
                {
                case IfpNodeType.Byte: return(reader.ReadByte().ToString());

                case IfpNodeType.SignedByte: return(reader.ReadSByte().ToString());

                case IfpNodeType.Short: return(reader.ReadInt16().ToString());

                case IfpNodeType.UnsignedShort: return(reader.ReadUInt16().ToString());

                case IfpNodeType.Int: return(reader.ReadInt32().ToString());

                case IfpNodeType.UnsignedInt: return(reader.ReadUInt32().ToString());

                case IfpNodeType.Long: return(reader.ReadInt64().ToString());

                case IfpNodeType.UnsignedLong: return(reader.ReadUInt64().ToString());

                case IfpNodeType.Single: return(reader.ReadSingle().ToString());

                case IfpNodeType.Double: return(reader.ReadDouble().ToString());

                case IfpNodeType.String32: return(reader.ReadUTF8(32).Trim('\0'));

                case IfpNodeType.String64: return(reader.ReadUTF8(64).Trim('\0'));

                case IfpNodeType.Unicode128: return(reader.ReadUTF8(128).Trim('\0'));

                case IfpNodeType.Unicode256: return(reader.ReadUTF8(256).Trim('\0'));

                case IfpNodeType.TagId:
                    IndexEntry entry = Map.IndexEntries[reader.Read <TagId>()];
                    if (entry == null)
                    {
                        return("Null");
                    }
                    else
                    {
                        return($"{entry.Filename}.{entry.Root}");
                    }

                case IfpNodeType.StringId: return(Map.Strings[reader.Read <StringId>().Index]);
                }
            return(string.Empty);
        }