/// <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); }
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); }