BodgeMaster
df35243ee9
lib/nbt: Add NBT::Tag::List::getContainedType()
...
Supid oversight, easily work-aroundable,
but it doesn’t hurt and was easy to implement
2022-10-17 06:39:42 +02:00
BodgeMaster
36dcf0a0f5
resources/dumpnbt_output_format: Give end tags header and payload information
2022-10-17 06:37:16 +02:00
BodgeMaster
93fdcb7b65
resources: Add a file with examples for possible dumpnbt output
...
This may be useful for future unit tests.
I did this because I had no fucking idea how to implement drawing
the tree. I still have no fucking idea.
I hope there are no errors in there. If there are any, we’ll
find out when writing the relevant unit tests.
2022-10-16 07:40:55 +02:00
BodgeMaster
8d2f3f2fa5
tools/dumpnbt: Switch from using the validator to using the parser, update some strings
2022-10-16 07:40:00 +02:00
BodgeMaster
cdc23e7468
lib/nbt: Implement parser
2022-10-15 23:05:26 +02:00
BodgeMaster
e9bfb6eeee
resources/NBT_data: Add two files that are valid NBT by our extended spec
...
Since we allow loose tags to be valid NBT data, this is valid NBT by our spec.
This isn’t valid by Mojang’s spec.
2022-10-15 21:41:32 +02:00
BodgeMaster
8b62ec9c88
lib/nbt: Get rid of that ugly #define return hack
...
Instead of doing #define return, the boolean returnValue is set and
a goto statement is used to get to the code that does what the macro
used to do.
2022-10-15 18:55:58 +02:00
BodgeMaster
ca0af3306f
test/nbt_tags: Implement Int64Array test
...
My arm hurts.
My back huts.
Man, that was exhausting.
Finally done.
2022-10-14 22:58:59 +02:00
BodgeMaster
9b21dfaee5
test/nbt_tags: Implement Int32Array test
2022-10-14 22:33:57 +02:00
BodgeMaster
996154fbbc
lib/nbt: Return the correct error code from soem functions for i32 arrays.
2022-10-14 22:33:32 +02:00
BodgeMaster
77dd79398f
test/nbt_tags: Test compound serialization
2022-10-14 21:46:55 +02:00
BodgeMaster
fd5fe3967f
test/nbt_tags: Partially implement compound test
2022-10-14 20:33:43 +02:00
BodgeMaster
374466f26c
lib/nbt: Fix not actually returning from Compound::setElementPointerAt in the do nothing case
2022-10-14 20:01:47 +02:00
BodgeMaster
3b56a52085
lib/nbt: Fix a memory leak
2022-10-14 19:22:05 +02:00
BodgeMaster
7be73f86d4
lib/nbt: Prevent addition of additional end tags to compounds
2022-10-14 18:33:05 +02:00
BodgeMaster
71834e1018
lib/nbt: Build an end tag object into compound tag objects to prevent creation of endless compounds
2022-10-14 18:08:49 +02:00
BodgeMaster
ccce564219
lib/error: Add NOT_ALLOWED
2022-10-14 17:39:00 +02:00
BodgeMaster
53279c6905
lib/error: Clean up comments
2022-10-14 17:30:35 +02:00
BodgeMaster
f8dd10d301
test/nbt_tags: Finish test implementation for NBT::Tag::List
2022-10-13 11:34:57 +02:00
BodgeMaster
6672a4f149
test/nbt_tags: Implement string test and partial list test
2022-10-09 10:29:28 +02:00
BodgeMaster
d5ce50a4a9
lib/nbt: Fix a potential memory leak
2022-10-09 10:18:20 +02:00
BodgeMaster
f0092b78d3
lib/nbt: Make list serielizer return an error when serializing a list with no contained type set
2022-10-08 23:35:21 +02:00
BodgeMaster
b1ba33b39f
test/nbt_tags: Implement unit tests for Float, Double, and Int8Array
2022-10-08 12:56:13 +02:00
BodgeMaster
833c09e2da
lib/nbt: Fix a bug caused by having two return statements swapped
2022-10-08 12:54:05 +02:00
BodgeMaster
b53999a548
tools/arraydump: Remove a debugging message that I accidentally left in
2022-10-08 08:32:02 +02:00
BodgeMaster
379903d751
tools/baseconvert: New tool
...
This tool allows for easy conversion between relevant bases
for unsigned numbers.
You may be able to coerce it into converting signed numbers into
unsigned numbers if you know how, though that is not an officially
supported use case (aka that’s using UB in the STL).
2022-10-08 08:29:01 +02:00
BodgeMaster
17792ec5bf
lib/cli: Implement the "Additional Info" feature
2022-10-08 08:27:48 +02:00
BodgeMaster
9ce35b5c6b
test/nbt_tags: Implement more tests
2022-10-08 08:25:57 +02:00
BodgeMaster
be08a97275
tesst/nbt_tags: Choose a more sensible value for int8_0
2022-10-06 20:46:50 +02:00
BodgeMaster
6bdf99c897
test/nbt_tags: Implement tests for the first three tag types
2022-10-06 11:10:51 +02:00
BodgeMaster
936def1a65
lib/nbt: move a comment (yes, very important commit)
2022-10-06 11:09:58 +02:00
BodgeMaster
3cc1222de9
lib/nbt: Fix a bug in NBT::Helper::writeString()
...
Writing a string to a byte vector would result in it being replaced
with one holding only the string.
2022-10-06 10:21:59 +02:00
BodgeMaster
ecf3b14b5a
test/nbt_tags: I have no clue what’s going on here.
...
Committing so I can debug at my PC.
2022-10-06 09:59:48 +02:00
BodgeMaster
8da758becd
scripts/test/arraydump: Add test
2022-10-05 06:26:41 +02:00
BodgeMaster
1e5051b503
setupenv: Remove check for xxd
...
`xxd` is no longer needed as arraydump has been rewritten in C++
2022-10-05 05:31:37 +02:00
BodgeMaster
3b4c125ca2
tools/arraydump: Reimplement in C++
2022-10-05 05:26:04 +02:00
BodgeMaster
4cb1206839
lib/file: Fix isOpen not being set properly when closing and reopening; add destructor
2022-10-05 05:02:58 +02:00
BodgeMaster
39c5940200
lib/file: Fix a potential memory leak created by yours truly
2022-10-05 04:50:41 +02:00
BodgeMaster
f3e03710f6
lib/file: Ensure a file is actually open before attempting to read
2022-10-05 04:07:46 +02:00
BodgeMaster
72fc923839
lib/nbt: remove now useless comment
2022-10-05 04:02:32 +02:00
BodgeMaster
5059bd0193
lib/file: change File::eof to a function
...
This is just way easier to implement and less messy.
2022-10-05 04:01:18 +02:00
BodgeMaster
8bb633f118
lib/error and lib/file: reassign code 9 to FILE_NOT_OPEN
...
These are not exceptions so we don’t need multiple variants of
generic error in case someone wants to catch it somewhere
up the call stack.
It’s okay to use UNKNOWN for generic errors where we don’t know
exactly what happened.
2022-10-05 03:48:05 +02:00
BodgeMaster
ec44ac9531
lib/file: Check if there are enough bytes left to read
2022-10-05 03:46:42 +02:00
BodgeMaster
341b4c187e
lib/file: Fix (potential) memory leaks
2022-10-05 03:30:01 +02:00
BodgeMaster
79650e390e
lib/nbt: Implement the rest of the functions outline in the header
...
This concludes the implementation of the in-memory NBT representation.
This is still all untested code so it might just blow up in your face.
The next step will be writing tests (and probably a lot of cursing and
debugging)...
2022-10-05 01:12:38 +02:00
BodgeMaster
2d2b67373c
lib/nbt: Yesterday’s progress of implementing more of the functions in the header
2022-10-04 02:39:58 +02:00
BodgeMaster
4c4366f7e6
lib/nbt: Partially update documentation to current terminology.
...
Would probably be better if it were moved to doc/ and completely rewritten.
2022-10-02 07:48:03 +02:00
BodgeMaster
4ef1d2c44f
lib/nbt: Split serializer into two components
...
One for serializing full tags and one for serializing tags without
their header.
The former is what used to be `toRawData` - though a bunch of
duplicated code has been removed by just moving it to the Generic
type class instead of having an implementation on the sub-classes.
The latter is useful for serializing lists.
The previous warning that all of this is untested still applies.
2022-10-02 07:47:12 +02:00
Shwoomple
5920d1d004
commit merge
2022-10-02 08:42:33 +05:30
Shwoomple
056c1e6b11
lib/file.cpp: fix read fubctions.
2022-10-02 08:38:39 +05:30