OBBase Class Reference

Base Class. More...

#include <openbabel/base.h>

Inheritance diagram for OBBase:

Inheritance graph
[legend]
List of all members.

Public Member Functions

virtual ~OBBase ()
virtual bool Clear ()
virtual OBBaseDoTransformations (const std::map< std::string, std::string > *)
template<class T>
T * CastAndClear (bool clear=true)
Generic data handling methods (via OBGenericData)
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 * > &)
void SetData (OBGenericData *d)
unsigned int DataSize () const
OBGenericDataGetData (const unsigned int type)
OBGenericDataGetData (const std::string &)
OBGenericDataGetData (const char *)
std::vector< OBGenericData * > & GetData ()
std::vector< OBGenericData * > GetData (DataOrigin source)
OBDataIterator BeginData ()
OBDataIterator EndData ()

Static Public Member Functions

static const char * ClassDescription ()

Protected Attributes

std::vector< OBGenericData * > _vdata

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);
  }

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

virtual ~OBBase (  )  [inline, virtual]


Member Function Documentation

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, and OBResidue.

virtual OBBase* DoTransformations ( const std::map< std::string, std::string > *   )  [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()

Reimplemented in OBMol.

static const char* ClassDescription (  )  [inline, static]

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

Reimplemented in OBMol.

T* CastAndClear ( bool  clear = true  )  [inline]

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

bool HasData ( const std::string &   ) 

Returns:
whether the generic attribute/value pair exists

bool HasData ( const char *   ) 

Returns:
whether the generic attribute/value pair exists

bool HasData ( const unsigned int  type  ) 

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

void DeleteData ( unsigned int  type  ) 

Delete any data matching the given OBGenericDataType.

void DeleteData ( OBGenericData  ) 

Delete the given generic data from this object.

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

Delete all of the given generic data from this object.

void SetData ( OBGenericData d  )  [inline]

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

unsigned int DataSize (  )  const [inline]

Returns:
the number of OBGenericData items attached to this molecule.

OBGenericData * GetData ( const unsigned int  type  ) 

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

OBGenericData * GetData ( const std::string &   ) 

Returns:
the value given an attribute name

OBGenericData * GetData ( const char *   ) 

Returns:
the value given an attribute name

std::vector<OBGenericData*>& GetData (  )  [inline]

Returns:
all data, suitable for iterating

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

Returns:
all data with a specific origin, suitable for iterating

OBDataIterator BeginData (  )  [inline]

Returns:
An iterator pointing to the beginning of the data

OBDataIterator EndData (  )  [inline]

Returns:
An iterator pointing to the end of the data


Member Data Documentation

std::vector<OBGenericData*> _vdata [protected]

Custom data.


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