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< MultiFormatDataReader > SharedPointer
 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< DataReader > SharedPointer
 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_str, 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_str. 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_str)
 Constructs a reader for the input stream is using the format identified by the string fmt_str. 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
 
MultiFormatDataReader & operator= (const MultiFormatDataReader &)=delete
 
const Base::DataFormat & getDataFormat () const
 Returns the data format the wrapped reader was instantiated for. More...
 
MultiFormatDataReader & read (DataType &obj, bool overwrite=true)
 Reads the next data record into obj. More...
 
MultiFormatDataReader & read (std::size_t idx, DataType &obj, bool overwrite=true)
 Reads the data record at index idx into obj. More...
 
MultiFormatDataReader & skip ()
 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 Any & getParameter (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 an entry 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 of the ControlParameterContainer instance cntnr. More...
 
void copyParameters (const ControlParameterContainer &cntnr)
 Replaces the current control-parameter entries 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 ControlParameterContainer * getParent () 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 ControlParameterContainer & getParameters () const
 Returns a const reference to itself. More...
 

Additional Inherited Members

- Protected Member Functions inherited from CDPL::Base::DataReader< DataType >
DataReader & operator= (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...
 
DataIOBase & operator= (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 ()
 Virtual destructor. More...
 
ControlParameterContainer & operator= (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_str,
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_str.

Parameters
file_nameThe path of the input file.
fmt_strThe 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_str 
)

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

Parameters
isThe input stream providing the data.
fmt_strThe 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: