Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merging buffer work #2361

Open
wants to merge 94 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
f0ca97a
Commit last week's changes
JoshDreamland Aug 1, 2020
4faee6b
Stash commit. Everything's in pieces.
JoshDreamland Sep 7, 2020
62fd3aa
Merge remote-tracking branch 'origin/master' into NewParser2020
JoshDreamland Sep 7, 2020
450336b
Step one: Remove dependencies on JDI from the Lexer.
JoshDreamland Nov 25, 2020
3b650af
I'm stuck on move semantics
JoshDreamland Jun 6, 2021
05e509e
Merge remote-tracking branch 'origin/master' into NewParser2020-temp
JoshDreamland Jun 6, 2021
ae369a1
Use const shared_ptr instead of non-const unique_ptr
JoshDreamland Jun 6, 2021
9db758d
Encapsulate CompatibilityOptions from settings.h into a non-global st…
JoshDreamland Jun 7, 2021
22930ec
Move some more shit around.
JoshDreamland Jun 14, 2021
7cd10b6
Fix some crap in the new lexer.
JoshDreamland Jun 17, 2021
f60c9ef
Token fixups; translate JDI macros to EDL ones
JoshDreamland Aug 22, 2021
28c2f3f
Merge remote-tracking branch 'origin/master' into NewParser2020
JoshDreamland Aug 22, 2021
0900801
Keep stronger ownership of code in memory, as tokens point into it.
JoshDreamland Aug 22, 2021
edd91d4
Wow, would be cool if make worked
JoshDreamland Aug 22, 2021
6707de7
Add missing include to one file...
JoshDreamland Aug 28, 2021
cc8d151
Merge branch 'master' into NewParser2020
JoshDreamland Mar 18, 2022
50685af
Check in most of the skeleton for AST generation
JoshDreamland Mar 18, 2022
41ff26c
jdi update wip
Apr 16, 2022
8439a00
Fix a good chunk of the JDI errors; handing off for now
JoshDreamland Apr 17, 2022
7df9c6e
Fix more build errors with JDI update (#2295)
dc03 May 29, 2022
5e72848
Hammer JDI a bit and pull some token type changes from AST-Generation…
May 31, 2022
91143ff
blow rat's nest out of definition_scope::look_up; fix var decl problems
Jun 1, 2022
0c47338
WIP: Fixes for macros in EDL lexer (#2305)
dc03 Jun 11, 2022
c439557
Fix variadic macro lexing in ENIGMA, mostly
Jun 11, 2022
978b71a
Merge branch 'NewParser2020' into AST-Generation
Jun 12, 2022
cef2971
Flesh out more parsing codepaths and delete some junk tokens. Drop in…
Jun 15, 2022
d1ae0d2
Add some missing token types, precedence map, more TODOS.
Jun 20, 2022
f9d465c
fix(variant): fix bitwise operators truncating `rval.d`, switch to un…
dc03 Jun 26, 2022
3d76f6e
refactor(BinaryBuffer): update to use `std::size_t` and `std::byte`
dc03 Jun 26, 2022
24c252a
Implement `variant` serialization/deserialization
dc03 Jun 26, 2022
2e83034
fix: fix serialize, deserialize
dc03 Jun 26, 2022
3604c46
refactor: update get_buffer -> GET_BUFFER, get_bufferr -> GET_BUFFER_R
dc03 Jun 27, 2022
08847f4
refactor: Change `buffers` to be an `AssetArray`
dc03 Jun 27, 2022
b8e5074
refactor: move BinaryBuffer functions to buffers_internal.cpp
dc03 Jun 27, 2022
f41bb90
refactor: remove pointless include
dc03 Jun 27, 2022
b34a901
refactor: use `DEBUG_MESSAGE` instead of `assert`
dc03 Jun 28, 2022
8d85951
refactor: replace all usages of `unsigned` with `std::size_t`
dc03 Jun 28, 2022
59d7774
refactor: warnings
dc03 Jun 28, 2022
3239af2
Update buffers to use various buffer typedefs
dc03 Jun 28, 2022
bc1876d
refactor: rename `push_buffer` -> `make_new_buffer`, `buffer_t` -> `s…
dc03 Jun 28, 2022
6389da3
refactor: make cast more idiomatic
dc03 Jun 28, 2022
e7ab3a2
refactor: fix `buffer_load` and `buffer_load_ext`
dc03 Jun 29, 2022
7ddffff
refactor: update SmallTests.cpp to allow putting multiple tests under…
dc03 Jun 29, 2022
e11f79e
add some miscellaneous buffer tests
dc03 Jun 29, 2022
214716d
refactor: fix `buffer_load_ext`
dc03 Jun 29, 2022
8928665
refactor: `buffer_fill` test, code
dc03 Jun 29, 2022
7ab9bc0
Add a simple test for `buffer_read`
dc03 Jun 29, 2022
808696c
refactor: update `buffer_fill` test to include `buffer_string`
dc03 Jun 29, 2022
5210f56
refactor: redo `BinaryBuffer::Seek`
dc03 Jun 30, 2022
fc2548a
refactor: Make `BinaryBuffer::Seek` more compliant
dc03 Jun 30, 2022
f7502a8
feat: add a test for `buffer_seek`
dc03 Jun 30, 2022
b945df9
refactor: make `buffer_fill` compliant with GMS
dc03 Jun 30, 2022
59a1756
refactor: `buffer_fill` clamp fill to end of buffer when size too large
dc03 Jul 1, 2022
83c4603
Add a test for `buffer_resize`
dc03 Jul 1, 2022
3817fcb
Add tests for `buffer_get_alignment` and `buffer_get_type`
dc03 Jul 1, 2022
e110814
refactor: make `buffer_fill` more compliant, yet again
dc03 Jul 1, 2022
122007a
refactor: make the tests work again
dc03 Jul 1, 2022
e380bba
refactor: update `buffer_peek`, `buffer_read`
dc03 Jul 2, 2022
228c7bb
refactor: update `buffer_poke` and `buffer_write`
dc03 Jul 3, 2022
a7bc4de
refactor: make `buffer_poke` and `buffer_write` tests works
dc03 Jul 3, 2022
776b322
refactor: update `buffer_fill` test
dc03 Jul 3, 2022
5c56c1c
refactor: fix `buffer_copy` and it's test
dc03 Jul 4, 2022
61f2cfc
feat: add test for `buffer_save`
dc03 Jul 5, 2022
5675636
refactor: update `buffer_save_ext`, add test
dc03 Jul 5, 2022
6f9d307
refactor: use `write` and `read` functions to replace `std::transform…
dc03 Jul 5, 2022
91615da
feat: implement `buffer_base64_encode` and test
dc03 Jul 5, 2022
09b3678
feat: implement `buffer_base64_decode_ext` and a test
dc03 Jul 5, 2022
67db3b3
feat: CRC32 encoder, using zlib
dc03 Jul 5, 2022
a5aef8c
feat: implement `buffer_compress` and `buffer_decompress`
dc03 Jul 6, 2022
c7a3c7e
feat: add test for compression/decompression
dc03 Jul 6, 2022
056eafc
feat: add `md5` and `sha1` reference implementations
dc03 Jul 6, 2022
32e1d0e
feat: implement `buffer_md5` and `buffer_sha1`
dc03 Jul 6, 2022
7a48488
feat: add tests for `buffer_md5` and `buffer_sha1`
dc03 Jul 6, 2022
b4cd426
refactor: delete unused `valToBytes`
dc03 Jul 6, 2022
4ffca7e
feat/refactor: `buffer_get_surface` and `buffer_set_surface`
dc03 Jul 6, 2022
fe0b8b2
feat: add tests for `buffer_get_surface`, `buffer_set_surface`
dc03 Jul 6, 2022
c347f53
feat: add `buffer_load_partial` and test for it
dc03 Jul 6, 2022
931f38a
feat: tests for `buffer_crc32`, `buffer_decompress`
dc03 Jul 6, 2022
40f0dd8
copyright header update, random cleanup
dc03 Jul 6, 2022
a13094e
fix: fix outdated tests and hopefully fix Android build
dc03 Jul 7, 2022
f3930a3
feat: add estring md5/sha1 functions
dc03 Jul 9, 2022
3a8054f
refactor: update bufferstruct to use estring md5/sha1 functions
dc03 Jul 9, 2022
d98343a
refactor: fix broken truncation logic
dc03 Jul 11, 2022
5ebb440
refactor: fix bug with `write_to_buffer` and `buffer_copy`
dc03 Jul 12, 2022
df32afa
refactor: fix out of bounds access in `buffer_base64_encode`
dc03 Jul 12, 2022
67dd8dc
feat: buffer docs
dc03 Jul 12, 2022
513f966
reverting compiler work
k0T0z Sep 5, 2023
56bcf4c
reverting emake makefile
k0T0z Sep 5, 2023
9994e86
reverting emake makefile
k0T0z Sep 5, 2023
c213968
Merge branch 'master' into GSoC-Part1
k0T0z Sep 5, 2023
d0f698e
removing lexer tests
k0T0z Sep 5, 2023
63fbd97
reverting makefile
k0T0z Sep 5, 2023
52b9500
reverting emake makefile and shared/eyaml.cpp
k0T0z Sep 5, 2023
a70adc7
Merge branch 'GSoC-Part1' of https://github.com/k0T0z/enigma-dev into…
k0T0z Sep 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
var buf = buffer_create(8, buffer_grow, 1);
const char *cont = "Many hands make light work.";
var str = "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcmsu";

buffer_write(buf, buffer_string, cont);
var buf2 = buffer_base64_decode(buffer_base64_encode(buf, 0, strlen(cont) + 1));
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 2);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "Many hands make light work";
str = "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcms=";

buffer_write(buf, buffer_string, cont);
buf2 = buffer_base64_decode(buffer_base64_encode(buf, 0, strlen(cont) + 1));
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 2);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "Many hands make light wor";
str = "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcg==";

buffer_write(buf, buffer_string, cont);
buf2 = buffer_base64_decode(buffer_base64_encode(buf, 0, strlen(cont) + 1));
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 2);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "";
str = "";

buffer_write(buf, buffer_string, cont);
buf2 = buffer_base64_decode(buffer_base64_encode(buf, 0, strlen(cont) + 1));
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 2);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "f";
str = "Zg==";

buffer_write(buf, buffer_string, cont);
buf2 = buffer_base64_decode(buffer_base64_encode(buf, 0, strlen(cont) + 1));
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 2);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "fo";
str = "Zm8=";

buffer_write(buf, buffer_string, cont);
buf2 = buffer_base64_decode(buffer_base64_encode(buf, 0, strlen(cont) + 1));
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 2);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "foo";
str = "Zm9v";

buffer_write(buf, buffer_string, cont);
buf2 = buffer_base64_decode(buffer_base64_encode(buf, 0, strlen(cont) + 1));
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 2);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "foob";
str = "Zm9vYg==";

buffer_write(buf, buffer_string, cont);
buf2 = buffer_base64_decode(buffer_base64_encode(buf, 0, strlen(cont) + 1));
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 2);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "fooba";
str = "Zm9vYmE=";

buffer_write(buf, buffer_string, cont);
buf2 = buffer_base64_decode(buffer_base64_encode(buf, 0, strlen(cont) + 1));
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 2);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "foobar";
str = "Zm9vYmFy";

buffer_write(buf, buffer_string, cont);
buf2 = buffer_base64_decode(buffer_base64_encode(buf, 0, strlen(cont) + 1));
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 2);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);
buffer_delete(buf);

cont = "light w";
str = "bGlnaHQgdw";

buf2 = buffer_base64_decode(str);
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 1);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);

cont = "light wo";
str = "bGlnaHQgd28";

buf2 = buffer_base64_decode(str);
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 1);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);

cont = "light wor";
str = "bGlnaHQgd29y";

buf2 = buffer_base64_decode(str);
gtest_assert_eq(buffer_get_size(buf2), strlen(cont) + 1);
gtest_assert_eq(buffer_read(buf2, buffer_string), cont);

buffer_delete(buf2);

game_end();
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
var buf = buffer_create(8, buffer_grow, 1);
const char *str = "Many hands make light work.";

buffer_write(buf, buffer_string, str);
var buf2 = buffer_create(8, buffer_grow, 1);
buffer_base64_decode_ext(buf2, buffer_base64_encode(buf, 0, strlen(str) + 1), 2);
gtest_assert_eq(buffer_get_size(buf2), strlen(str) + 4); // +2 for offset, +1 for null terminator, +1 for reserved byte
gtest_assert_eq(buffer_read(buf2, buffer_u8), 0);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 0);
gtest_assert_eq(buffer_read(buf2, buffer_string), str);

buffer_delete(buf2);

buf2 = buffer_create(8, buffer_wrap, 1);
buffer_base64_decode_ext(buf2, buffer_base64_encode(buf, 0, strlen(str) + 1), 2);
buffer_save(buf2, "buf2.bin");
gtest_assert_eq(buffer_get_size(buf2), 8);
/*
* From GMS:
* 0: 119
* 1: 111
* 2: 114
* 3: 107
* 4: 46
* 5: 0
* 6: 116
* 7: 32
*/
buffer_seek(buf2, buffer_seek_start, 0);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 119);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 111);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 114);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 107);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 46);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 0);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 116);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 32);

buffer_delete(buf2);

buf2 = buffer_create(8, buffer_fixed, 1);
buffer_base64_decode_ext(buf2, buffer_base64_encode(buf, 0, strlen(str) + 1), 2);
buffer_save(buf2, "buf2.bin");
gtest_assert_eq(buffer_get_size(buf2), 8);
/*
* From GMS:
* 0: 0
* 1: 0
* 2: 77
* 3: 97
* 4: 110
* 5: 121
* 6: 32
* 7: 104
*/
buffer_seek(buf2, buffer_seek_start, 0);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 0);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 0);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 77);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 97);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 110);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 121);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 32);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 104);

buffer_delete(buf2);

buf2 = buffer_create(8, buffer_fast, 1);
buffer_base64_decode_ext(buf2, buffer_base64_encode(buf, 0, strlen(str) + 1), 2);
buffer_save(buf2, "buf2.bin");
gtest_assert_eq(buffer_get_size(buf2), 8);
/*
* From GMS:
* 0: 0
* 1: 0
* 2: 77
* 3: 97
* 4: 110
* 5: 121
* 6: 32
* 7: 104
*/
buffer_seek(buf2, buffer_seek_start, 0);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 0);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 0);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 77);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 97);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 110);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 121);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 32);
gtest_assert_eq(buffer_read(buf2, buffer_u8), 104);

buffer_delete(buf2);

buffer_delete(buf);

game_end();
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
var buf = buffer_create(8, buffer_grow, 1);
const char *cont = "Many hands make light work.";
var str = "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcmsu";

buffer_write(buf, buffer_string, cont);
gtest_assert_eq(buffer_base64_encode(buf, 0, strlen(cont)), str);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "Many hands make light work";
str = "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcms=";

buffer_write(buf, buffer_string, cont);
gtest_assert_eq(buffer_base64_encode(buf, 0, strlen(cont)), str);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "Many hands make light wor";
str = "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcg==";

buffer_write(buf, buffer_string, cont);
gtest_assert_eq(buffer_base64_encode(buf, 0, strlen(cont)), str);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "";
str = "";

buffer_write(buf, buffer_string, cont);
gtest_assert_eq(buffer_base64_encode(buf, 0, strlen(cont)), str);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "f";
str = "Zg==";

buffer_write(buf, buffer_string, cont);
gtest_assert_eq(buffer_base64_encode(buf, 0, strlen(cont)), str);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "fo";
str = "Zm8=";

buffer_write(buf, buffer_string, cont);
gtest_assert_eq(buffer_base64_encode(buf, 0, strlen(cont)), str);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "foo";
str = "Zm9v";

buffer_write(buf, buffer_string, cont);
gtest_assert_eq(buffer_base64_encode(buf, 0, strlen(cont)), str);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "foob";
str = "Zm9vYg==";

buffer_write(buf, buffer_string, cont);
gtest_assert_eq(buffer_base64_encode(buf, 0, strlen(cont)), str);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "fooba";
str = "Zm9vYmE=";

buffer_write(buf, buffer_string, cont);
gtest_assert_eq(buffer_base64_encode(buf, 0, strlen(cont)), str);
buffer_delete(buf);

buf = buffer_create(8, buffer_grow, 1);
cont = "foobar";
str = "Zm9vYmFy";

buffer_write(buf, buffer_string, cont);
gtest_assert_eq(buffer_base64_encode(buf, 0, strlen(cont)), str);
buffer_delete(buf);

game_end();
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ gtest_expect_eq(buffer_tell(buffer_fixed_test), 0);
gtest_expect_eq(buffer_read(buffer_fixed_test, buffer_u8), 0);
gtest_expect_eq(buffer_tell(buffer_fixed_test), 1);
buffer_seek(buffer_fixed_test, buffer_seek_end, 0);
gtest_expect_eq(buffer_tell(buffer_fixed_test), 137);
gtest_expect_eq(buffer_tell(buffer_fixed_test), 136);
buffer_seek(buffer_fixed_test, buffer_seek_relative, -10);
gtest_expect_eq(buffer_tell(buffer_fixed_test), 127);
gtest_expect_eq(buffer_tell(buffer_fixed_test), 126);
buffer_seek(buffer_fixed_test, buffer_seek_start, 23);
gtest_expect_eq(buffer_tell(buffer_fixed_test), 23);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
var str = "Many hands make light work.";
var buf = buffer_create(8, buffer_grow, 1);
buffer_write(buf, buffer_string, str);

var buf2 = buffer_compress(buf, 0, buffer_get_size(buf));
var buf3 = buffer_decompress(buf2);
gtest_assert_eq(buffer_read(buf3, buffer_string), str);

buffer_delete(buf3);
buffer_delete(buf2);
buffer_delete(buf);

str = "";
buf = buffer_create(8, buffer_grow, 1);
buffer_write(buf, buffer_string, str);

buf2 = buffer_compress(buf, 0, buffer_get_size(buf));
buf3 = buffer_decompress(buf2);
gtest_assert_eq(buffer_read(buf3, buffer_string), str);

buffer_delete(buf3);
buffer_delete(buf2);
buffer_delete(buf);

game_end();