Add some helper functions, adjust visibility on variables
This commit is contained in:
parent
6c83fbc371
commit
43aa3bc6d0
13 changed files with 141 additions and 65 deletions
|
@ -147,4 +147,84 @@ abstract class Tag {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int asByte() {
|
||||||
|
if (this is ByteTag) {
|
||||||
|
return (this as ByteTag).value;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<int> asByteArray() {
|
||||||
|
if (this is ByteArrayTag) {
|
||||||
|
return (this as ByteArrayTag).value;
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
double asDouble() {
|
||||||
|
if (this is DoubleTag) {
|
||||||
|
return (this as DoubleTag).value;
|
||||||
|
} else {
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
double asFloat() {
|
||||||
|
if (this is FloatTag) {
|
||||||
|
return (this as FloatTag).value;
|
||||||
|
} else {
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<int> asIntArray() {
|
||||||
|
if (this is IntArrayTag) {
|
||||||
|
return (this as IntArrayTag).value;
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int asInt() {
|
||||||
|
if (this is IntTag) {
|
||||||
|
return (this as IntTag).value;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<int> asLongArray() {
|
||||||
|
if (this is LongArrayTag) {
|
||||||
|
return (this as LongArrayTag).value;
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int asLong() {
|
||||||
|
if (this is LongTag) {
|
||||||
|
return (this as LongTag).value;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int asShort() {
|
||||||
|
if (this is ShortTag) {
|
||||||
|
return (this as ShortTag).value;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String asString() {
|
||||||
|
if (this is StringTag) {
|
||||||
|
return (this as StringTag).value;
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,12 +2,12 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class ByteArrayTag extends Tag {
|
class ByteArrayTag extends Tag {
|
||||||
final List<int> _value = [];
|
final List<int> value = [];
|
||||||
|
|
||||||
ByteArrayTag();
|
ByteArrayTag();
|
||||||
|
|
||||||
ByteArrayTag._(List<int> value) {
|
ByteArrayTag._(List<int> value) {
|
||||||
_value.addAll(value);
|
this.value.addAll(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ByteArrayTag valueOf(List<int> value) {
|
static ByteArrayTag valueOf(List<int> value) {
|
||||||
|
@ -18,14 +18,14 @@ class ByteArrayTag extends Tag {
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
int len = data.readInt();
|
int len = data.readInt();
|
||||||
for (int i = 0; i < len; i++) {
|
for (int i = 0; i < len; i++) {
|
||||||
_value.add(data.readByte());
|
value.add(data.readByte());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
data.writeInt(_value.length);
|
data.writeInt(value.length);
|
||||||
for (int i in _value) {
|
for (int i in value) {
|
||||||
data.writeByte(i);
|
data.writeByte(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,10 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class ByteTag extends Tag {
|
class ByteTag extends Tag {
|
||||||
int _value = 0;
|
int value = 0;
|
||||||
|
|
||||||
ByteTag._(int value) {
|
ByteTag._(int value) {
|
||||||
_value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteTag();
|
ByteTag();
|
||||||
|
@ -16,12 +16,12 @@ class ByteTag extends Tag {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
_value = data.readByte();
|
value = data.readByte();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
data.writeByte(_value);
|
data.writeByte(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -2,15 +2,13 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class CompoundTag extends Tag {
|
class CompoundTag extends Tag {
|
||||||
late final Map<String, Tag> _value;
|
late final Map<String, Tag> value = {};
|
||||||
|
|
||||||
CompoundTag() {
|
CompoundTag();
|
||||||
_value = <String, Tag>{};
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
_value.clear();
|
value.clear();
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
Tag tag = Tag.readNamedTag(data);
|
Tag tag = Tag.readNamedTag(data);
|
||||||
|
@ -24,7 +22,7 @@ class CompoundTag extends Tag {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
Iterator<Tag> it = _value.values.iterator;
|
Iterator<Tag> it = value.values.iterator;
|
||||||
|
|
||||||
while (it.moveNext()) {
|
while (it.moveNext()) {
|
||||||
Tag tag = it.current;
|
Tag tag = it.current;
|
||||||
|
@ -35,16 +33,16 @@ class CompoundTag extends Tag {
|
||||||
}
|
}
|
||||||
|
|
||||||
void put(String name, Tag tag) {
|
void put(String name, Tag tag) {
|
||||||
_value[name] = tag;
|
value[name] = tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool contains(String name) {
|
bool contains(String name) {
|
||||||
return _value.containsKey(name);
|
return value.containsKey(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
Tag? get(String name) {
|
Tag? get(String name) {
|
||||||
if (contains(name)) {
|
if (contains(name)) {
|
||||||
return _value[name] as Tag;
|
return value[name] as Tag;
|
||||||
} else {
|
} else {
|
||||||
// Does not exist!
|
// Does not exist!
|
||||||
return null;
|
return null;
|
||||||
|
@ -52,7 +50,7 @@ class CompoundTag extends Tag {
|
||||||
}
|
}
|
||||||
|
|
||||||
void remove(String name) {
|
void remove(String name) {
|
||||||
_value.remove(name);
|
value.remove(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -2,12 +2,12 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class DoubleTag extends Tag {
|
class DoubleTag extends Tag {
|
||||||
double _value = 0.0;
|
double value = 0.0;
|
||||||
|
|
||||||
DoubleTag();
|
DoubleTag();
|
||||||
|
|
||||||
DoubleTag._(double value) {
|
DoubleTag._(double value) {
|
||||||
_value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static DoubleTag valueOf(double value) {
|
static DoubleTag valueOf(double value) {
|
||||||
|
@ -16,12 +16,12 @@ class DoubleTag extends Tag {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
_value = data.readDouble();
|
value = data.readDouble();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
data.writeDouble(_value);
|
data.writeDouble(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -2,11 +2,11 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class FloatTag extends Tag {
|
class FloatTag extends Tag {
|
||||||
double _value = 0.0;
|
double value = 0.0;
|
||||||
FloatTag();
|
FloatTag();
|
||||||
|
|
||||||
FloatTag._(double value) {
|
FloatTag._(double value) {
|
||||||
_value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FloatTag valueOf(double value) {
|
static FloatTag valueOf(double value) {
|
||||||
|
@ -15,12 +15,12 @@ class FloatTag extends Tag {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
_value = data.readFloat();
|
value = data.readFloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
data.writeFloat(_value);
|
data.writeFloat(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -2,25 +2,25 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class IntArrayTag extends Tag {
|
class IntArrayTag extends Tag {
|
||||||
final List<int> _value = [];
|
final List<int> value = [];
|
||||||
IntArrayTag();
|
IntArrayTag();
|
||||||
|
|
||||||
IntArrayTag._(List<int> value) {
|
IntArrayTag._(List<int> value) {
|
||||||
_value.addAll(value);
|
this.value.addAll(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
int count = data.readInt();
|
int count = data.readInt();
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
_value.add(data.readInt());
|
value.add(data.readInt());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
data.writeInt(_value.length);
|
data.writeInt(value.length);
|
||||||
for (int i in _value) {
|
for (int i in value) {
|
||||||
data.writeInt(i);
|
data.writeInt(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,11 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class IntTag extends Tag {
|
class IntTag extends Tag {
|
||||||
int _value = 0;
|
int value = 0;
|
||||||
IntTag();
|
IntTag();
|
||||||
|
|
||||||
IntTag._(int value) {
|
IntTag._(int value) {
|
||||||
_value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static IntTag valueOf(int value) {
|
static IntTag valueOf(int value) {
|
||||||
|
@ -15,12 +15,12 @@ class IntTag extends Tag {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
_value = data.readInt();
|
value = data.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
data.writeInt(_value);
|
data.writeInt(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -2,11 +2,9 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class ListTag extends Tag {
|
class ListTag extends Tag {
|
||||||
List<Tag> _value = [];
|
List<Tag> value = [];
|
||||||
|
|
||||||
ListTag() {
|
ListTag();
|
||||||
_value = List.empty(growable: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
|
@ -24,36 +22,36 @@ class ListTag extends Tag {
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
TagType type = TagType.End;
|
TagType type = TagType.End;
|
||||||
if (size() > 0) {
|
if (size() > 0) {
|
||||||
type = _value[0].getTagType();
|
type = value[0].getTagType();
|
||||||
}
|
}
|
||||||
|
|
||||||
data.writeByte(type.byte);
|
data.writeByte(type.byte);
|
||||||
data.writeInt(size());
|
data.writeInt(size());
|
||||||
for (int i = 0; i < size(); i++) {
|
for (int i = 0; i < size(); i++) {
|
||||||
_value[i].writeValue(data);
|
value[i].writeValue(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void add(Tag tag) {
|
void add(Tag tag) {
|
||||||
TagType type = TagType.End;
|
TagType type = TagType.End;
|
||||||
if (size() > 0) {
|
if (size() > 0) {
|
||||||
type = _value[0].getTagType();
|
type = value[0].getTagType();
|
||||||
}
|
}
|
||||||
if (type == TagType.End || type == tag.getTagType()) {
|
if (type == TagType.End || type == tag.getTagType()) {
|
||||||
_value.add(tag);
|
value.add(tag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void remove(Tag tag) {
|
void remove(Tag tag) {
|
||||||
_value.remove(tag);
|
value.remove(tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void removeAt(int index) {
|
void removeAt(int index) {
|
||||||
_value.removeAt(index);
|
value.removeAt(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
int indexOf(Tag tag) {
|
int indexOf(Tag tag) {
|
||||||
return _value.indexOf(tag);
|
return value.indexOf(tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -62,6 +60,6 @@ class ListTag extends Tag {
|
||||||
}
|
}
|
||||||
|
|
||||||
int size() {
|
int size() {
|
||||||
return _value.length;
|
return value.length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,11 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class LongArrayTag extends Tag {
|
class LongArrayTag extends Tag {
|
||||||
final List<int> _value = [];
|
final List<int> value = [];
|
||||||
LongArrayTag();
|
LongArrayTag();
|
||||||
|
|
||||||
LongArrayTag._(List<int> lst) {
|
LongArrayTag._(List<int> lst) {
|
||||||
_value.addAll(lst);
|
value.addAll(lst);
|
||||||
}
|
}
|
||||||
|
|
||||||
static LongArrayTag valueOf(List<int> value) {
|
static LongArrayTag valueOf(List<int> value) {
|
||||||
|
@ -17,20 +17,20 @@ class LongArrayTag extends Tag {
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
int count = data.readInt();
|
int count = data.readInt();
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
_value.add(data.readLong());
|
value.add(data.readLong());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
data.writeInt(size());
|
data.writeInt(size());
|
||||||
for (int i in _value) {
|
for (int i in value) {
|
||||||
data.writeLong(i);
|
data.writeLong(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int size() {
|
int size() {
|
||||||
return _value.length;
|
return value.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -2,11 +2,11 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class LongTag extends Tag {
|
class LongTag extends Tag {
|
||||||
int _value = 0;
|
int value = 0;
|
||||||
LongTag();
|
LongTag();
|
||||||
|
|
||||||
LongTag._(int value) {
|
LongTag._(int value) {
|
||||||
_value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static LongTag valueOf(int value) {
|
static LongTag valueOf(int value) {
|
||||||
|
@ -15,12 +15,12 @@ class LongTag extends Tag {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
_value = data.readLong();
|
value = data.readLong();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
data.writeLong(_value);
|
data.writeLong(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -2,11 +2,11 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class ShortTag extends Tag {
|
class ShortTag extends Tag {
|
||||||
int _value = 0;
|
int value = 0;
|
||||||
ShortTag();
|
ShortTag();
|
||||||
|
|
||||||
ShortTag._(int value) {
|
ShortTag._(int value) {
|
||||||
_value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ShortTag valueOf(int value) {
|
static ShortTag valueOf(int value) {
|
||||||
|
@ -15,12 +15,12 @@ class ShortTag extends Tag {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
_value = data.readShort();
|
value = data.readShort();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
data.writeShort(_value);
|
data.writeShort(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -2,11 +2,11 @@ import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class StringTag extends Tag {
|
class StringTag extends Tag {
|
||||||
String _value = "";
|
String value = "";
|
||||||
StringTag();
|
StringTag();
|
||||||
|
|
||||||
StringTag._(String str) {
|
StringTag._(String str) {
|
||||||
_value = str;
|
value = str;
|
||||||
}
|
}
|
||||||
|
|
||||||
static StringTag valueOf(String str) {
|
static StringTag valueOf(String str) {
|
||||||
|
@ -15,12 +15,12 @@ class StringTag extends Tag {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
_value = data.readString();
|
value = data.readString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
data.writeString(_value);
|
data.writeString(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue