diff options
-rw-r--r-- | src/blu_cat/com/binary_reader.cpp | 19 | ||||
-rw-r--r-- | src/blu_cat/com/binary_reader.hpp | 9 | ||||
-rw-r--r-- | src/blu_cat/com/binary_writer.cpp | 18 | ||||
-rw-r--r-- | src/blu_cat/com/binary_writer.hpp | 9 |
4 files changed, 55 insertions, 0 deletions
diff --git a/src/blu_cat/com/binary_reader.cpp b/src/blu_cat/com/binary_reader.cpp index eae422e..bb4d231 100644 --- a/src/blu_cat/com/binary_reader.cpp +++ b/src/blu_cat/com/binary_reader.cpp @@ -16,6 +16,7 @@ #include "binary_reader.hpp" +#include <bit> #include <fstream> namespace @@ -88,6 +89,24 @@ BinaryReader::read_ui64() (UI64)b7 << 8 | (UI64)b8; } +I8 +BinaryReader::read_i8() +{ + return std::bit_cast<I8>(this->read_ui8()); +} + +I32 +BinaryReader::read_i32() +{ + return std::bit_cast<I32>(this->read_ui32()); +} + +I64 +BinaryReader::read_i64() +{ + return std::bit_cast<I64>(this->read_ui64()); +} + F32 BinaryReader::read_f32() { diff --git a/src/blu_cat/com/binary_reader.hpp b/src/blu_cat/com/binary_reader.hpp index a17dc88..fec88b6 100644 --- a/src/blu_cat/com/binary_reader.hpp +++ b/src/blu_cat/com/binary_reader.hpp @@ -48,6 +48,15 @@ public: UI64 read_ui64(); + I8 + read_i8(); + + I32 + read_i32(); + + I64 + read_i64(); + F32 read_f32(); diff --git a/src/blu_cat/com/binary_writer.cpp b/src/blu_cat/com/binary_writer.cpp index 7a987d4..7af3b6d 100644 --- a/src/blu_cat/com/binary_writer.cpp +++ b/src/blu_cat/com/binary_writer.cpp @@ -88,6 +88,24 @@ BinaryWriter::write_ui64(UI64 var) } void +BinaryWriter::write_i8(I8 var) +{ + this->write_ui8(std::bit_cast<UI8>(var)); +} + +void +BinaryWriter::write_i32(I32 var) +{ + this->write_ui32(std::bit_cast<UI32>(var)); +} + +void +BinaryWriter::write_i64(I64 var) +{ + this->write_ui64(std::bit_cast<UI64>(var)); +} + +void BinaryWriter::write_f32(F32 var) { IntAndFloat32bit num; diff --git a/src/blu_cat/com/binary_writer.hpp b/src/blu_cat/com/binary_writer.hpp index acf92d8..76bccb3 100644 --- a/src/blu_cat/com/binary_writer.hpp +++ b/src/blu_cat/com/binary_writer.hpp @@ -41,6 +41,15 @@ public: write_ui64(UI64 var); void + write_i8(I8 var); + + void + write_i32(I32 var); + + void + write_i64(I64 var); + + void write_f32(F32 var); void |