NuriKit v0.1.0b2
Loading...
Searching...
No Matches
nuri::MoleculeReaderFactory Class Referenceabstract

#include <nuri/fmt/base.h>

Inheritance diagram for nuri::MoleculeReaderFactory:

Public Member Functions

 MoleculeReaderFactory ()=default
 MoleculeReaderFactory (const MoleculeReaderFactory &)=default
MoleculeReaderFactoryoperator= (const MoleculeReaderFactory &)=default
 MoleculeReaderFactory (MoleculeReaderFactory &&) noexcept=default
MoleculeReaderFactoryoperator= (MoleculeReaderFactory &&) noexcept=default
virtual ~MoleculeReaderFactory () noexcept=default
virtual std::unique_ptr< MoleculeReaderfrom_stream (std::istream &is) const =0
 Create a new reader from the given istream object.
void register_for (std::string_view alias) const
 Register this factory for the given alias name.

Static Public Member Functions

static const MoleculeReaderFactoryfind_factory (std::string_view name)
 Find the factory for the given format name.
static bool register_factory (std::unique_ptr< MoleculeReaderFactory > factory, const std::vector< std::string > &names)
 Register the factory for the given format name(s).

Constructor & Destructor Documentation

◆ MoleculeReaderFactory() [1/3]

nuri::MoleculeReaderFactory::MoleculeReaderFactory ( )
default

◆ MoleculeReaderFactory() [2/3]

nuri::MoleculeReaderFactory::MoleculeReaderFactory ( const MoleculeReaderFactory & )
default

◆ MoleculeReaderFactory() [3/3]

nuri::MoleculeReaderFactory::MoleculeReaderFactory ( MoleculeReaderFactory && )
defaultnoexcept

◆ ~MoleculeReaderFactory()

virtual nuri::MoleculeReaderFactory::~MoleculeReaderFactory ( )
virtualdefaultnoexcept

Member Function Documentation

◆ find_factory()

const MoleculeReaderFactory * nuri::MoleculeReaderFactory::find_factory ( std::string_view name)
static

Find the factory for the given format name.

Parameters
nameThe name of the format to find the factory for.
Returns
A pointer to the factory instance for the given format name, or nullptr if no factory is registered for the given name.

◆ from_stream()

virtual std::unique_ptr< MoleculeReader > nuri::MoleculeReaderFactory::from_stream ( std::istream & is) const
pure virtual

Create a new reader from the given istream object.

Parameters
isThe input stream to read from.
Returns
A new reader instance.
Note
The istream must survive until the returned reader is destructed.

Implemented in nuri::DefaultReaderFactoryImpl< MoleculeReaderImpl >, nuri::DefaultReaderFactoryImpl< MmcifReader >, nuri::DefaultReaderFactoryImpl< Mol2Reader >, nuri::DefaultReaderFactoryImpl< PDBReader >, nuri::DefaultReaderFactoryImpl< SDFReader >, and nuri::DefaultReaderFactoryImpl< SmilesReader >.

◆ operator=() [1/2]

MoleculeReaderFactory & nuri::MoleculeReaderFactory::operator= ( const MoleculeReaderFactory & )
default

◆ operator=() [2/2]

MoleculeReaderFactory & nuri::MoleculeReaderFactory::operator= ( MoleculeReaderFactory && )
defaultnoexcept

◆ register_factory()

bool nuri::MoleculeReaderFactory::register_factory ( std::unique_ptr< MoleculeReaderFactory > factory,
const std::vector< std::string > & names )
static

Register the factory for the given format name(s).

Parameters
factoryThe factory instance to register.
namesThe name(s) of the format to register the factory for.
Returns
Always true.
See also
register_for()

This function is intended for user-defined factories. If you want to register library-provided factory for custom alias name, register_for() is the right function to use.

Note
This will always register the factory even if the names are empty. However, such registration is useless; the factory will never be found by find_factory().
This function is not thread-safe. Some synchronization mechanism must be used to call register_*() functions from multiple threads.

◆ register_for()

void nuri::MoleculeReaderFactory::register_for ( std::string_view alias) const
inline

Register this factory for the given alias name.

Parameters
aliasAn alias name to register the factory for.
See also
register_factory()

This function is intended for giving an alias name to library-provided factory. If you want to register user-defined factory, register_factory() is the right function to use.

Note
The instance of the factory must be existing until the end of the program. The easiest way to achieve this is using the returned factory instance from find_factory().
This function is not thread-safe. Some synchronization mechanism must be used to call register_*() functions from multiple threads.

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