Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef OB_REACT_H
00020 #define OB_REACT_H
00021
00022 #include <vector>
00023 #include <openbabel/shared_ptr.h>
00024 #include <openbabel/mol.h>
00025
00026 namespace OpenBabel
00027 {
00028
00035 class OBReaction : public OBBase
00036 {
00037 private:
00038 std::vector<shared_ptr<OBMol> > _reactants;
00039 std::vector<shared_ptr<OBMol> > _products;
00040 shared_ptr<OBMol> _ts;
00041 shared_ptr<OBMol> _agent;
00042 std::string _title;
00043 std::string _comment;
00044 bool _reversible;
00045 public:
00046 OBReaction() : _reversible(false)
00047 {}
00048
00049 int NumReactants() const
00050 { return static_cast<int> (_reactants.size()); }
00051
00052 int NumProducts()const
00053 { return static_cast<int> (_products.size()); }
00054
00055 void AddReactant(const shared_ptr<OBMol> sp)
00056 { _reactants.push_back(sp); }
00057
00058 void AddProduct(const shared_ptr<OBMol> sp)
00059 { _products.push_back(sp); }
00060
00061 void SetTransitionState(const shared_ptr<OBMol> sp)
00062 { _ts = sp; }
00063
00064 void AddAgent(const shared_ptr<OBMol> sp)
00065 { _agent = sp; }
00066
00067 shared_ptr<OBMol> GetReactant(const unsigned i)
00068 {
00069 shared_ptr<OBMol> sp;
00070 if(i<_reactants.size())
00071 sp = _reactants[i];
00072 return sp;
00073 }
00074 shared_ptr<OBMol> GetProduct(const unsigned i)
00075 {
00076 shared_ptr<OBMol> sp;
00077 if(i<_products.size())
00078 sp = _products[i];
00079 return sp;
00080 }
00081
00082 shared_ptr<OBMol> GetTransitionState()const
00083 { return _ts; }
00084
00085 shared_ptr<OBMol> GetAgent()const
00086 { return _agent; }
00087
00088 std::string GetTitle() const { return _title; }
00089 std::string GetComment() const { return _comment; }
00090 void SetTitle(const std::string& title) { _title=title; }
00091 void SetComment(const std::string& comment) { _comment=comment; }
00092
00093 bool IsReversible() const {return _reversible;}
00094 void SetReversible(bool b=true) {_reversible=b;}
00095
00096 static const char* ClassDescription()
00097 {
00098 return " reactions\n";
00099 }
00100
00101 bool Clear()
00102 {
00103 _reactants.clear();
00104 _products.clear();
00105 _ts.reset();
00106 _agent.reset();
00107 _title.clear();
00108 _comment.clear();
00109 _reversible = false;
00110 return true;
00111 }
00112 };
00113
00114
00115 }
00116 #endif
00117