Loading...
Searching...
No Matches
OBBase Class Reference

`#include <openbabel/base.h>`

Inheritance diagram for OBBase:
[legend]

## Public Member Functions

virtual | ~OBBase ()
virtual bool | Clear ()
virtual OBBase * | DoTransformations (const std::map< std::string, std::string > *, OBConversion *)
template<class T>
T * | CastAndClear (bool clear=true)
virtual const char * | GetTitle (bool replaceNewlines=true) const
virtual void | SetTitle (const char *)

## Static Public Member Functions

static const char * | ClassDescription ()

## Generic data handling methods (via OBGenericData)

std::vector< OBGenericData * > | _vdata
bool | HasData (const std::string &)
bool | HasData (const char *)
bool | HasData (const unsigned int type)
void | DeleteData (unsigned int type)
void | DeleteData (OBGenericData *)
void | DeleteData (std::vector< OBGenericData * > &)
bool | DeleteData (const std::string &s)
void | SetData (OBGenericData *d)
void | CloneData (OBGenericData *d)
size_t | DataSize () const
OBGenericData * | GetData (const unsigned int type)
OBGenericData * | GetData (const std::string &)
OBGenericData * | GetData (const char *)
std::vector< OBGenericData * > | GetAllData (const unsigned int type)
std::vector< OBGenericData * > & | GetData ()
std::vector< OBGenericData * > | GetData (DataOrigin source)
OBDataIterator | BeginData ()
OBDataIterator | EndData ()

## Detailed Description

Base Class.

The various classes (Atom, Bond, Molecule) inherit from base classes– OBBase is largely a placeholder class. It also allows adding, deleting, and retrieving OBGenericData objects, which are ways to store arbitrary data for any atom, bond, molecule, or residue.

For example, a graphics program may want to allow users to add labels to individual atoms:

string atomLabel; // e.g., from the user adding annotation to an atom
if (!atom.HasData("UserLabel")) // stored textual data as an OBPairData
{
OBPairData *label = new OBPairData;
label->SetAttribute("UserLabel");
label->SetValue(atomLabel);
label->SetOrigin(userInput); // set by user, not by Open Babel
atom.SetData(label);
}
OpenBabel::OBGenericData::SetOrigin
void SetOrigin(const DataOrigin s)
Set the origin of this data, which can be used to filter the data.
Definition base.h:219
OpenBabel::OBGenericData::SetAttribute
void SetAttribute(const std::string &v)
Set the attribute (key), which can be used to retrieve this data.
Definition base.h:216
OpenBabel::OBPairData
Used to store arbitrary text attribute/value relationships.
Definition generic.h:113
OpenBabel::OBPairData::SetValue
void SetValue(const char *v)
Definition generic.h:120
OpenBabel::userInput
@ userInput
Added by the user.
Definition base.h:179

This class is also important in the OBConversion class. Any derived class of OBBase can be supported in reading or writing data. While most OBFormat "translators" are designed around reading molecular data, the OBConversion framework can support any base object. For example OBReaction supports reading and writing reaction files, OBGrid supports reading and writing 2D or 3D "grids" of numeric data.

Therefore if you want to expand the range of input or output via the OBConversion and OBFormat classes, you will also need to make sure you define an appropriate derived class from OBBase.

## Constructor & Destructor Documentation

## ~OBBase()

virtual ~OBBase | ( |  | ) |

inline virtual

## Member Function Documentation

## Clear()

bool Clear | ( | void |  | ) |

virtual

Clear any and all data associated with this object.

This method can be called by OBConversion::Read() before reading data. Derived classes should be sure to call OBBase::Clear() to remove inherited generic data.

Returns
  Whether the call was successful.

Since
  version 2.1.

Reimplemented in OBAtom, OBMol, OBReaction, and OBResidue.

Referenced by CastAndClear(), OBAtom::Clear(), OBMol::Clear(), and OBResidue::Clear().

## DoTransformations()

virtual OBBase * DoTransformations | ( | const std::map< std::string, std::string > * | ,
|  | OBConversion * | )

inline virtual

Perform a set of transformations specified by the user

Typically these are program options to filter or modify an object For example, see OBMol::DoTransformations() and OBMol::ClassDescription() Base type does nothing

Reimplemented in OBMol.

## ClassDescription()

const char * ClassDescription | ( |  | ) |

inline static

Returns
  A list of descriptions of command-line options for DoTransformations()

## CastAndClear()

template<class T>

T * CastAndClear | ( | bool | clear = true | ) |

inline

By default clears the object. Called from ReadMolecule of most format classes.

## GetTitle()

virtual const char * GetTitle | ( | bool | replaceNewlines = true | ) | const

inline virtual

Base type does nothing Made virtual around r3535 to simplify code which passes around OBBase*.

Reimplemented in OBMol.

Referenced by OBMoleculeFormat::DoOutputOptions().

## SetTitle()

virtual void SetTitle | ( | const char * |  | ) |

inline virtual

Reimplemented in OBMol.

Referenced by OBMoleculeFormat::DoOutputOptions().

## HasData() [1/3]

bool HasData | ( | const std::string & | s | ) |

Returns
  whether the generic attribute/value pair exists

Referenced by OBMol::AddAtom(), OBDepict::DrawMolecule(), OBMol::FindAngles(), OBMol::FindLSSR(), OBMol::FindSSSR(), OBMol::FindTorsions(), OBForceField::GetAtomTypes(), OBForceField::GetConformers(), OBForceField::GetCoordinates(), OBMol::GetEnergies(), OBMol::GetEnergy(), OBMol::GetLSSR(), OBForceField::GetPartialCharges(), OBMol::GetSSSR(), HasData(), OBDescriptor::MatchPairData(), OBMol::NewAtom(), OBMoleculeFormat::ReadChemObjectImpl(), and OBMol::SetEnergies().

## HasData() [2/3]

bool HasData | ( | const char * | s | ) |

Returns
  whether the generic attribute/value pair exists

## HasData() [3/3]

bool HasData | ( | const unsigned int | type | ) |

Returns
  whether the generic attribute/value pair exists, for a given OBGenericDataType

## DeleteData() [1/4]

void DeleteData | ( | unsigned int | type | ) |

Delete any data matching the given OBGenericDataType.

Referenced by OBMol::AddAtom(), OBMol::BeginModify(), OpenBabel::CanonicalLabels(), OBDescriptor::DeleteProperties(), OpenBabel::DeleteStereoOnAtom(), OBMol::EndModify(), OBMol::FindLSSR(), OBMol::FindSSSR(), OBMol::NewAtom(), and OBMol::RenumberAtoms().

## DeleteData() [2/4]

void DeleteData | ( | OBGenericData * | gd | ) |

Delete the given generic data from this object.

## DeleteData() [3/4]

void DeleteData | ( | std::vector< OBGenericData * > & | vg | ) |

Delete all of the given generic data from this object.

## DeleteData() [4/4]

bool DeleteData | ( | const std::string & | s | ) |

Deletes the generic data with the specified attribute, returning false if not found.

## SetData()

void SetData | ( | OBGenericData * | d | ) |

inline

Adds a data object; does nothing if d==NULL.

Referenced by OBMol::AddBond(), OBGastChrg::AssignPartialCharges(), OBMol::CopySubstructure(), OBMol::DoTransformations(), OBAtom::Duplicate(), AliasData::Expand(), OBMol::FindAngles(), OBMol::FindLSSR(), OBMol::FindSSSR(), OBMol::FindTorsions(), OBForceField::GetAtomTypes(), OBForceField::GetConformers(), OBForceField::GetCoordinates(), OBMol::GetEnergies(), OBMol::GetEnergy(), OBMol::GetFormula(), OBMol::GetLSSR(), OBForceField::GetPartialCharges(), OBMol::GetSSSR(), OBMoleculeFormat::MakeCombinedMolecule(), OBMol::operator+=(), OBMol::operator=(), OBDescriptor::PredictAndSave(), OBMol::SetEnergies(), and OBMol::SetFormula().

## CloneData()

void CloneData | ( | OBGenericData * | d | ) |

Adds a copy of a data object; does nothing if d == NULL

Since
  version 2.2

Referenced by OBMol::AddBond().

## DataSize()

size_t DataSize | ( |  | ) | const

inline

Returns
  the number of OBGenericData items attached to this molecule.

## GetData() [1/5]

OBGenericData * GetData | ( | const unsigned int | type | ) |

Returns
  the first matching data for a given type from OBGenericDataType or NULL if nothing matches

Referenced by OBDepict::DrawMolecule(), OpenBabel::extract_thermochemistry(), OBDescriptor::FilterCompare(), OBAtom::GetAngle(), OBForceField::GetAtomTypes(), OBForceField::GetConformers(), OBForceField::GetCoordinates(), OBAtom::GetDistance(), OBBond::GetLength(), OBForceField::GetPartialCharges(), OBDescriptor::GetValues(), OpenBabel::IsSuppressibleHydrogen(), OBMoleculeFormat::MakeCombinedMolecule(), OBMolAngleIter::OBMolAngleIter(), OBMolAngleIter::OBMolAngleIter(), OBMolTorsionIter::OBMolTorsionIter(), OBMolTorsionIter::OBMolTorsionIter(), and OBDescriptor::PredictAndSave().

## GetData() [2/5]

OBGenericData * GetData | ( | const std::string & | s | ) |

Returns
  any data matching the given attribute name or NULL if nothing matches
  the value given an attribute name

## GetData() [3/5]

OBGenericData * GetData | ( | const char * | s | ) |

Returns
  any data matching the given attribute name or NULL if nothing matches
  the value given an attribute name

## GetAllData()

std::vector< OBGenericData * > GetAllData | ( | const unsigned int | type | ) |

Returns
  the all matching data for a given type from OBGenericDataType or an empty vector if nothing matches

Since
  version 2.2

Referenced by OpenBabel::CanonicalLabels(), OBMol::CopySubstructure(), OBBuilder::CorrectStereoAtoms(), OBBuilder::CorrectStereoBonds(), OpenBabel::DeleteStereoOnAtom(), and OBMol::operator+=().

## GetData() [4/5]

std::vector< OBGenericData * > & GetData | ( |  | ) |

inline

Returns
  all data, suitable for iterating

Referenced by OBMol::BeginModify(), OBMol::ConnectTheDots(), OBMol::CopySubstructure(), OBMol::DoTransformations(), OBMol::GetEnergies(), OBMol::GetEnergy(), OBMol::GetFormula(), OBMol::GetLSSR(), OBMol::GetSSSR(), OBMol::GetTorsion(), OBMol::SetEnergies(), and OBMol::SetFormula().

## GetData() [5/5]

std::vector< OBGenericData * > GetData | ( | DataOrigin | source | ) |

Returns
  all data with a specific origin, suitable for iterating

## BeginData()

OBDataIterator BeginData | ( |  | ) |

inline

Returns
  An iterator pointing to the beginning of the data

Referenced by OBMol::AddAtom(), OBMol::AddBond(), OBAtom::Duplicate(), OBMoleculeFormat::MakeCombinedMolecule(), OBMol::NewAtom(), and OBMol::operator=().

## EndData()

OBDataIterator EndData | ( |  | ) |

inline

Returns
  An iterator pointing to the end of the data

Referenced by OBMol::AddAtom(), OBMol::AddBond(), OBAtom::Duplicate(), OBMoleculeFormat::MakeCombinedMolecule(), OBMol::NewAtom(), and OBMol::operator=().

## Member Data Documentation

## _vdata

std::vector<OBGenericData*> _vdata

protected

Custom data.

Referenced by BeginData(), Clear(), CloneData(), DataSize(), DeleteData(), DeleteData(), DeleteData(), DeleteData(), OBAtom::Duplicate(), EndData(), GetAllData(), GetData(), GetData(), GetData(), GetData(), GetData(), HasData(), HasData(), OBBond::OBBond(), OBMol::OBMol(), OBMol::OBMol(), OBResidue::OBResidue(), SetData(), and ~OBBase().

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

- base.h
- base.cpp