00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef GCU_MOLECULE_H
00026 #define GCU_MOLECULE_H
00027
00028 #include "object.h"
00029
00030 namespace gcu {
00031
00032 class Atom;
00033 class Bond;
00034 class Chain;
00035 class Cycle;
00036
00037 class Molecule: public Object
00038 {
00039 public:
00040 Molecule (TypeId Type = MoleculeType);
00041 Molecule (Atom* pAtom);
00042 virtual ~Molecule ();
00043
00044 void AddChild (Object* object);
00045 virtual void AddAtom (Atom* pAtom);
00046 virtual void AddBond (Bond* pBond);
00047 virtual void Remove (gcu::Object* pObject);
00048 void UpdateCycles (Bond* pBond);
00049 void UpdateCycles ();
00050
00051 protected:
00052 std::list<Cycle*> m_Cycles;
00053 std::list<Chain*> m_Chains;
00054 std::list<Atom*> m_Atoms;
00055 std::list<Bond*> m_Bonds;
00056 };
00057
00058 }
00059
00060 #endif // GCU_MOLECULE_H