gcu/molecule.h
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 class Formula;
00037
00038 class Molecule: public Object
00039 {
00040 public:
00041 Molecule (TypeId Type = MoleculeType);
00042 Molecule (Atom* pAtom);
00043 virtual ~Molecule ();
00044
00045 void AddChild (Object* object);
00046 virtual void AddAtom (Atom* pAtom);
00047 virtual void AddBond (Bond* pBond);
00048 virtual void Remove (gcu::Object* pObject);
00049 void UpdateCycles (Bond* pBond);
00050 void UpdateCycles ();
00051 bool operator== (Molecule const& molecule) const;
00052 virtual unsigned GetAtomsNumber () const {return m_Atoms.size ();}
00053 static Molecule *MoleculeFromFormula (Document *Doc, Formula const &formula, bool add_pseudo = true);
00054
00055 protected:
00056 std::list<Cycle*> m_Cycles;
00057 std::list<Chain*> m_Chains;
00058 std::list<Atom*> m_Atoms;
00059 std::list<Bond*> m_Bonds;
00060 };
00061
00062 }
00063
00064 #endif // GCU_MOLECULE_H