private TagNode ReadLongArray() { byte[] lenBytes = new byte[4]; _stream.Read(lenBytes, 0, 4); if (BitConverter.IsLittleEndian) { Array.Reverse(lenBytes); } int length = BitConverter.ToInt32(lenBytes, 0); if (length < 0) { throw new NBTException(NBTException.MSG_READ_NEG); } long[] data = new long[length]; byte[] buffer = new byte[8]; for (int i = 0; i < length; i++) { _stream.Read(buffer, 0, 8); if (BitConverter.IsLittleEndian) { Array.Reverse(buffer); } data[i] = BitConverter.ToInt64(buffer, 0); } TagNodeLongArray val = new TagNodeLongArray(data); return(val); }
private void WriteLongArray(TagNodeLongArray val) { var lenBytes = BitConverter.GetBytes(val.Length); if (BitConverter.IsLittleEndian) { Array.Reverse(lenBytes); } _stream.Write(lenBytes, 0, 4); var data = new byte[val.Length * 8]; for (var i = 0; i < val.Length; i++) { var buffer = BitConverter.GetBytes(val.Data[i]); if (BitConverter.IsLittleEndian) { Array.Reverse(buffer); } Array.Copy(buffer, 0, data, i * 8, 8); } _stream.Write(data, 0, data.Length); }
private bool VerifyLongArray(TagNode tag, SchemaNodeLongArray schema) { TagNodeLongArray atag = tag as TagNodeLongArray; if (atag == null) { if (!OnInvalidTagType(new TagEventArgs(schema, tag))) { return(false); } } if (schema.Length > 0 && atag.Length != schema.Length) { if (!OnInvalidTagValue(new TagEventArgs(schema, tag))) { return(false); } } return(true); }
public override bool Verify(NbtVerifier verifier, TagNode tag) { TagNodeLongArray atag = tag as TagNodeLongArray; if (atag == null) { if (!verifier.OnInvalidTagType(new TagEventArgs(this, tag))) { return(false); } } if (Length > 0 && atag.Length != Length) { if (!verifier.OnInvalidTagValue(new TagEventArgs(this, tag))) { return(false); } } return(true); }