Chemical Data Processing Library C++ API - Version 1.4.0
Public Types | Public Member Functions | List of all members
CDPL::Util::MultiFormatDataReader< DataType > Class Template Reference

Reader that auto-dispatches to a format-specific reader registered with Base::DataIOManager. More...

#include <MultiFormatDataReader.hpp>

+ Inheritance diagram for CDPL::Util::MultiFormatDataReader< DataType >:

Public Types

typedef std::shared_ptr< MultiFormatDataReaderSharedPointer
 A reference-counted smart pointer [SHPTR] for dynamically allocated MultiFormatDataReader instances. More...
 
- Public Types inherited from CDPL::Base::DataReader< DataType >
typedef DataType DataType
 The type of the read data objects. More...
 
typedef std::shared_ptr< DataReaderSharedPointer
 A reference-counted smart pointer [SHPTR] for dynamically allocated DataReader instances. More...
 
- Public Types inherited from CDPL::Base::DataIOBase
typedef std::function< void(const DataIOBase &, double)> IOCallbackFunction
 A functor class used to wrap I/O callback target functions. More...
 
- Public Types inherited from CDPL::Base::ControlParameterContainer
typedef ParameterMap::value_type ParameterEntry
 A Base::LookupKey / Base::Any pair used to store the control-parameter values and associated keys. More...
 
typedef ParameterMap::const_iterator ConstParameterIterator
 A constant iterator used to iterate over the control-parameter entries. More...
 
typedef std::function< void(const LookupKey &, const Any &)> ParameterChangedCallbackFunction
 A functor class that wraps callback target functions which get invoked when the value of a control-parameter has changed. More...
 
typedef std::function< void(const LookupKey &)> ParameterRemovedCallbackFunction
 A functor class that wraps callback target functions which get invoked when a control-parameter entry has been removed. More...
 
typedef std::function< void()> ParentChangedCallbackFunction
 A functor class that wraps callback target functions which get invoked when the parent container has been changed or was detached. More...
 

Public Member Functions

 MultiFormatDataReader (const std::string &file_name, std::ios_base::openmode mode=std::ios_base::in|std::ios_base::binary)
 Constructs a reader for the file file_name with format detected from its extension. More...
 
 MultiFormatDataReader (const std::string &file_name, const std::string &fmt, std::ios_base::openmode mode=std::ios_base::in|std::ios_base::binary)
 Constructs a reader for the file file_name using the format identified by the string fmt. More...
 
 MultiFormatDataReader (const std::string &file_name, const Base::DataFormat &fmt, std::ios_base::openmode mode=std::ios_base::in|std::ios_base::binary)
 Constructs a reader for the file file_name using the format described by fmt. More...
 
 MultiFormatDataReader (std::istream &is, const std::string &fmt)
 Constructs a reader for the input stream is using the format identified by the string fmt. More...
 
 MultiFormatDataReader (std::istream &is, const Base::DataFormat &fmt)
 Constructs a reader for the input stream is using the format described by fmt. More...
 
 MultiFormatDataReader (const MultiFormatDataReader &)=delete
 
MultiFormatDataReaderoperator= (const MultiFormatDataReader &)=delete
 
const Base::DataFormatgetDataFormat () const
 Returns the data format the wrapped reader was instantiated for. More...
 
MultiFormatDataReaderread (DataType &obj, bool overwrite=true)
 Reads the next data record into obj. More...
 
MultiFormatDataReaderread (std::size_t idx, DataType &obj, bool overwrite=true)
 Reads the data record at index idx into obj. More...
 
MultiFormatDataReaderskip ()
 Skips the next data record. More...
 
bool hasMoreData ()
 Tells whether more records are available. More...
 
std::size_t getRecordIndex () const
 Returns the index of the current data record. More...
 
void setRecordIndex (std::size_t idx)
 Sets the index of the next data record to be read. More...
 
std::size_t getNumRecords ()
 Returns the total number of records in the input source. More...
 
 operator const void * () const
 Returns a non-zero value if the reader is in a good state, and zero otherwise. More...
 
bool operator! () const
 Tells whether the reader is in a bad state. More...
 
void close ()
 Closes the underlying reader. More...
 
- Public Member Functions inherited from CDPL::Base::DataIOBase
std::size_t registerIOCallback (const IOCallbackFunction &func)
 Registers an I/O callback target function. More...
 
void unregisterIOCallback (std::size_t id)
 Unregisters the I/O callback function specified by id. More...
 
void invokeIOCallbacks (double progress) const
 Invokes all registered I/O callback functions with the argument *this. More...
 
void clearIOCallbacks ()
 Clears all registered I/O callback functions. More...
 
- Public Member Functions inherited from CDPL::Base::ControlParameterContainer
std::size_t getNumParameters () const
 Returns the number of container entries. More...
 
template<typename T >
void setParameter (const LookupKey &key, T &&val)
 Sets the value of the control-parameter specified by key to val. More...
 
const AnygetParameter (const LookupKey &key, bool throw_=false, bool local=false) const
 Returns the value of the control-parameter specified by key. More...
 
template<typename T >
const T & getParameter (const LookupKey &key, bool local=false) const
 Returns the value of the control-parameter specified by key as a const reference to an object of type T. More...
 
template<typename T >
const T & getParameterOrDefault (const LookupKey &key, const T &def_val, bool local=false) const
 Returns the value of the control-parameter specified by key as a const reference to an object of type T, or the default value def_val if a stored value does not exist. More...
 
bool removeParameter (const LookupKey &key)
 Removes the entry for the control-parameter specified by key. More...
 
void clearParameters ()
 Erases all container entries. More...
 
bool isParameterSet (const LookupKey &key, bool local=false) const
 Tells whether or not a value has been assigned to the control-parameter specified by key. More...
 
void addParameters (const ControlParameterContainer &cntnr)
 Adds the control-parameter value entries in the ControlParameterContainer instance cntnr. More...
 
void copyParameters (const ControlParameterContainer &cntnr)
 Replaces the current set of properties by a copy of the entries in cntnr. More...
 
ConstParameterIterator getParametersBegin () const
 Returns a constant iterator pointing to the beginning of the entries. More...
 
ConstParameterIterator getParametersEnd () const
 Returns a constant iterator pointing to the end of the entries. More...
 
ConstParameterIterator begin () const
 Returns a constant iterator pointing to the beginning of the entries. More...
 
ConstParameterIterator end () const
 Returns a constant iterator pointing to the end of the entries. More...
 
void setParent (const ControlParameterContainer *cntnr)
 Sets or removes the parent control-parameter container used to resolve requests for missing entries. More...
 
const ControlParameterContainergetParent () const
 Returns a pointer to the parent control-parameter container. More...
 
std::size_t registerParameterChangedCallback (const ParameterChangedCallbackFunction &func)
 Registers a callback target function that gets invoked when the value of a control-parameter has changed. More...
 
void unregisterParameterChangedCallback (std::size_t id)
 Unregisters the callback specified by id. More...
 
std::size_t registerParameterRemovedCallback (const ParameterRemovedCallbackFunction &func)
 Registers a callback target function that gets invoked when a control-parameter entry has been removed. More...
 
void unregisterParameterRemovedCallback (std::size_t id)
 Unregisters the callback specified by id. More...
 
std::size_t registerParentChangedCallback (const ParentChangedCallbackFunction &func)
 Registers a callback target function that gets invoked when the parent container has been changed or was detached. More...
 
void unregisterParentChangedCallback (std::size_t id)
 Unregisters the callback specified by id. More...
 
const ControlParameterContainergetParameters () const
 Returns a const reference to itself. More...
 

Additional Inherited Members

- Protected Member Functions inherited from CDPL::Base::DataReader< DataType >
DataReaderoperator= (const DataReader &reader)
 Assignment operator. More...
 
- Protected Member Functions inherited from CDPL::Base::DataIOBase
 DataIOBase ()
 Default constructor. More...
 
 DataIOBase (const DataIOBase &io_base)
 Copy constructor. More...
 
 ~DataIOBase ()
 Destructor. More...
 
DataIOBaseoperator= (const DataIOBase &io_base)
 Assignment operator. More...
 
- Protected Member Functions inherited from CDPL::Base::ControlParameterContainer
 ControlParameterContainer ()
 Constructs an empty ControlParameterContainer instance. More...
 
 ControlParameterContainer (const ControlParameterContainer &cntnr)
 Constructs a copy of the ControlParameterContainer instance cntnr. More...
 
virtual ~ControlParameterContainer ()
 Destructor. More...
 
ControlParameterContaineroperator= (const ControlParameterContainer &cntnr)
 Assignment operator. More...
 

Detailed Description

template<typename DataType>
class CDPL::Util::MultiFormatDataReader< DataType >

Reader that auto-dispatches to a format-specific reader registered with Base::DataIOManager.

The format is detected from the file extension or explicitly provided as a string or Base::DataFormat. The reader exposes the standard Base::DataReader interface and forwards all operations to the underlying format-specific reader instance.

Template Parameters
DataTypeThe data record type produced by the reader.

Member Typedef Documentation

◆ SharedPointer

template<typename DataType >
typedef std::shared_ptr<MultiFormatDataReader> CDPL::Util::MultiFormatDataReader< DataType >::SharedPointer

A reference-counted smart pointer [SHPTR] for dynamically allocated MultiFormatDataReader instances.

Constructor & Destructor Documentation

◆ MultiFormatDataReader() [1/6]

template<typename DataType >
CDPL::Util::MultiFormatDataReader< DataType >::MultiFormatDataReader ( const std::string &  file_name,
std::ios_base::openmode  mode = std::ios_base::in | std::ios_base::binary 
)

Constructs a reader for the file file_name with format detected from its extension.

Parameters
file_nameThe path of the input file.
modeThe flags specifying the file open mode.
Exceptions
Base::IOErrorif no input handler for the file extension is registered.

◆ MultiFormatDataReader() [2/6]

template<typename DataType >
CDPL::Util::MultiFormatDataReader< DataType >::MultiFormatDataReader ( const std::string &  file_name,
const std::string &  fmt,
std::ios_base::openmode  mode = std::ios_base::in | std::ios_base::binary 
)

Constructs a reader for the file file_name using the format identified by the string fmt.

Parameters
file_nameThe path of the input file.
fmtThe format identifier (e.g. the file extension associated with the format).
modeThe flags specifying the file open mode.
Exceptions
Base::IOErrorif no input handler for fmt is registered.

◆ MultiFormatDataReader() [3/6]

template<typename DataType >
CDPL::Util::MultiFormatDataReader< DataType >::MultiFormatDataReader ( const std::string &  file_name,
const Base::DataFormat fmt,
std::ios_base::openmode  mode = std::ios_base::in | std::ios_base::binary 
)

Constructs a reader for the file file_name using the format described by fmt.

Parameters
file_nameThe path of the input file.
fmtThe Base::DataFormat instance describing the format.
modeThe flags specifying the file open mode.
Exceptions
Base::IOErrorif no input handler for fmt is registered.

◆ MultiFormatDataReader() [4/6]

template<typename DataType >
CDPL::Util::MultiFormatDataReader< DataType >::MultiFormatDataReader ( std::istream &  is,
const std::string &  fmt 
)

Constructs a reader for the input stream is using the format identified by the string fmt.

Parameters
isThe input stream providing the data.
fmtThe format identifier (e.g. the file extension associated with the format).
Exceptions
Base::IOErrorif no input handler for fmt is registered.

◆ MultiFormatDataReader() [5/6]

template<typename DataType >
CDPL::Util::MultiFormatDataReader< DataType >::MultiFormatDataReader ( std::istream &  is,
const Base::DataFormat fmt 
)

Constructs a reader for the input stream is using the format described by fmt.

Parameters
isThe input stream providing the data.
fmtThe Base::DataFormat instance describing the format.
Exceptions
Base::IOErrorif no input handler for fmt is registered.

◆ MultiFormatDataReader() [6/6]

template<typename DataType >
CDPL::Util::MultiFormatDataReader< DataType >::MultiFormatDataReader ( const MultiFormatDataReader< DataType > &  )
delete

Member Function Documentation

◆ operator=()

template<typename DataType >
MultiFormatDataReader& CDPL::Util::MultiFormatDataReader< DataType >::operator= ( const MultiFormatDataReader< DataType > &  )
delete

◆ getDataFormat()

template<typename DataType >
const CDPL::Base::DataFormat & CDPL::Util::MultiFormatDataReader< DataType >::getDataFormat

Returns the data format the wrapped reader was instantiated for.

Returns
The data format.

◆ read() [1/2]

template<typename DataType >
CDPL::Util::MultiFormatDataReader< DataType > & CDPL::Util::MultiFormatDataReader< DataType >::read ( DataType obj,
bool  overwrite = true 
)
virtual

Reads the next data record into obj.

Parameters
objThe output data object.
overwriteIf true, any pre-existing content of obj is replaced; otherwise the new data is merged.
Returns
A reference to itself.

Implements CDPL::Base::DataReader< DataType >.

◆ read() [2/2]

template<typename DataType >
CDPL::Util::MultiFormatDataReader< DataType > & CDPL::Util::MultiFormatDataReader< DataType >::read ( std::size_t  idx,
DataType obj,
bool  overwrite = true 
)
virtual

Reads the data record at index idx into obj.

Parameters
idxThe zero-based index of the record to read.
objThe output data object.
overwriteIf true, any pre-existing content of obj is replaced; otherwise the new data is merged.
Returns
A reference to itself.

Implements CDPL::Base::DataReader< DataType >.

◆ skip()

template<typename DataType >
CDPL::Util::MultiFormatDataReader< DataType > & CDPL::Util::MultiFormatDataReader< DataType >::skip
virtual

Skips the next data record.

Returns
A reference to itself.

Implements CDPL::Base::DataReader< DataType >.

◆ hasMoreData()

template<typename DataType >
bool CDPL::Util::MultiFormatDataReader< DataType >::hasMoreData
virtual

Tells whether more records are available.

Returns
true if more records are available, and false otherwise.

Implements CDPL::Base::DataReader< DataType >.

◆ getRecordIndex()

template<typename DataType >
std::size_t CDPL::Util::MultiFormatDataReader< DataType >::getRecordIndex
virtual

Returns the index of the current data record.

Returns
The zero-based index of the current record.

Implements CDPL::Base::DataReader< DataType >.

◆ setRecordIndex()

template<typename DataType >
void CDPL::Util::MultiFormatDataReader< DataType >::setRecordIndex ( std::size_t  idx)
virtual

Sets the index of the next data record to be read.

Parameters
idxThe zero-based record index.

Implements CDPL::Base::DataReader< DataType >.

◆ getNumRecords()

template<typename DataType >
std::size_t CDPL::Util::MultiFormatDataReader< DataType >::getNumRecords
virtual

Returns the total number of records in the input source.

Returns
The number of records.

Implements CDPL::Base::DataReader< DataType >.

◆ operator const void *()

template<typename DataType >
CDPL::Util::MultiFormatDataReader< DataType >::operator const void *
virtual

Returns a non-zero value if the reader is in a good state, and zero otherwise.

Returns
A non-zero value if the reader is operational, zero otherwise.

Implements CDPL::Base::DataReader< DataType >.

◆ operator!()

template<typename DataType >
bool CDPL::Util::MultiFormatDataReader< DataType >::operator!
virtual

Tells whether the reader is in a bad state.

Returns
true if the reader is in a bad state, and false otherwise.

Implements CDPL::Base::DataReader< DataType >.

◆ close()

template<typename DataType >
void CDPL::Util::MultiFormatDataReader< DataType >::close
virtual

Closes the underlying reader.

Reimplemented from CDPL::Base::DataReader< DataType >.


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