GSoC Part 1: Binary Buffer functions

Reporter: dc03  |  Status: open  |  Last Modified: July 12, 2022, 11:57:05 pm

This series of commits forms part 1 of my GSoC project, wherein I finish implementing and cleaning up the binary buffer functions.

Done:

  • Fix variant's bitwise operators
  • Switch BinaryBuffer to use std::byte and std::size_t
  • Add serialization and deserialization (big-endian) for the various types supported
  • Fix almost all the functions to be as conformant to GMS's behaviour as possible
  • Give enums names (buffer_seek_t, buffer_type_t, buffer_data_t) to enforce strict typing
  • Tests for most functions
  • Documentation for all except game_save_buffer and game_load_buffer

Only 9 functions are remaining now, I've gone over 32 of them. I'm not really sure how to implement the async functions, and I have no real idea how buffer_set_used_size is supposed to work.

Checklist of the various functions:

  • buffer_exists
  • buffer_create
  • buffer_create_from_vertex_buffer
  • buffer_create_from_vertex_buffer_ext
  • buffer_delete
  • buffer_read
  • buffer_write
  • buffer_fill
  • buffer_seek
  • buffer_tell
  • buffer_peek
  • buffer_poke
  • buffer_save
  • buffer_save_ext
  • buffer_save_async
  • buffer_load
  • buffer_load_ext
  • buffer_load_async
  • buffer_load_partial
  • buffer_compress
  • buffer_decompress
  • buffer_async_group_begin
  • buffer_async_group_option
  • buffer_async_group_end
  • buffer_copy
  • buffer_copy_from_vertex_buffer
  • buffer_get_type
  • buffer_get_alignment
  • buffer_get_address
  • buffer_get_size
  • buffer_get_surface
  • buffer_set_surface
  • buffer_resize
  • buffer_sizeof
  • buffer_md5
  • buffer_sha1
  • buffer_crc32
  • buffer_base64_encode
  • buffer_base64_decode
  • buffer_base64_decode_ext
  • buffer_set_used_size
Please sign in to post comments, or you can view this issue on GitHub.