#ifndef INCLUDE_WEBM_BUFFER_READER_H_
#define INCLUDE_WEBM_BUFFER_READER_H_
#include <cstddef>
#include <cstdint>
#include <initializer_list>
#include <vector>
#include "./reader.h"
#include "./status.h"
namespace webm {
class BufferReader : public Reader {
public:
BufferReader() = default;
BufferReader(const BufferReader& other) = default;
BufferReader& operator=(const BufferReader& other) = default;
BufferReader(BufferReader&&);
BufferReader& operator=(BufferReader&&);
BufferReader(std::initializer_list<std::uint8_t> bytes);
explicit BufferReader(const std::vector<std::uint8_t>& vector);
explicit BufferReader(std::vector<std::uint8_t>&& vector);
BufferReader& operator=(std::initializer_list<std::uint8_t> bytes);
Status Read(std::size_t num_to_read, std::uint8_t* buffer,
std::uint64_t* num_actually_read) override;
Status Skip(std::uint64_t num_to_skip,
std::uint64_t* num_actually_skipped) override;
std::uint64_t Position() const override;
std::size_t size() const { return data_.size(); }
private:
std::vector<std::uint8_t> data_;
std::size_t pos_ = 0;
};
}
#endif