![]() |
Chemical Data Processing Library C++ API - Version 1.4.0
|
Abstract base class for chemical reactions composed of role-tagged reaction components of type Chem::Molecule. More...
#include <Reaction.hpp>
Inheritance diagram for CDPL::Chem::Reaction:Public Types | |
| typedef std::shared_ptr< Reaction > | SharedPointer |
A reference-counted smart pointer [SHPTR] for dynamically allocated Reaction instances. More... | |
| typedef Util::IndexedElementIterator< const Molecule, ConstComponentAccessor > | ConstComponentIterator |
A constant random access iterator used to iterate over the stored const Chem::Molecule objects. More... | |
| typedef Util::IndexedElementIterator< Molecule, ComponentAccessor > | ComponentIterator |
| A mutable random access iterator used to iterate over the stored Chem::Molecule objects. More... | |
| typedef std::function< void(Reaction &, const Reaction &)> | CopyPostprocessingFunction |
| Type of a functor invoked after a reaction copy operation to postprocess the target reaction (first argument) using information from the source reaction (second argument). More... | |
Public Types inherited from CDPL::Base::PropertyContainer | |
| typedef PropertyMap::value_type | PropertyEntry |
| A Base::LookupKey / Base::Any pair that stores the property value for a given property key. More... | |
| typedef PropertyMap::const_iterator | ConstPropertyIterator |
| A constant iterator used to iterate over the property entries. More... | |
Public Member Functions | |
| virtual | ~Reaction () |
| Virtual destructor. More... | |
| virtual void | clear ()=0 |
| Removes all components and clears all properties of the reaction. More... | |
| virtual std::size_t | getNumComponents () const =0 |
| Returns the total number of reaction components. More... | |
| virtual std::size_t | getNumComponents (unsigned int role) const =0 |
| Returns the number of reaction components with the specified role. More... | |
| virtual unsigned int | getComponentRole (const Molecule &mol) const =0 |
| Returns the reaction role of the specified component. More... | |
| virtual std::size_t | getComponentIndex (const Molecule &mol) const =0 |
| Returns the index of the specified reaction component. More... | |
| virtual bool | containsComponent (const Molecule &mol) const =0 |
| Tells whether the specified molecule is a component of this reaction. More... | |
| ConstComponentIterator | getComponentsBegin () const |
| Returns a constant iterator pointing to the beginning of the reaction components. More... | |
| ComponentIterator | getComponentsBegin () |
| Returns a mutable iterator pointing to the beginning of the reaction components. More... | |
| ConstComponentIterator | getComponentsEnd () const |
| Returns a constant iterator pointing to the end of the reaction components. More... | |
| ComponentIterator | getComponentsEnd () |
| Returns a mutable iterator pointing to the end of the reaction components. More... | |
| ConstComponentIterator | begin () const |
| Returns a constant iterator pointing to the beginning of the reaction components. More... | |
| ComponentIterator | begin () |
| Returns a mutable iterator pointing to the beginning of the reaction components. More... | |
| ConstComponentIterator | end () const |
| Returns a constant iterator pointing to the end of the reaction components. More... | |
| ComponentIterator | end () |
| Returns a mutable iterator pointing to the end of the reaction components. More... | |
| ConstComponentIterator | getComponentsBegin (unsigned int role) const |
| Returns a constant iterator pointing to the beginning of the reaction components with the specified role. More... | |
| ComponentIterator | getComponentsBegin (unsigned int role) |
| Returns a mutable iterator pointing to the beginning of the reaction components with the specified role. More... | |
| ConstComponentIterator | getComponentsEnd (unsigned int role) const |
| Returns a constant iterator pointing to the end of the reaction components with the specified role. More... | |
| ComponentIterator | getComponentsEnd (unsigned int role) |
| Returns a mutable iterator pointing to the end of the reaction components with the specified role. More... | |
| virtual const Molecule & | getComponent (std::size_t idx) const =0 |
Returns a const reference to the reaction component at index idx. More... | |
| virtual Molecule & | getComponent (std::size_t idx)=0 |
Returns a non-const reference to the reaction component at index idx. More... | |
| virtual const Molecule & | getComponent (std::size_t idx, unsigned int role) const =0 |
Returns a const reference to the reaction component at index idx in the list of components with the specified role. More... | |
| virtual Molecule & | getComponent (std::size_t idx, unsigned int role)=0 |
Returns a non-const reference to the reaction component at index idx in the list of components with the specified role. More... | |
| virtual Molecule & | addComponent (unsigned int role)=0 |
| Creates a new reaction component with the specified role. More... | |
| virtual void | swapComponentRoles (unsigned int role1, unsigned int role2)=0 |
| Swaps the reaction roles of the component sets specified by role1 and role2. More... | |
| virtual void | removeComponent (std::size_t idx)=0 |
| Removes the reaction component at the specified index. More... | |
| virtual void | removeComponent (std::size_t idx, unsigned int role)=0 |
| Removes the reaction component at index idx in the list of components with the specified role. More... | |
| ComponentIterator | removeComponent (const ComponentIterator &it) |
| Removes the reaction component specified by the iterator it. More... | |
| virtual void | removeComponents (unsigned int role)=0 |
| Removes all components with the specified role. More... | |
| virtual SharedPointer | clone () const =0 |
| Creates a deep copy of the current reaction state. More... | |
| virtual void | copy (const Reaction &rxn)=0 |
| Replaces the current set of reaction components and properties by a copy of the components and properties of the reaction rxn. More... | |
| Reaction & | operator= (const Reaction &rxn) |
| Replaces the current set of reaction components and properties by a copy of the components and properties of the reaction rxn. More... | |
Public Member Functions inherited from CDPL::Base::PropertyContainer | |
| std::size_t | getNumProperties () const |
| Returns the number of property entries. More... | |
| template<typename T > | |
| void | setProperty (const LookupKey &key, T &&val) |
| Sets the value of the property specified by key to val. More... | |
| template<typename T > | |
| const T & | getProperty (const LookupKey &key) const |
Returns the value of the property specified by key as a const reference to an object of type T. More... | |
| template<typename T > | |
| const T & | getPropertyOrDefault (const LookupKey &key, const T &def_val) const |
Returns the value of the property 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... | |
| const Any & | getProperty (const LookupKey &key, bool throw_=false) const |
| Returns the value of the property specified by key. More... | |
| bool | isPropertySet (const LookupKey &key) const |
| Tells whether or not a value has been assigned to the property specified by key. More... | |
| ConstPropertyIterator | getPropertiesBegin () const |
| Returns a constant iterator pointing to the beginning of the property entries. More... | |
| ConstPropertyIterator | getPropertiesEnd () const |
| Returns a constant iterator pointing to the end of the property entries. More... | |
| ConstPropertyIterator | begin () const |
| Returns a constant iterator pointing to the beginning of the property entries. More... | |
| ConstPropertyIterator | end () const |
| Returns a constant iterator pointing to the end of the property entries. More... | |
| bool | removeProperty (const LookupKey &key) |
| Clears the value of the property specified by key. More... | |
| void | clearProperties () |
| Clears all property values. More... | |
| void | addProperties (const PropertyContainer &cntnr) |
Adds the property value entries in the PropertyContainer instance cntnr. More... | |
| void | copyProperties (const PropertyContainer &cntnr) |
| Replaces the current set of properties by a copy of the entries in cntnr. More... | |
| void | swap (PropertyContainer &cntnr) |
| Exchanges the properties of this container with the properties of the container cntnr. More... | |
| const PropertyContainer & | getProperties () const |
Returns a const reference to itself. More... | |
Static Public Member Functions | |
| static void | registerCopyPostprocessingFunction (const CopyPostprocessingFunction &func) |
| Registers a global postprocessing function invoked after every reaction copy operation. More... | |
Protected Member Functions | |
| void | invokeCopyPostprocessingFunctions (const Reaction &src_rxn) |
Invokes all registered copy postprocessing functions with *this as the target and src_rxn as the source reaction. More... | |
Protected Member Functions inherited from CDPL::Base::PropertyContainer | |
| PropertyContainer () | |
Constructs an empty PropertyContainer instance. More... | |
| PropertyContainer (const PropertyContainer &cntnr) | |
Constructs a copy of the PropertyContainer instance cntnr. More... | |
| virtual | ~PropertyContainer () |
| Virtual destructor. More... | |
| PropertyContainer & | operator= (const PropertyContainer &cntnr) |
| Assignment operator. More... | |
Abstract base class for chemical reactions composed of role-tagged reaction components of type Chem::Molecule.
Each component carries a reaction role that is specified by one of the constants declared in namespace Chem::ReactionRole. Reaction roles divide the components into three different subsets: reactants, agents/catalysts and products. For component management/access the methods getComponentRole(), getNumComponents(), getComponent(), getComponentsBegin() and getComponentsEnd() are available. For reaction editing the methods addComponent(), removeComponent(), swapComponentRoles() and clear(). The method clone() allows the creation of polymorphic deep copies and reaction properties can be stored/retrieved via the methods of the Base::PropertyContainer base class.
| typedef std::shared_ptr<Reaction> CDPL::Chem::Reaction::SharedPointer |
A reference-counted smart pointer [SHPTR] for dynamically allocated Reaction instances.
| typedef Util::IndexedElementIterator<const Molecule, ConstComponentAccessor> CDPL::Chem::Reaction::ConstComponentIterator |
A constant random access iterator used to iterate over the stored const Chem::Molecule objects.
| typedef Util::IndexedElementIterator<Molecule, ComponentAccessor> CDPL::Chem::Reaction::ComponentIterator |
A mutable random access iterator used to iterate over the stored Chem::Molecule objects.
| typedef std::function<void(Reaction&, const Reaction&)> CDPL::Chem::Reaction::CopyPostprocessingFunction |
Type of a functor invoked after a reaction copy operation to postprocess the target reaction (first argument) using information from the source reaction (second argument).
Functions registered with registerCopyPostprocessingFunction() are run by invokeCopyPostprocessingFunctions() inside subclasses' copy() implementations.
|
inlinevirtual |
Virtual destructor.
|
pure virtual |
Removes all components and clears all properties of the reaction.
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Returns the total number of reaction components.
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Returns the number of reaction components with the specified role.
| role | The reaction role (see namespace Chem::ReactionRole). |
| Base::ValueError | if the value of role is not equal to Chem::ReactionRole::REACTANT, Chem::ReactionRole::AGENT or Chem::ReactionRole::PRODUCT. |
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Returns the reaction role of the specified component.
If the specified molecule is not a component of this reaction, Chem::ReactionRole::NONE will be returned.
| mol | The component for which to return the reaction role. |
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Returns the index of the specified reaction component.
| mol | The component for which to return the index. |
| Base::ItemNotFound | if the specified molecule is not a component of this reaction. |
Implemented in CDPL::Chem::BasicReaction.
Tells whether the specified molecule is a component of this reaction.
| mol | The molecule to look for. |
true if the specified molecule is a component of this reaction, and false otherwise. Implemented in CDPL::Chem::BasicReaction.
| ConstComponentIterator CDPL::Chem::Reaction::getComponentsBegin | ( | ) | const |
Returns a constant iterator pointing to the beginning of the reaction components.
| ComponentIterator CDPL::Chem::Reaction::getComponentsBegin | ( | ) |
Returns a mutable iterator pointing to the beginning of the reaction components.
| ConstComponentIterator CDPL::Chem::Reaction::getComponentsEnd | ( | ) | const |
Returns a constant iterator pointing to the end of the reaction components.
| ComponentIterator CDPL::Chem::Reaction::getComponentsEnd | ( | ) |
Returns a mutable iterator pointing to the end of the reaction components.
| ConstComponentIterator CDPL::Chem::Reaction::begin | ( | ) | const |
Returns a constant iterator pointing to the beginning of the reaction components.
| ComponentIterator CDPL::Chem::Reaction::begin | ( | ) |
Returns a mutable iterator pointing to the beginning of the reaction components.
| ConstComponentIterator CDPL::Chem::Reaction::end | ( | ) | const |
Returns a constant iterator pointing to the end of the reaction components.
| ComponentIterator CDPL::Chem::Reaction::end | ( | ) |
Returns a mutable iterator pointing to the end of the reaction components.
| ConstComponentIterator CDPL::Chem::Reaction::getComponentsBegin | ( | unsigned int | role | ) | const |
Returns a constant iterator pointing to the beginning of the reaction components with the specified role.
| role | The reaction role (see namespace Chem::ReactionRole). |
| Base::ValueError | if the value of role is not equal to Chem::ReactionRole::REACTANT, Chem::ReactionRole::AGENT or Chem::ReactionRole::PRODUCT. |
| ComponentIterator CDPL::Chem::Reaction::getComponentsBegin | ( | unsigned int | role | ) |
Returns a mutable iterator pointing to the beginning of the reaction components with the specified role.
| role | The reaction role (see namespace Chem::ReactionRole). |
| Base::ValueError | if the value of role is not equal to Chem::ReactionRole::REACTANT, Chem::ReactionRole::AGENT or Chem::ReactionRole::PRODUCT. |
| ConstComponentIterator CDPL::Chem::Reaction::getComponentsEnd | ( | unsigned int | role | ) | const |
Returns a constant iterator pointing to the end of the reaction components with the specified role.
| role | The reaction role (see namespace Chem::ReactionRole). |
| Base::ValueError | if the value of role is not equal to Chem::ReactionRole::REACTANT, Chem::ReactionRole::AGENT or Chem::ReactionRole::PRODUCT. |
| ComponentIterator CDPL::Chem::Reaction::getComponentsEnd | ( | unsigned int | role | ) |
Returns a mutable iterator pointing to the end of the reaction components with the specified role.
| role | The reaction role (see namespace Chem::ReactionRole). |
| Base::ValueError | if the value of role is not equal to Chem::ReactionRole::REACTANT, Chem::ReactionRole::AGENT or Chem::ReactionRole::PRODUCT. |
|
pure virtual |
Returns a const reference to the reaction component at index idx.
| idx | The zero-based index of the reaction component to return. |
const reference to the reaction component at the specified index. | Base::IndexError | if idx is not in the range [0, getNumComponents()). |
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Returns a non-const reference to the reaction component at index idx.
| idx | The zero-based index of the reaction component to return. |
const reference to the reaction component at the specified index. | Base::IndexError | if idx is not in the range [0, getNumComponents()). |
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Returns a const reference to the reaction component at index idx in the list of components with the specified role.
| idx | The zero-based index of the reaction component to return. |
| role | A flag indicating the reaction role of the component (see namespace Chem::ReactionRole). |
const reference to the reaction component with the specified role and index. | Base::IndexError | if idx is not in the range [0, getNumComponents(role)). Base::ValueError if the value of role is not equal to Chem::ReactionRole::REACTANT, Chem::ReactionRole::AGENT or Chem::ReactionRole::PRODUCT. |
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Returns a non-const reference to the reaction component at index idx in the list of components with the specified role.
| idx | The zero-based index of the reaction component to return. |
| role | A flag indicating the reaction role of the component (see namespace Chem::ReactionRole). |
const reference to the reaction component with the specified role and index. | Base::IndexError | if idx is not in the range [0, getNumComponents(role)). Base::ValueError if the value of role is not equal to Chem::ReactionRole::REACTANT, Chem::ReactionRole::AGENT or Chem::ReactionRole::PRODUCT. |
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Creates a new reaction component with the specified role.
| role | The reaction role of the new component (see namespace Chem::ReactionRole). |
| Base::ValueError | if the value of role is not Chem::ReactionRole::REACTANT, Chem::ReactionRole::AGENT or Chem::ReactionRole::PRODUCT. |
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Swaps the reaction roles of the component sets specified by role1 and role2.
If role1 is equal to role2, the method has no effect.
| role1 | The reaction role of the first component set (see namespace Chem::ReactionRole). |
| role2 | The reaction role of the second component set (see namespace Chem::ReactionRole). |
| Base::ValueError | if the value of role1 and/or role2 is not equal to Chem::ReactionRole::REACTANT, Chem::ReactionRole::AGENT or Chem::ReactionRole::PRODUCT. |
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Removes the reaction component at the specified index.
| idx | The zero-based index of the component to remove. |
| Base::IndexError | if idx is not in the range [0, getNumComponents()). |
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Removes the reaction component at index idx in the list of components with the specified role.
| idx | The zero-based index of the component to remove. |
| role | The reaction role of the component (see namespace Chem::ReactionRole). |
| Base::IndexError | if idx is not in the range [0, getNumComponents(role)). Base::ValueError if the value of role is not Chem::ReactionRole::REACTANT, Chem::ReactionRole::AGENT or Chem::ReactionRole::PRODUCT. |
Implemented in CDPL::Chem::BasicReaction.
| ComponentIterator CDPL::Chem::Reaction::removeComponent | ( | const ComponentIterator & | it | ) |
Removes the reaction component specified by the iterator it.
| it | A mutable iterator that specifies the component to remove. |
| Base::RangeError | if it is not in the range [getComponentsBegin(), getComponentsEnd()). |
|
pure virtual |
Removes all components with the specified role.
| role | The reaction role of the components to remove (see namespace Chem::ReactionRole). |
| Base::ValueError | if the value of role is not Chem::ReactionRole::REACTANT, Chem::ReactionRole::AGENT or Chem::ReactionRole::PRODUCT. |
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Creates a deep copy of the current reaction state.
Implemented in CDPL::Chem::BasicReaction.
|
pure virtual |
Replaces the current set of reaction components and properties by a copy of the components and properties of the reaction rxn.
| rxn | The reaction to copy. |
Implemented in CDPL::Chem::BasicReaction.
Replaces the current set of reaction components and properties by a copy of the components and properties of the reaction rxn.
Internally calls copy() to perform the actual work.
| rxn | The reaction to copy. |
|
static |
Registers a global postprocessing function invoked after every reaction copy operation.
| func | The function to register. |
|
protected |
Invokes all registered copy postprocessing functions with *this as the target and src_rxn as the source reaction.
| src_rxn | The source reaction the copy was made from. |