Jpp  15.0.5
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
JLANG::JFileStreamBuffer Class Reference

Input and output file stream buffer. More...

#include <JFileStreamBuffer.hh>

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

Public Types

typedef traits_type::int_type int_type
 
typedef traits_type::int_type int_type
 
typedef std::streamsize streamsize
 

Public Member Functions

 JFileStreamBuffer (const JAbstractFile &in, const JAbstractFile &out, const std::size_t size=65536, const std::size_t put_back=8)
 Constructor. More...
 
virtual int_type underflow () override
 Check underflow. More...
 
bool in_avail (JTimeval timeout=JTimeval::min()) const
 Check availability of input. More...
 
virtual int_type overflow (int_type c) override
 Check overflow. More...
 
virtual int sync () override
 Synchronise buffer. More...
 
bool out_avail (JTimeval timeout=JTimeval::min()) const
 Check availability of output. More...
 

Protected Member Functions

int flush ()
 Flush internal buffer. More...
 

Protected Attributes

JFile in
 
std::size_t memory
 
JFile out
 

Detailed Description

Input and output file stream buffer.

Definition at line 223 of file JFileStreamBuffer.hh.

Member Typedef Documentation

typedef traits_type::int_type JLANG::JFileInputStreamBuffer::int_type
inherited

Definition at line 32 of file JFileStreamBuffer.hh.

typedef traits_type::int_type JLANG::JFileOutputStreamBuffer::int_type
inherited

Definition at line 115 of file JFileStreamBuffer.hh.

typedef std::streamsize JLANG::JFileOutputStreamBuffer::streamsize
inherited

Definition at line 116 of file JFileStreamBuffer.hh.

Constructor & Destructor Documentation

JLANG::JFileStreamBuffer::JFileStreamBuffer ( const JAbstractFile in,
const JAbstractFile out,
const std::size_t  size = 65536,
const std::size_t  put_back = 8 
)
inline

Constructor.

Parameters
ininput file
outoutput file
sizesize of internal buffer
put_backnumber of put back characters

Definition at line 236 of file JFileStreamBuffer.hh.

239  :
240  JFileInputStreamBuffer (in, size, put_back),
241  JFileOutputStreamBuffer(out, size)
242  {}
JFileOutputStreamBuffer(const JAbstractFile &file, const std::size_t size=65536)
Constructor.
JFileInputStreamBuffer(const JAbstractFile &file, const std::size_t size=65536, const std::size_t put_back=8)
Constructor.

Member Function Documentation

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

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:74
bool JLANG::JFileInputStreamBuffer::in_avail ( JTimeval  timeout = JTimeval::min()) const
inlineinherited

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  }
Auxiliary class for method select.
bool in_avail(JTimeval timeout=JTimeval::min())
Check availability of input.
virtual int_type JLANG::JFileOutputStreamBuffer::overflow ( int_type  c)
inlineoverridevirtualinherited

Check overflow.

This method writes one byte if possible.

Parameters
ccharacter
Returns
c if OK; else EOF

Definition at line 153 of file JFileStreamBuffer.hh.

154  {
155  if (c != traits_type::eof()) {
156 
157  *pptr() = (char) c;
158 
159  pbump(1);
160 
161  if (flush() == traits_type::eof()) {
162  return traits_type::eof();
163  }
164  }
165 
166  return c;
167  }
int flush()
Flush internal buffer.
virtual int JLANG::JFileOutputStreamBuffer::sync ( )
inlineoverridevirtualinherited

Synchronise buffer.

Definition at line 173 of file JFileStreamBuffer.hh.

174  {
175  if (flush() == traits_type::eof())
176  return -1;
177  else
178  return 0;
179  }
int flush()
Flush internal buffer.
bool JLANG::JFileOutputStreamBuffer::out_avail ( JTimeval  timeout = JTimeval::min()) const
inlineinherited

Check availability of output.

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

Parameters
timeouttimeout
Returns
true if ready to write; else false

Definition at line 189 of file JFileStreamBuffer.hh.

190  {
191  return JFileDescriptorMask(out).out_avail(timeout);
192  }
bool out_avail(JTimeval timeout=JTimeval::min())
Check availability of output.
Auxiliary class for method select.
int JLANG::JFileOutputStreamBuffer::flush ( )
inlineprotectedinherited

Flush internal buffer.

Definition at line 198 of file JFileStreamBuffer.hh.

199  {
200  const int len = pptr() - pbase();
201 
202  if (len != 0) {
203 
204  if (out.write(this->data(), len) != len) {
205  return traits_type::eof();
206  }
207 
208  pbump(-len);
209  }
210 
211  return len;
212  }
virtual int write(const char *buffer, const int length)
Write data to file.
Definition: JFile.hh:87

Member Data Documentation

JFile JLANG::JFileInputStreamBuffer::in
protectedinherited

Definition at line 100 of file JFileStreamBuffer.hh.

std::size_t JLANG::JFileInputStreamBuffer::memory
protectedinherited

Definition at line 101 of file JFileStreamBuffer.hh.

JFile JLANG::JFileOutputStreamBuffer::out
protectedinherited

Definition at line 215 of file JFileStreamBuffer.hh.


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