Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JLANG::JFileInputStreamBuffer Class Reference

Input file stream buffer. More...

#include <JFileStreamBuffer.hh>

Inheritance diagram for JLANG::JFileInputStreamBuffer:
std::vector< char > JLANG::JFileInputStream JLANG::JFileStreamBuffer JLANG::JFileStream JSYSTEM::JShell

Public Types

typedef traits_type::int_type int_type
 

Public Member Functions

 JFileInputStreamBuffer (const JAbstractFile &file, const std::size_t size=65536, const std::size_t put_back=8)
 Constructor.
 
virtual int_type underflow () override
 Check underflow.
 
bool in_avail (JTimeval timeout=JTimeval::min()) const
 Check availability of input.
 

Protected Attributes

JFile in
 
std::size_t memory
 

Private Member Functions

 JFileInputStreamBuffer (const JFileInputStreamBuffer &)
 
 JFileInputStreamBuffer (JFileInputStreamBuffer &&)
 
JFileInputStreamBufferoperator= (const JFileInputStreamBuffer &)
 
JFileInputStreamBufferoperator= (JFileInputStreamBuffer &&)
 

Detailed Description

Input file stream buffer.

Definition at line 25 of file JFileStreamBuffer.hh.

Member Typedef Documentation

◆ int_type

Definition at line 32 of file JFileStreamBuffer.hh.

Constructor & Destructor Documentation

◆ JFileInputStreamBuffer() [1/3]

JLANG::JFileInputStreamBuffer::JFileInputStreamBuffer ( const JAbstractFile & file,
const std::size_t size = 65536,
const std::size_t put_back = 8 )
inline

Constructor.

Parameters
filefile
sizesize of internal buffer
put_backnumber of put back characters

Definition at line 42 of file JFileStreamBuffer.hh.

44 :
45 in (file),
46 memory(put_back)
47 {
48 resize(size + put_back),
49
50 setg(this->data(), this->data(), this->data());
51 }

◆ JFileInputStreamBuffer() [2/3]

JLANG::JFileInputStreamBuffer::JFileInputStreamBuffer ( const JFileInputStreamBuffer & )
private

◆ JFileInputStreamBuffer() [3/3]

JLANG::JFileInputStreamBuffer::JFileInputStreamBuffer ( JFileInputStreamBuffer && )
private

Member Function Documentation

◆ underflow()

virtual int_type JLANG::JFileInputStreamBuffer::underflow ( )
inlineoverridevirtual

Check underflow.

This method reads as many bytes as possible.

Returns
first character if OK; else EOF

Definition at line 60 of file JFileStreamBuffer.hh.

61 {
62 if (gptr() >= egptr()) {
63
64 char* __begin = this->data();
65
66 if (eback() == __begin) {
67
68 // push put back characters
69
70 memmove(__begin, egptr() - memory, memory);
71
72 __begin += memory;
73 }
74
75 const size_t len = in.read(__begin, this->size() - (__begin - this->data()));
76
77 if (len != 0)
78 setg(this->data(), __begin, __begin + len);
79 else
80 return traits_type::eof();
81 }
82
83 return *gptr();
84 }
virtual int read(char *buffer, const int length)
Read data from file.
Definition JFile.hh:80

◆ in_avail()

bool JLANG::JFileInputStreamBuffer::in_avail ( JTimeval timeout = JTimeval::min()) const
inline

Check availability of input.

This method returns true if at least one byte can be read without blocking.

Parameters
timeouttimeout
Returns
true if ready to read; else false

Definition at line 94 of file JFileStreamBuffer.hh.

95 {
96 return JFileDescriptorMask(in).in_avail(timeout);
97 }

◆ operator=() [1/2]

JFileInputStreamBuffer & JLANG::JFileInputStreamBuffer::operator= ( const JFileInputStreamBuffer & )
private

◆ operator=() [2/2]

JFileInputStreamBuffer & JLANG::JFileInputStreamBuffer::operator= ( JFileInputStreamBuffer && )
private

Member Data Documentation

◆ in

JFile JLANG::JFileInputStreamBuffer::in
protected

Definition at line 100 of file JFileStreamBuffer.hh.

◆ memory

std::size_t JLANG::JFileInputStreamBuffer::memory
protected

Definition at line 101 of file JFileStreamBuffer.hh.


The documentation for this class was generated from the following file: