#pragma once #include "CoreMinimal.h" #include "lpx-basebuffer.hpp" class FlxStreamBufferCore { private: bool err_eof_on_read_; bool err_string_too_long_; bool err_integer_truncated_; protected: void *basebuffer_malloc(size_t size) { return malloc(size); } void basebuffer_free(void *p) { free(p); } void clear_error_flags() { err_eof_on_read_ = err_string_too_long_ = err_integer_truncated_ = false; } void raise_eof_on_read() { err_eof_on_read_ = true; } void raise_string_too_long() { err_string_too_long_ = true; } void raise_integer_truncated() { err_integer_truncated_ = true; } bool get_err_eof_on_read() const { return err_eof_on_read_; } bool get_err_string_too_long() const { return err_string_too_long_; } bool get_err_integer_truncated() const { return err_integer_truncated_; } bool any_error() const { return err_eof_on_read_ || err_string_too_long_ || err_integer_truncated_; } }; class FlxStreamBuffer : public BaseBuffer { public: using BaseBuffer::BaseBuffer; void write_dxyz(const FVector &xyz) { write_double(xyz.X); write_double(xyz.Y); write_double(xyz.Z); } FVector read_dxyz() { double x = read_double(); double y = read_double(); double z = read_double(); return FVector(x, y, z); } };