Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ZipGenericExtraField.cs
Go to the documentation of this file.
2
4
5internal struct ZipGenericExtraField
6{
7 private ushort _tag;
8
9 private ushort _size;
10
11 private byte[] _data;
12
13 public ushort Tag => _tag;
14
15 public ushort Size => _size;
16
17 public byte[] Data => _data;
18
20 {
22 binaryWriter.Write(Tag);
23 binaryWriter.Write(Size);
24 binaryWriter.Write(Data);
25 }
26
28 {
29 field = default(ZipGenericExtraField);
30 if (endExtraField - reader.BaseStream.Position < 4)
31 {
32 return false;
33 }
34 field._tag = reader.ReadUInt16();
35 field._size = reader.ReadUInt16();
36 if (endExtraField - reader.BaseStream.Position < field._size)
37 {
38 return false;
39 }
40 field._data = reader.ReadBytes(field._size);
41 return true;
42 }
43
55
56 public static int TotalSize(List<ZipGenericExtraField> fields)
57 {
58 int num = 0;
59 foreach (ZipGenericExtraField field in fields)
60 {
61 num += field.Size + 4;
62 }
63 return num;
64 }
65
67 {
68 foreach (ZipGenericExtraField field in fields)
69 {
70 field.WriteBlock(stream);
71 }
72 }
73}
void Add(TKey key, TValue value)
virtual ushort ReadUInt16()
virtual Stream BaseStream
virtual byte[] ReadBytes(int count)
static List< ZipGenericExtraField > ParseExtraField(Stream extraFieldData)
static int TotalSize(List< ZipGenericExtraField > fields)
static void WriteAllBlocks(List< ZipGenericExtraField > fields, Stream stream)
static bool TryReadBlock(BinaryReader reader, long endExtraField, out ZipGenericExtraField field)