soma-io 6.0.6
datasource.h
Go to the documentation of this file.
1/* This software and supporting documentation are distributed by
2 * Institut Federatif de Recherche 49
3 * CEA/NeuroSpin, Batiment 145,
4 * 91191 Gif-sur-Yvette cedex
5 * France
6 *
7 * This software is governed by the CeCILL-B license under
8 * French law and abiding by the rules of distribution of free software.
9 * You can use, modify and/or redistribute the software under the
10 * terms of the CeCILL-B license as circulated by CEA, CNRS
11 * and INRIA at the following URL "http://www.cecill.info".
12 *
13 * As a counterpart to the access to the source code and rights to copy,
14 * modify and redistribute granted by the license, users are provided only
15 * with a limited warranty and the software's author, the holder of the
16 * economic rights, and the successive licensors have only limited
17 * liability.
18 *
19 * In this respect, the user's attention is drawn to the risks associated
20 * with loading, using, modifying and/or developing or reproducing the
21 * software by the user in light of its specific status of free software,
22 * that may mean that it is complicated to manipulate, and that also
23 * therefore means that it is reserved for developers and experienced
24 * professionals having in-depth computer knowledge. Users are therefore
25 * encouraged to load and test the software's suitability as regards their
26 * requirements in conditions enabling the security of their systems and/or
27 * data to be ensured and, more generally, to use and operate it in the
28 * same conditions as regards security.
29 *
30 * The fact that you are presently reading this means that you have had
31 * knowledge of the CeCILL-B license and that you accept its terms.
32 */
33
34#ifndef SOMAIO_DATASOURCE_DATASOURCE_H
35#define SOMAIO_DATASOURCE_DATASOURCE_H
36//--- soma-io ----------------------------------------------------------------
38//--- cartobase --------------------------------------------------------------
39#include <cartobase/smart/rcptr.h> // declares base class RCObject
40//--- system -----------------------------------------------------------------
41#include <string>
42//----------------------------------------------------------------------------
43
44namespace soma
45{
46
48 #if defined(__osf__)
49 typedef unsigned long offset_t;
50 #else
51 typedef unsigned long long offset_t;
52 #endif
53
63
64 class DataSource : public virtual carto::RCObject
65 {
66 public:
67 enum Mode
68 {
69 Read = 1,
70 Write = 2,
72 };
73
79
81 virtual ~DataSource();
82
84 int mode() const;
85
86 virtual DataSource* clone() const = 0;
88 virtual int iterateMode() const = 0;
89 virtual bool isOpen() const = 0;
90 virtual bool eof() const;
91 virtual bool operator ! () const;
92 virtual operator bool () const;
93 virtual bool open ( int mode ) = 0;
94 virtual void close() = 0;
95 virtual void flush();
96 virtual offset_t size() const = 0;
97 virtual offset_t at() const = 0;
98 virtual bool at( offset_t pos ) = 0;
99 virtual bool atEnd() const;
100 bool reset();
101 virtual long readBlock( char * data, unsigned long maxlen ) = 0;
102 virtual long writeBlock( const char * data, unsigned long len ) = 0;
103 virtual int getch() = 0;
104 virtual int putch( int ch ) = 0;
105 virtual bool ungetch( int ch ) = 0;
106 virtual bool allowsMemoryMapping() const = 0;
107 virtual std::string url() const;
108
112 protected:
113 int _mode;
114 };
115
116}
117
118#endif
virtual int getch()=0
virtual bool atEnd() const
virtual void close()=0
virtual DataSource * clone() const =0
virtual long writeBlock(const char *data, unsigned long len)=0
virtual ~DataSource()
virtual bool ungetch(int ch)=0
virtual bool at(offset_t pos)=0
int mode() const
access mode(s) (read/write): bitwise OR of Mode values
virtual bool eof() const
virtual offset_t at() const =0
static const carto::rc_ptr< DataSource > none()
An empty ref-counter that is more convenient than calling a constructor of rc_ptr<DataSource> (useful...
virtual bool allowsMemoryMapping() const =0
virtual bool open(int mode)=0
virtual int putch(int ch)=0
virtual long readBlock(char *data, unsigned long maxlen)=0
virtual int iterateMode() const =0
possible iteration mode(s): bitwise OR of IterateMode values
virtual void flush()
virtual bool isOpen() const =0
virtual offset_t size() const =0
virtual std::string url() const
unsigned long long offset_t
Offsets are 64 bits if supported.
Definition datasource.h:51