Qore Programming Language  1.8.1
InputStream Class Referenceabstract

Interface for private data of input streams. More...

#include <InputStream.h>

Inheritance diagram for InputStream:
Collaboration diagram for InputStream:

Public Member Methods

virtual int64 peek (ExceptionSink *xsink)=0
 Peeks the next byte from the input stream. More...
 
DLLLOCAL QoreValue peekHelper (ExceptionSink *xsink)
 Helper method that checks that the current thread is the same as when the instance was created, calls peek() and wraps the result to Qore's `int` value. More...
 
virtual int64 read (void *ptr, int64 limit, ExceptionSink *xsink)=0
 Reads up to `limit` bytes from the input stream. More...
 
DLLLOCAL BinaryNodereadHelper (int64 limit, ExceptionSink *xsink)
 Helper method that checks that the current thread is the same as when the instance was created, calls read() and wraps the read data to Qore's `binary` value. More...
 
- Public Member Methods inherited from StreamBase
DLLLOCAL bool check (ExceptionSink *xsink)
 Checks that the current thread is the same as when the instance was created or assigned via unassignThread() and reassignThread() and that the stream has not yet been closed. More...
 
virtual DLLLOCAL const char * getName ()=0
 Returns the name of the class. More...
 
DLLLOCAL int getThreadId ()
 Get currently assigned thread id.
 
DLLLOCAL void reassignThread (ExceptionSink *xsink)
 Reassigns current thread as thread used for stream manipulation, see check() More...
 
DLLLOCAL void unassignThread (ExceptionSink *xsink)
 Unassigns current thread as thread used for stream manipulation, see check() More...
 
- Public Member Methods inherited from AbstractPrivateData
virtual DLLLOCAL void deref ()
 decrements the reference count of the object without the possibility of throwing a Qore-language exception
 
virtual DLLLOCAL void deref (ExceptionSink *xsink)
 decrements the reference count of the object More...
 
DLLLOCAL void ref () const
 increments the reference count of the object
 
- Public Member Methods inherited from QoreReferenceCounter
DLLEXPORT QoreReferenceCounter ()
 creates the reference counter object
 
DLLEXPORT QoreReferenceCounter (const QoreReferenceCounter &old)
 creates a new object with a reference count of 1 More...
 
DLLEXPORT ~QoreReferenceCounter ()
 destroys the reference counter object
 
DLLEXPORT bool is_unique () const
 returns true if the reference count is 1 More...
 
DLLEXPORT int reference_count () const
 gets the reference count More...
 
DLLEXPORT bool ROdereference () const
 atomically decrements the reference count More...
 
DLLEXPORT void ROreference () const
 atomically increments the reference count
 

Private Member Methods

 InputStream ()=default
 Constructor.
 
- Private Member Methods inherited from StreamBase
 StreamBase ()
 Constructor.
 
- Private Member Methods inherited from AbstractPrivateData
virtual DLLLOCAL ~AbstractPrivateData ()
 as these objects are reference counted, the destructor should be called only when the reference count = 0 and not manually
 

Detailed Description

Interface for private data of input streams.

Methods in this interface serve as low-level API for using input streams from C++ code.

Member Function Documentation

◆ peek()

virtual int64 InputStream::peek ( ExceptionSink xsink)
pure virtual

Peeks the next byte from the input stream.

Parameters
xsinkthe exception sink
Returns
the next byte available to be read, -1 indicates end of the stream, -2 indicates an error

Implemented in StringInputStream, PipeInputStream, InputStreamWrapper, FileInputStream, and BinaryInputStream.

◆ peekHelper()

DLLLOCAL QoreValue InputStream::peekHelper ( ExceptionSink xsink)
inline

Helper method that checks that the current thread is the same as when the instance was created, calls peek() and wraps the result to Qore's `int` value.

Parameters
xsinkthe exception sink
Returns
the `int` wrapping the result or `NOTHING` if the end of the stream has been reached

◆ read()

virtual int64 InputStream::read ( void *  ptr,
int64  limit,
ExceptionSink xsink 
)
pure virtual

Reads up to `limit` bytes from the input stream.

Parameters
ptrthe destination buffer to read data into
limitthe maximum number of bytes to read, must be > 0
xsinkthe exception sink
Returns
the number of bytes read, 0 indicates the end of the stream

Implemented in StringInputStream, PipeInputStream, InputStreamWrapper, FileInputStream, and BinaryInputStream.

◆ readHelper()

DLLLOCAL BinaryNode* InputStream::readHelper ( int64  limit,
ExceptionSink xsink 
)
inline

Helper method that checks that the current thread is the same as when the instance was created, calls read() and wraps the read data to Qore's `binary` value.

Parameters
limitthe maximum number of bytes to read
xsinkthe exception sink
Returns
the `binary` wrapping the read data or `NOTHING` if the end of the stream has been reached

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