29 #ifndef CDPL_UTIL_MULTIFORMATDATAREADER_HPP
30 #define CDPL_UTIL_MULTIFORMATDATAREADER_HPP
55 template <
typename DataType>
72 std::ios_base::openmode mode = std::ios_base::in | std::ios_base::binary);
82 std::ios_base::openmode mode = std::ios_base::in | std::ios_base::binary);
92 std::ios_base::openmode mode = std::ios_base::in | std::ios_base::binary);
171 operator const void*()
const;
198 template <
typename DataType>
204 throw Base::IOError(
"MultiFormatDataReader: could not deduce data format of '" + file_name +
"'");
206 readerPtr = handler->createReader(file_name, mode);
207 dataFormat = handler->getDataFormat();
212 template <
typename DataType>
214 std::ios_base::openmode mode)
219 throw Base::IOError(
"MultiFormatDataReader: could not find handler for format '" + fmt +
"'");
221 readerPtr = handler->createReader(file_name, mode);
222 dataFormat = handler->getDataFormat();
227 template <
typename DataType>
229 std::ios_base::openmode mode):
235 throw Base::IOError(
"MultiFormatDataReader: could not find handler for format '" + fmt.
getName() +
"'");
237 readerPtr = handler->createReader(file_name, mode);
242 template <
typename DataType>
248 throw Base::IOError(
"MultiFormatDataReader: could not find handler for format '" + fmt +
"'");
250 readerPtr = handler->createReader(is);
251 dataFormat = handler->getDataFormat();
256 template <
typename DataType>
263 throw Base::IOError(
"MultiFormatDataReader: could not find handler for format '" + fmt.
getName() +
"'");
265 readerPtr = handler->createReader(is);
270 template <
typename DataType>
276 template <
typename DataType>
280 readerPtr->
read(obj, overwrite);
284 template <
typename DataType>
288 readerPtr->
read(idx, obj, overwrite);
292 template <
typename DataType>
300 template <
typename DataType>
303 return readerPtr->hasMoreData();
306 template <
typename DataType>
309 return readerPtr->getRecordIndex();
312 template <
typename DataType>
315 readerPtr->setRecordIndex(idx);
318 template <
typename DataType>
321 return readerPtr->getNumRecords();
324 template <
typename DataType>
327 return readerPtr->operator
const void*();
330 template <
typename DataType>
333 return readerPtr->operator!();
336 template <
typename DataType>
342 template <
typename DataType>
Definition of exception classes.
Definition of class CDPL::Base::DataIOManager.
void setParent(const ControlParameterContainer *cntnr)
Sets or removes the parent control-parameter container used to resolve requests for missing entries.
void invokeIOCallbacks(double progress) const
Invokes all registered I/O callback functions with the argument *this.
Singleton class that serves as a global registry for Base::DataInputHandler and Base::DataOutputHandl...
Definition: DataIOManager.hpp:110
static InputHandlerPointer getInputHandlerByFormat(const DataFormat &fmt)
Returns a pointer to a Base::DataInputHandler implementation instance registered for the specified da...
Definition: DataIOManager.hpp:588
static InputHandlerPointer getInputHandlerByFileExtension(const std::string &file_ext)
Returns a pointer to a Base::DataInputHandler implementation instance registered for the data format ...
Definition: DataIOManager.hpp:599
Interface for reading data objects of a given type from an arbitrary data source.
Definition: DataReader.hpp:73
std::shared_ptr< DataReader > SharedPointer
A reference-counted smart pointer [SHPTR] for dynamically allocated DataReader instances.
Definition: DataReader.hpp:84
DataType DataType
The type of the read data objects.
Definition: DataReader.hpp:79
Thrown to indicate that an I/O operation has failed because of physical (e.g. broken pipe) or logical...
Definition: Base/Exceptions.hpp:250
The namespace of the Chemical Data Processing Library.