stream: modify read_reminder() to allow custom allocator

Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
Simon Rozman 2025-06-27 15:13:02 +02:00
parent 214e307486
commit faeddedd46

View File

@ -188,9 +188,10 @@ namespace stdex
/// ///
/// \return Data read /// \return Data read
/// ///
virtual std::vector<uint8_t> read_remainder(_In_ size_t max_length = SIZE_MAX) template <typename AX = std::allocator<uint8_t>>
std::vector<uint8_t, AX> read_remainder(_In_ size_t max_length = SIZE_MAX)
{ {
std::vector<uint8_t> result; std::vector<uint8_t, AX> result;
size_t offset, length; size_t offset, length;
offset = 0; offset = 0;
length = default_block_size; length = default_block_size;
@ -815,10 +816,11 @@ namespace stdex
class basic_file : virtual public basic class basic_file : virtual public basic
{ {
public: public:
virtual std::vector<uint8_t> read_remainder(_In_ size_t max_length = SIZE_MAX) template <typename AX = std::allocator<uint8_t>>
std::vector<uint8_t, AX> read_remainder(_In_ size_t max_length = SIZE_MAX)
{ {
size_t length = std::min<size_t>(max_length, static_cast<size_t>(size() - tell())); size_t length = std::min<size_t>(max_length, static_cast<size_t>(size() - tell()));
std::vector<uint8_t> result; std::vector<uint8_t, AX> result;
try { result.resize(length); } try { result.resize(length); }
catch (const std::bad_alloc&) { catch (const std::bad_alloc&) {
m_state = state_t::fail; m_state = state_t::fail;