iw6-mod/deps/gsc-tool/include/xsk/utils/reader.hpp
2024-02-27 01:34:37 -05:00

41 lines
901 B
C++

// Copyright 2023 xensik. All rights reserved.
//
// Use of this source code is governed by a GNU GPLv3 license
// that can be found in the LICENSE file.
#pragma once
namespace xsk::utils
{
class reader
{
public:
using ptr = std::unique_ptr<reader>;
private:
u8 const* data_;
u32 size_;
u32 pos_;
bool swap_;
public:
reader(bool swap = false);
reader(std::vector<u8> const& data, bool swap = false);
reader(u8 const* data, u32 size, bool swap = false);
template <typename T>
auto read() -> T;
auto read_cstr() -> std::string;
auto read_bytes(u32 pos, u32 count) -> std::string;
auto is_avail() -> bool;
auto seek(u32 size) -> void;
auto seek_neg(u32 size) -> void;
auto align(u32 size) -> u32;
auto data() -> u8 const*;
auto size() -> u32;
auto pos() -> u32;
auto pos(u32 pos) -> void;
};
} // namespace xsk::utils