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;
|
std::size_t read(char * p, std::size_t size) override;
|
||||||
|
|
||||||
|
bool finished() const override;
|
||||||
|
|
||||||
~file_istream() override
|
~file_istream() override
|
||||||
{
|
{
|
||||||
reset();
|
reset();
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,11 @@ namespace psemek::io
|
||||||
|
|
||||||
std::size_t read(char * p, std::size_t size) override;
|
std::size_t read(char * p, std::size_t size) override;
|
||||||
|
|
||||||
|
bool finished() const override
|
||||||
|
{
|
||||||
|
return begin_ == end_;
|
||||||
|
}
|
||||||
|
|
||||||
void advance(std::size_t n)
|
void advance(std::size_t n)
|
||||||
{
|
{
|
||||||
if (end_ - begin_ < 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(char * p, std::size_t size) = 0;
|
||||||
virtual std::size_t read_all(char * p, std::size_t size);
|
virtual std::size_t read_all(char * p, std::size_t size);
|
||||||
|
virtual bool finished() const = 0;
|
||||||
|
|
||||||
virtual ~istream() {}
|
virtual ~istream() {}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,12 @@ namespace psemek::io
|
||||||
return std::fread(p, 1, size, file_);
|
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)
|
static char const * fopen_write_mode(unsigned flags)
|
||||||
{
|
{
|
||||||
switch (flags)
|
switch (flags)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue