public void Read(UruStream s) { ulong bit = 1; Fields f = (Fields)s.ReadULong(); while (bit != 0 && bit <= (ulong)f) { switch (f & (Fields)bit) { case Fields.kBlob_1: fBlob[0] = s.ReadBytes(s.ReadInt()); break; case Fields.kBlob_2: fBlob[1] = s.ReadBytes(s.ReadInt()); break; case Fields.kCreateAgeName: fCreateAgeName = s.ReadUnicodeStringV32(); break; case Fields.kCreateAgeUuid: fCreateAgeUuid = new Guid(s.ReadBytes(16)); break; case Fields.kCreateTime: fCreateTime = ToDateTime(s.ReadUInt()); break; case Fields.kCreatorIdx: fCreatorIdx = s.ReadUInt(); break; case Fields.kCreatorUuid: fCreatorUuid = new Guid(s.ReadBytes(16)); break; case Fields.kInt32_1: fInt32[0] = s.ReadInt(); break; case Fields.kInt32_2: fInt32[1] = s.ReadInt(); break; case Fields.kInt32_3: fInt32[2] = s.ReadInt(); break; case Fields.kInt32_4: fInt32[3] = s.ReadInt(); break; case Fields.kIString64_1: fIString64[0] = s.ReadUnicodeStringV32(); break; case Fields.kIString64_2: fIString64[1] = s.ReadUnicodeStringV32(); break; case Fields.kModifyTime: fModifyTime = ToDateTime(s.ReadUInt()); break; case Fields.kNodeIdx: fIdx = s.ReadUInt(); break; case Fields.kNodeType: fNodeType = (ENodeType)s.ReadUInt(); break; case Fields.kString64_1: fString64[0] = s.ReadUnicodeStringV32(); break; case Fields.kString64_2: fString64[1] = s.ReadUnicodeStringV32(); break; case Fields.kString64_3: fString64[2] = s.ReadUnicodeStringV32(); break; case Fields.kString64_4: fString64[3] = s.ReadUnicodeStringV32(); break; case Fields.kString64_5: fString64[4] = s.ReadUnicodeStringV32(); break; case Fields.kString64_6: fString64[5] = s.ReadUnicodeStringV32(); break; case Fields.kText_1: fText[0] = s.ReadUnicodeStringV32(); break; case Fields.kText_2: fText[0] = s.ReadUnicodeStringV32(); break; case Fields.kUInt32_1: fUInt32[0] = s.ReadUInt(); break; case Fields.kUInt32_2: fUInt32[1] = s.ReadUInt(); break; case Fields.kUInt32_3: fUInt32[2] = s.ReadUInt(); break; case Fields.kUInt32_4: fUInt32[3] = s.ReadUInt(); break; case Fields.kUuid_1: fUuid[0] = new Guid(s.ReadBytes(16)); break; case Fields.kUuid_2: fUuid[1] = new Guid(s.ReadBytes(16)); break; case Fields.kUuid_3: fUuid[2] = new Guid(s.ReadBytes(16)); break; case Fields.kUuid_4: fUuid[3] = new Guid(s.ReadBytes(16)); break; } bit <<= 1; } }