2023-09-07 05:35:02 -04:00
|
|
|
#pragma once
|
2023-09-08 05:38:09 -04:00
|
|
|
|
2023-09-07 05:35:02 -04:00
|
|
|
#include "CoreMinimal.h"
|
2023-10-18 17:38:53 -04:00
|
|
|
#include "lpx-basebuffer.hpp"
|
2023-09-07 05:35:02 -04:00
|
|
|
|
|
|
|
|
|
2023-10-24 01:44:09 -04:00
|
|
|
class FlxStreamBufferCore {
|
2023-09-07 05:35:02 -04:00
|
|
|
private:
|
2023-10-24 01:44:09 -04:00
|
|
|
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; }
|
2023-09-07 05:35:02 -04:00
|
|
|
|
2023-10-24 01:44:09 -04:00
|
|
|
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_; }
|
|
|
|
|
};
|
2023-09-07 05:35:02 -04:00
|
|
|
|
2023-10-24 01:44:09 -04:00
|
|
|
class FlxStreamBuffer : public BaseBuffer<FlxStreamBufferCore, std::string> {
|
|
|
|
|
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);
|
|
|
|
|
}
|
2023-09-07 05:35:02 -04:00
|
|
|
};
|
2023-10-24 01:44:09 -04:00
|
|
|
|