Add io::istream::finished() method
This commit is contained in:
parent
8038da6987
commit
a8fc4ea741
4 changed files with 14 additions and 0 deletions
|
|
@ -40,6 +40,8 @@ namespace psemek::io
|
|||
|
||||
std::size_t read(char * p, std::size_t size) override;
|
||||
|
||||
bool finished() const override;
|
||||
|
||||
~file_istream() override
|
||||
{
|
||||
reset();
|
||||
|
|
|
|||
|
|
@ -55,6 +55,11 @@ namespace psemek::io
|
|||
|
||||
std::size_t read(char * p, std::size_t size) override;
|
||||
|
||||
bool finished() const override
|
||||
{
|
||||
return begin_ == end_;
|
||||
}
|
||||
|
||||
void advance(std::size_t n)
|
||||
{
|
||||
if (end_ - begin_ < n)
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ namespace psemek::io
|
|||
{
|
||||
virtual std::size_t read(char * p, std::size_t size) = 0;
|
||||
virtual std::size_t read_all(char * p, std::size_t size);
|
||||
virtual bool finished() const = 0;
|
||||
|
||||
virtual ~istream() {}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -37,6 +37,12 @@ namespace psemek::io
|
|||
return std::fread(p, 1, size, file_);
|
||||
}
|
||||
|
||||
bool file_istream::finished() const
|
||||
{
|
||||
if (!file_) throw null_istream{};
|
||||
return std::feof(file_) != 0;
|
||||
}
|
||||
|
||||
static char const * fopen_write_mode(unsigned flags)
|
||||
{
|
||||
switch (flags)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue