soma-io  5.1.2
formatreader.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_READER_FORMATREADER_H
35 #define SOMAIO_READER_FORMATREADER_H
36 //--- soma-io ----------------------------------------------------------------
38 //--- cartobase --------------------------------------------------------------
40 //--- system -----------------------------------------------------------------
41 #include <string>
42 //----------------------------------------------------------------------------
43 
44 namespace carto {
45  template<typename T> class rc_ptr;
46  class Object;
47 }
48 
49 namespace soma
50 {
51  class DataSource;
52  class DataSourceInfo;
53  class AllocatorContext;
54 
83  template<typename T>
85  {
86  public:
87  virtual ~FormatReader();
88 
89  //========================================================================
90  // N E W M E T H O D S
91  //========================================================================
93  virtual void setupAndRead( T & obj, carto::rc_ptr<DataSourceInfo> dsi,
94  const AllocatorContext & context,
95  carto::Object options );
96 
101  const AllocatorContext & context,
102  carto::Object options );
103 
113  virtual void read( T & obj,
115  const AllocatorContext & context,
116  carto::Object options );
117 
125  virtual FormatReader<T>* clone() const = 0;
126 
129  virtual std::string formatID() const = 0;
130 
138 
139  //========================================================================
140  // S T I L L U S E D
141  //========================================================================
146  virtual T* create( carto::Object header,
147  const AllocatorContext & context,
148  carto::Object options );
153  virtual void setup( T & obj, carto::Object header,
154  const AllocatorContext & context,
155  carto::Object options );
156 
157  };
158 
159  extern template class FormatReader<carto::GenericObject>;
160  extern template class FormatReader<carto::Object>;
161 }
162 
163 #endif
164 
Allocation context.
Definition: allocator.h:261
Low-level object IO reader specialized for a specific format.
Definition: formatreader.h:85
virtual T * create(carto::Object header, const AllocatorContext &context, carto::Object options)
create the object to be read, bind the allocation context.
virtual FormatReader< T > * clone() const =0
Duplicate the FormatReader.
virtual void setupAndRead(T &obj, carto::rc_ptr< DataSourceInfo > dsi, const AllocatorContext &context, carto::Object options)
Full reading procedure, for an already existing object.
virtual void setup(T &obj, carto::Object header, const AllocatorContext &context, carto::Object options)
setup an existing object (for resizing or reallocation for instance).
virtual T * createAndRead(carto::rc_ptr< DataSourceInfo > dsi, const AllocatorContext &context, carto::Object options)
Factory mode: creates an object and reads it.
virtual carto::rc_ptr< DataSourceInfo > checkDataSourceInfo(carto::rc_ptr< DataSourceInfo > dsi, carto::Object options)
Checks that dsi has been identified with the matching format checker.
virtual void read(T &obj, carto::rc_ptr< DataSourceInfo > dsi, const AllocatorContext &context, carto::Object options)
Reads part or all of the object obj.
virtual std::string formatID() const =0
Format identifier (abstract).
virtual ~FormatReader()
Definition: allocator.h:49