Implement StringTag, run autofix
This commit is contained in:
parent
3956dc0ea9
commit
6c83fbc371
6 changed files with 50 additions and 32 deletions
|
@ -12,6 +12,7 @@ import 'Stream.dart';
|
||||||
import 'impl/ByteTag.dart';
|
import 'impl/ByteTag.dart';
|
||||||
import 'impl/ListTag.dart';
|
import 'impl/ListTag.dart';
|
||||||
import 'impl/LongArrayTag.dart';
|
import 'impl/LongArrayTag.dart';
|
||||||
|
import 'impl/StringTag.dart';
|
||||||
|
|
||||||
enum TagType {
|
enum TagType {
|
||||||
End(0),
|
End(0),
|
||||||
|
@ -59,7 +60,7 @@ abstract class Tag {
|
||||||
static Tag readNamedTag(ByteLayer data) {
|
static Tag readNamedTag(ByteLayer data) {
|
||||||
var type = data.readByte();
|
var type = data.readByte();
|
||||||
if (type == 0) {
|
if (type == 0) {
|
||||||
return new EndTag();
|
return EndTag();
|
||||||
} else {
|
} else {
|
||||||
Tag tag = makeTagOfType(TagType.get(type));
|
Tag tag = makeTagOfType(TagType.get(type));
|
||||||
tag._key = data.readString();
|
tag._key = data.readString();
|
||||||
|
@ -78,63 +79,72 @@ abstract class Tag {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool equals(dynamic object) {
|
bool equals(dynamic object) {
|
||||||
if (object == null || !(object is Tag)) return false;
|
if (object == null || object is! Tag) return false;
|
||||||
|
|
||||||
Tag tag = object;
|
Tag tag = object;
|
||||||
if (tag.getType() != getType()) return false;
|
if (tag.getType() != getType()) return false;
|
||||||
|
|
||||||
if (getKey() == null && tag.getKey() != null ||
|
if (!(getKey() == tag.getKey())) return false;
|
||||||
tag.getKey() == null && getKey() != null) return false;
|
|
||||||
|
|
||||||
if (getKey() != null && !(getKey() == tag.getKey())) return false;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Tag makeTagOfType(TagType type) {
|
static Tag makeTagOfType(TagType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case TagType.Byte:
|
case TagType.Byte:
|
||||||
{
|
{
|
||||||
return new ByteTag();
|
return ByteTag();
|
||||||
}
|
}
|
||||||
case TagType.ByteArray:
|
case TagType.ByteArray:
|
||||||
{
|
{
|
||||||
return new ByteArrayTag();
|
return ByteArrayTag();
|
||||||
}
|
}
|
||||||
|
|
||||||
case TagType.Compound:
|
case TagType.Compound:
|
||||||
{
|
{
|
||||||
return new CompoundTag();
|
return CompoundTag();
|
||||||
}
|
}
|
||||||
case TagType.Double:
|
case TagType.Double:
|
||||||
{
|
{
|
||||||
return new DoubleTag();
|
return DoubleTag();
|
||||||
}
|
}
|
||||||
case TagType.End:
|
case TagType.End:
|
||||||
return new EndTag();
|
{
|
||||||
|
return EndTag();
|
||||||
|
}
|
||||||
case TagType.Short:
|
case TagType.Short:
|
||||||
return new ShortTag();
|
{
|
||||||
|
return ShortTag();
|
||||||
|
}
|
||||||
case TagType.Int:
|
case TagType.Int:
|
||||||
return new IntTag();
|
{
|
||||||
|
return IntTag();
|
||||||
|
}
|
||||||
case TagType.Long:
|
case TagType.Long:
|
||||||
return new LongTag();
|
{
|
||||||
|
return LongTag();
|
||||||
|
}
|
||||||
case TagType.Float:
|
case TagType.Float:
|
||||||
return new FloatTag();
|
{
|
||||||
|
return FloatTag();
|
||||||
|
}
|
||||||
case TagType.IntArray:
|
case TagType.IntArray:
|
||||||
{
|
{
|
||||||
return new IntArrayTag();
|
return IntArrayTag();
|
||||||
}
|
}
|
||||||
case TagType.LongArray:
|
case TagType.LongArray:
|
||||||
{
|
{
|
||||||
return new LongArrayTag();
|
return LongArrayTag();
|
||||||
}
|
}
|
||||||
|
|
||||||
case TagType.List:
|
case TagType.List:
|
||||||
{
|
{
|
||||||
return new ListTag();
|
return ListTag();
|
||||||
|
}
|
||||||
|
case TagType.String:
|
||||||
|
{
|
||||||
|
return StringTag();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ 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 {
|
||||||
List<int> _value = [];
|
final List<int> _value = [];
|
||||||
|
|
||||||
ByteArrayTag();
|
ByteArrayTag();
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ class CompoundTag extends Tag {
|
||||||
late final Map<String, Tag> _value;
|
late final Map<String, Tag> _value;
|
||||||
|
|
||||||
CompoundTag() {
|
CompoundTag() {
|
||||||
_value = new Map();
|
_value = <String, Tag>{};
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -43,9 +43,9 @@ class CompoundTag extends Tag {
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ 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 {
|
||||||
List<int> _value = [];
|
final List<int> _value = [];
|
||||||
IntArrayTag();
|
IntArrayTag();
|
||||||
|
|
||||||
IntArrayTag._(List<int> value) {
|
IntArrayTag._(List<int> value) {
|
||||||
|
|
|
@ -2,7 +2,7 @@ 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 {
|
||||||
List<int> _value = [];
|
final List<int> _value = [];
|
||||||
LongArrayTag();
|
LongArrayTag();
|
||||||
|
|
||||||
LongArrayTag._(List<int> lst) {
|
LongArrayTag._(List<int> lst) {
|
||||||
|
|
|
@ -1,18 +1,26 @@
|
||||||
import 'package:libac_flutter/nbt/Stream.dart';
|
import 'package:libac_flutter/nbt/Stream.dart';
|
||||||
import 'package:libac_flutter/nbt/Tag.dart';
|
import 'package:libac_flutter/nbt/Tag.dart';
|
||||||
|
|
||||||
class TagString extends Tag {
|
class StringTag extends Tag {
|
||||||
final String value;
|
String _value = "";
|
||||||
TagString({required this.value});
|
StringTag();
|
||||||
|
|
||||||
|
StringTag._(String str) {
|
||||||
|
_value = str;
|
||||||
|
}
|
||||||
|
|
||||||
|
static StringTag valueOf(String str) {
|
||||||
|
return StringTag._(str);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void readValue(ByteLayer data) {
|
void readValue(ByteLayer data) {
|
||||||
// TODO: implement readValue
|
_value = data.readString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void writeValue(ByteLayer data) {
|
void writeValue(ByteLayer data) {
|
||||||
// TODO: implement writeValue
|
data.writeString(_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
Loading…
Add table
Add a link
Reference in a new issue