| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | 
							- #include <BinaryStream.h>
 
- #include <stdexcept>  // for runtime_error
 
- using namespace bell;
 
- BinaryStream::BinaryStream(std::ostream* ostr) {
 
-   this->ostr = ostr;
 
-   byteOrder = std::endian::native;
 
- }
 
- BinaryStream::BinaryStream(std::istream* istr) {
 
-   this->istr = istr;
 
-   byteOrder = std::endian::native;
 
- }
 
- void BinaryStream::setByteOrder(std::endian byteOrder) {
 
-   this->byteOrder = byteOrder;
 
-   flipBytes = byteOrder != std::endian::native;
 
- }
 
- void BinaryStream::ensureReadable() {
 
-   if (istr == nullptr)
 
-     throw std::runtime_error("No input provided for binary stream");
 
- }
 
- void BinaryStream::ensureWritable() {
 
-   if (ostr == nullptr)
 
-     throw std::runtime_error("No output provided for binary stream");
 
- }
 
- BinaryStream& BinaryStream::operator>>(int16_t& value) {
 
-   ensureReadable();
 
-   istr->read((char*)&value, sizeof(value));
 
-   if (flipBytes)
 
-     value = swap16(value);
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator>>(uint16_t& value) {
 
-   ensureReadable();
 
-   istr->read((char*)&value, sizeof(value));
 
-   if (flipBytes)
 
-     swap16(value);
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator>>(int32_t& value) {
 
-   ensureReadable();
 
-   istr->read((char*)&value, sizeof(value));
 
-   if (flipBytes)
 
-     value = swap32(value);
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator>>(uint32_t& value) {
 
-   ensureReadable();
 
-   istr->read((char*)&value, sizeof(value));
 
-   if (flipBytes)
 
-     value = swap32(value);
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator>>(int64_t& value) {
 
-   ensureReadable();
 
-   istr->read((char*)&value, sizeof(value));
 
-   if (flipBytes)
 
-     value = swap64(value);
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator>>(uint64_t& value) {
 
-   ensureReadable();
 
-   istr->read((char*)&value, sizeof(value));
 
-   if (flipBytes)
 
-     value = swap64(value);
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator<<(char value) {
 
-   ensureWritable();
 
-   ostr->write((const char*)&value, sizeof(value));
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator<<(std::byte value) {
 
-   ensureWritable();
 
-   ostr->write((const char*)&value, sizeof(value));
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator<<(int16_t value) {
 
-   ensureWritable();
 
-   if (flipBytes)
 
-     value = swap16(value);
 
-   ostr->write((const char*)&value, sizeof(value));
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator<<(uint16_t value) {
 
-   ensureWritable();
 
-   if (flipBytes)
 
-     value = swap16(value);
 
-   ostr->write((const char*)&value, sizeof(value));
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator<<(int32_t value) {
 
-   ensureWritable();
 
-   if (flipBytes)
 
-     value = swap32(value);
 
-   ostr->write((const char*)&value, sizeof(value));
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator<<(uint32_t value) {
 
-   ensureWritable();
 
-   if (flipBytes)
 
-     value = swap32(value);
 
-   ostr->write((const char*)&value, sizeof(value));
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator<<(int64_t value) {
 
-   ensureWritable();
 
-   if (flipBytes)
 
-     value = swap64(value);
 
-   ostr->write((const char*)&value, sizeof(value));
 
-   return *this;
 
- }
 
- BinaryStream& BinaryStream::operator<<(uint64_t value) {
 
-   ensureWritable();
 
-   if (flipBytes)
 
-     value = swap64(value);
 
-   ostr->write((const char*)&value, sizeof(value));
 
-   return *this;
 
- }
 
 
  |