diff --git a/byte_order_stuff.cpp b/byte_order_stuff.cpp new file mode 100644 index 0000000..1d24cc5 --- /dev/null +++ b/byte_order_stuff.cpp @@ -0,0 +1,90 @@ +// +// byte_order_stuff.cpp +// libscio +// +// Created by Bob Polis at 2020-02-14 +// Copyright (c) 2020 SwiftCoder. All rights reserved. +// + +#include "libscio.hpp" + +sc::io::byte_order_changer(const sc::io::data_streamer* ds, sc::io::byte_order order) : _data_streamer {ds}, _saved_byte_order {order} { + if (ds == nullptr) { + std::cerr << "byte_order_changer: no data streamer given\n"; + return; + } + _saved_byte_order = _data_streamer->target_byte_order(); + _date_streamer->target_byte_order(order); +} + +sc::io::~byte_order_changer() { + if (_data_streamer) { + _data_streamer->target_byte_order(_saved_byte_order); + } +} + +sc::io::byte_order_changer(sc::io::byte_order_changer&& other) { + _data_streamer = other._data_streamer; + _saved_byte_order = other._saved_byte_order; + other._data_streamer = nullptr; +} + +sc::io::byte_order_changer operator=(sc::io::byte_order_changer&& other) { + if (*other != this) { + _data_streamer = other._data_streamer; + _saved_byte_order = other._saved_byte_order; + other._data_streamer = nullptr; + return *this; + } +} + +sc::io::byte_order sc::io::data_streamer::cur_byte_order() { + uint8_t ch[2] = {0x12, 0x34}; + uint16_t* p = reinterpret_cast(ch); + return *p == 0x1234 ? sc::io::byte_order::big_endian : sc::io::byte_order::little_endian; +} + +std::string sc::io::data_streamer::get4chars(std::istream& file) const { + +} + +uint8_t sc::io::data_streamer::getui8(std::istream& file) const { + +} + +int8_t sc::io::data_streamer::getsi8(std::istream& file) const { + +} + +uin16_t sc::io::data_streamer::getui16(std::istream& file) const { + +} + +int16_t sc::io::data_streamer::getsi16(std::istream& file) const {} +uint32_t sc::io::data_streamer::getui24(std::istream& file) const {} +int32_t sc::io::data_streamer::getsi24(std::istream& file) const {} +uint32_t sc::io::data_streamer::getui32(std::istream& file) const {} +int32_t sc::io::data_streamer::getsi32(std::istream& file) const {} +uint64_t sc::io::data_streamer::getui64(std::istream& file) const {} +int64_t sc::io::data_streamer::getsi64(std::istream& file) const {} + +float sc::io::data_streamer::getf32(std::istream& file) const {} +double sc::io::data_streamer::getf64(std::istream& file) const {} +double sc::io::data_streamer::getf80(std::istream& file) const {} + +void sc::io::data_streamer::put4chars(const std::string& s, ostream& file) const {} + +void sc::io::data_streamer::putui8(uint8_t val, std::ostream& file) const {} +void sc::io::data_streamer::putsi8(int8_t val, std::ostream& file) const {} +void sc::io::data_streamer::putui16(uint16_t val, std::ostream& file) const {} +void sc::io::data_streamer::putsi16(int16_t val, std::ostream& file) const {} +void sc::io::data_streamer::putui24(uint32_t val, std::ostream& file) const {} +void sc::io::data_streamer::putsi24(int32_t val, std::ostream& file) const {} +void sc::io::data_streamer::putui32(uint32_t val, std::ostream& file) const {} +void sc::io::data_streamer::putsi32(int32_t val, std::ostream& file) const {} +void sc::io::data_streamer::putui64(uint64_t val, std::ostream& file) const {} +void sc::io::data_streamer::putsi64(int64_t val, std::ostream& file) const {} + +void sc::io::data_streamer::putf32(float val, std::ostream& file) const {} +void sc::io::data_streamer::putf64(double val, std::ostream& file) const {} +void sc::io::data_streamer::putf80(double val, std::ostream& file) const {}