soma-io  5.1.2
soma::DataSource Class Referenceabstract

Abstraction layer for various data sources (file, buffer, socket...). More...

#include <soma-io/datasource/datasource.h>

Inheritance diagram for soma::DataSource:
Collaboration diagram for soma::DataSource:

Public Types

enum  Mode { Read = 1 , Write = 2 , ReadWrite = 3 }
 
enum  IterateMode { DirectAccess = 1 , SequentialAccess = 2 }
 
- Public Types inherited from carto::RCObject
typedef int RefCounterType
 

Public Member Functions

 DataSource ()
 
virtual ~DataSource ()
 
int mode () const
 access mode(s) (read/write): bitwise OR of Mode values More...
 
virtual DataSourceclone () const =0
 
virtual int iterateMode () const =0
 possible iteration mode(s): bitwise OR of IterateMode values More...
 
virtual bool isOpen () const =0
 
virtual bool eof () const
 
virtual bool operator! () const
 
virtual operator bool () const
 
virtual bool open (int mode)=0
 
virtual void close ()=0
 
virtual void flush ()
 
virtual offset_t size () const =0
 
virtual offset_t at () const =0
 
virtual bool at (offset_t pos)=0
 
virtual bool atEnd () const
 
bool reset ()
 
virtual long readBlock (char *data, unsigned long maxlen)=0
 
virtual long writeBlock (const char *data, unsigned long len)=0
 
virtual int getch ()=0
 
virtual int putch (int ch)=0
 
virtual bool ungetch (int ch)=0
 
virtual bool allowsMemoryMapping () const =0
 
virtual std::string url () const
 
- Public Member Functions inherited from carto::RCObject
 RCObject ()
 
 RCObject (const RCObject &)
 
RCObjectoperator= (const RCObject &)
 
virtual ~RCObject ()
 

Static Public Member Functions

static const carto::rc_ptr< DataSourcenone ()
 An empty ref-counter that is more convenient than calling a constructor of rc_ptr<DataSource> (useful when calling functions) More...
 

Protected Attributes

int _mode
 

Detailed Description

Abstraction layer for various data sources (file, buffer, socket...).

It can be seen as a stream, and is inspired by the QIODevice of Trolltech's Qt library (http://doc.trolltech.com/3.3/qiodevice.html)

Todo:
readBlock() and writeBlock() should use pointers of type void* instead of char*, because the type of contained objects is not specified. This would remove the need to reinterpret_cast, which is prone to error.

Definition at line 64 of file datasource.h.

Member Enumeration Documentation

◆ IterateMode

Enumerator
DirectAccess 
SequentialAccess 

Definition at line 74 of file datasource.h.

◆ Mode

Enumerator
Read 
Write 
ReadWrite 

Definition at line 67 of file datasource.h.

Constructor & Destructor Documentation

◆ DataSource()

soma::DataSource::DataSource ( )

◆ ~DataSource()

virtual soma::DataSource::~DataSource ( )
virtual

Member Function Documentation

◆ allowsMemoryMapping()

◆ at() [1/2]

◆ at() [2/2]

◆ atEnd()

virtual bool soma::DataSource::atEnd ( ) const
virtual

◆ clone()

◆ close()

◆ eof()

virtual bool soma::DataSource::eof ( ) const
virtual

◆ flush()

virtual void soma::DataSource::flush ( )
virtual

◆ getch()

◆ isOpen()

◆ iterateMode()

virtual int soma::DataSource::iterateMode ( ) const
pure virtual

◆ mode()

int soma::DataSource::mode ( ) const

access mode(s) (read/write): bitwise OR of Mode values

◆ none()

static const carto::rc_ptr<DataSource> soma::DataSource::none ( )
static

An empty ref-counter that is more convenient than calling a constructor of rc_ptr<DataSource> (useful when calling functions)

Referenced by soma::Reader< T >::dataSource().

◆ open()

◆ operator bool()

virtual soma::DataSource::operator bool ( ) const
virtual

◆ operator!()

virtual bool soma::DataSource::operator! ( ) const
virtual

◆ putch()

◆ readBlock()

◆ reset()

bool soma::DataSource::reset ( )

◆ size()

◆ ungetch()

◆ url()

◆ writeBlock()

Member Data Documentation

◆ _mode

int soma::DataSource::_mode
protected

Definition at line 113 of file datasource.h.


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