/*!
\file stdGroup.h
\brief Container for standard fragments
\author Martin Peters
$Date: 2010/03/29 20:45:26 $
$Revision: 1.12 $
----------------------------------------------------------------------------
MTK++ - C++ package of modeling libraries.
Copyright (C) 2005-2006 (see AUTHORS file for a list of contributors)
This file is part of MTK++.
MTK++ is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
MTK++ is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lessser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see .
----------------------------------------------------------------------------
*/
#ifndef STDGROUP_h
#define STDGROUP_h
#include
#include
#include
namespace MTKpp
{
class stdLibrary;
class stdFrag;
class molecule;
// ============================================================
// Class : stdGroup()
// ------------------------------------------------------------
// Class stdGroup - Container for stdFrag.
// ============================================================
class stdGroup
{
public:
/*!
\brief stdGroup Constructor
\param parent stdLibrary pointer
*/
stdGroup(stdLibrary *parent = 0);
//! stdGroup Destructor
virtual ~stdGroup();
/*!
\brief Get stdLibrary which stdGroup is apart of
\return stdLibrary pointer
*/
stdLibrary* getParent();
/*!
\brief Set name of stdGroup
\param name stdGroup name
*/
void setName(const std::string& name);
/*!
\brief Get name of stdGroup
\return stdGroup name
*/
std::string getName();
/*!
\brief Set info string of stdGroup
\param info stdGroup info
*/
void setInfo(const std::string& info);
/*!
\brief Get info of stdGroup
\return stdGroup info
*/
std::string getInfo();
/*!
\brief Add stdFrag to stdGroup
\return stdFrag
*/
virtual stdFrag* addStdFrag();
/*!
\brief Add stdFrag to stdGroup
\param f stdFrag pointer
\return stdFrag
*/
virtual stdFrag* addStdFrag(stdFrag* f);
/*!
\brief Add stdFrag to stdGroup from another stdGroup
\param s stdFrag pointer
\return stdFrag
*/
void appendStdFrag(stdFrag* s);
/*!
\brief Get stdFrag by name
\param name stdFrag name
*/
virtual stdFrag* getStdFrag(const std::string& name);
/*!
\brief Has stdGroup a certain stdFrag
\param name stdFrag name
\return boolean
*/
bool hasStdFrag(const std::string& name);
/*!
\brief Get list of stdFrags
\return list of stdFrags
*/
std::vector getStdFragList();
/*!
\brief generate simple fingerprints
*/
void generateSimpleFP();
/*!
\brief generate adjacency matrices
*/
void generateAdjMatrices();
/*!
\brief Has stdMolecule
\return boolean
*/
bool hasStdMolecule();
/*!
\brief Set stdMolecule
\param m pointer
*/
void setStdMolecule(molecule* m);
/*!
\brief Get stdMolecule
\return molecule pointer
*/
molecule* getStdMolecule();
/*!
\brief Get getCharge
\return molecule charge
*/
double getCharge();
protected:
//! stdLibrary pointer
stdLibrary* pParent;
//! stdGroup name
std::string itsName;
//! stdGroup information
std::string itsInfo;
//! stdFrag iterator
typedef std::vector::iterator stdFragIterator;
//! stdFrag list
std::vector itsStdFragList;
//! stdFrag pointer
stdFrag* pStdFrag;
//!
molecule* pMolecule;
};
} // MTKpp namespace
#endif // STDGROUP_H