RDKit
Open-source cheminformatics and machine learning.
MolCatalogEntry.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2006 Greg Landrum
3 //
4 #include <RDGeneral/export.h>
5 #ifndef _RD_MOLCATALOGENTRY_H_
6 #define _RD_MOLCATALOGENTRY_H_
7 
8 #include <RDGeneral/Dict.h>
10 #include <fstream>
11 #include <string>
12 
13 namespace RDKit {
14 class ROMol;
15 
16 //! This class is used to store ROMol objects in a MolCatalog
18  public:
19  MolCatalogEntry() : dp_mol(0), d_descrip("") {
20  dp_props = new Dict();
21  setBitId(-1);
22  }
23 
24  //! copy constructor
25  MolCatalogEntry(const MolCatalogEntry &other);
26 
27  //! create an entry to hold the provided ROMol
28  /*!
29  The MolCatalogEntry takes ownership of the pointer
30  */
31  MolCatalogEntry(const ROMol *omol);
32 
33  //! construct from a pickle
34  MolCatalogEntry(const std::string &pickle) { this->initFromString(pickle); }
35 
36  ~MolCatalogEntry();
37 
38  std::string getDescription() const { return d_descrip; }
39 
40  void setDescription(std::string val) { d_descrip = val; }
41 
42  unsigned int getOrder() const { return d_order; };
43  void setOrder(unsigned int order) { d_order = order; };
44 
45  const ROMol *getMol() const { return dp_mol; };
46  //! hold the provided ROMol
47  /*!
48  The MolCatalogEntry takes ownership of the pointer.
49  If the MolCatalogEntry already has a molecule, this one will be deleted.
50  */
51  void setMol(const ROMol *molPtr);
52 
53  //! set a named property
54  template <typename T>
55  void setProp(const char *key, T &val) const {
56  dp_props->setVal(key, val);
57  }
58 
59  //! \overload
60  template <typename T>
61  void setProp(const std::string &key, T &val) const {
62  setProp(key.c_str(), val);
63  }
64 
65  //! get the value of a named property
66  template <typename T>
67  void getProp(const char *key, T &res) const {
68  dp_props->getVal(key, res);
69  }
70  //! \overload
71  template <typename T>
72  void getProp(const std::string &key, T &res) const {
73  getProp(key.c_str(), res);
74  }
75 
76  //! returns true if such a property exists
77  bool hasProp(const char *key) const {
78  if (!dp_props) return false;
79  return dp_props->hasVal(key);
80  }
81  //! \overload
82  bool hasProp(const std::string &key) const { return hasProp(key.c_str()); }
83 
84  //! clears a named property
85  void clearProp(const char *key) const { dp_props->clearVal(key); }
86  //! \overload
87  void clearProp(const std::string &key) const { clearProp(key.c_str()); }
88 
89  //! serializes this entry to the stream
90  void toStream(std::ostream &ss) const;
91  //! returns a serialized (pickled) form of the entry
92  std::string Serialize() const;
93  //! initialize from a stream containing a pickle
94  void initFromStream(std::istream &ss);
95  //! initialize from a string containing a pickle
96  void initFromString(const std::string &text);
97 
98  private:
99  const ROMol *dp_mol;
100  Dict *dp_props;
101 
102  unsigned int d_order;
103  std::string d_descrip;
104 };
105 } // namespace RDKit
106 
107 #endif
RDKit::MolCatalogEntry
This class is used to store ROMol objects in a MolCatalog.
Definition: MolCatalogEntry.h:17
RDKit::Dict
The Dict class can be used to store objects of arbitrary type keyed by strings.
Definition: Dict.h:36
RDKit::MolCatalogEntry::getMol
const ROMol * getMol() const
Definition: MolCatalogEntry.h:45
RDKit::EnumerationStrategyPickler::pickle
RDKIT_CHEMREACTIONS_EXPORT void pickle(const boost::shared_ptr< EnumerationStrategyBase > &enumerator, std::ostream &ss)
pickles a EnumerationStrategy and adds the results to a stream ss
RDKit::MolCatalogEntry::getProp
void getProp(const char *key, T &res) const
get the value of a named property
Definition: MolCatalogEntry.h:67
RDCatalog::CatalogEntry
Abstract base class to be used to represent an entry in a Catalog.
Definition: CatalogEntry.h:20
RDKit::MolCatalogEntry::setDescription
void setDescription(std::string val)
Definition: MolCatalogEntry.h:40
RDKit::MolCatalogEntry::setOrder
void setOrder(unsigned int order)
Definition: MolCatalogEntry.h:43
RDKit::MolCatalogEntry::clearProp
void clearProp(const char *key) const
clears a named property
Definition: MolCatalogEntry.h:85
RDKit::MolCatalogEntry::hasProp
bool hasProp(const std::string &key) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: MolCatalogEntry.h:82
RDKit::MolCatalogEntry::MolCatalogEntry
MolCatalogEntry()
Definition: MolCatalogEntry.h:19
RDKit::MolCatalogEntry::hasProp
bool hasProp(const char *key) const
returns true if such a property exists
Definition: MolCatalogEntry.h:77
RDKit::ROMol
Definition: ROMol.h:171
RDKit::MolCatalogEntry::clearProp
void clearProp(const std::string &key) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: MolCatalogEntry.h:87
CatalogEntry.h
RDKit
Std stuff.
Definition: Atom.h:30
RDKIT_MOLCATALOG_EXPORT
#define RDKIT_MOLCATALOG_EXPORT
Definition: export.h:372
RDLog::toStream
RDKIT_RDGENERAL_EXPORT std::ostream & toStream(std::ostream &)
RDKit::MolCatalogEntry::setProp
void setProp(const std::string &key, T &val) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: MolCatalogEntry.h:61
Dict.h
Defines the Dict class.
RDKit::MolCatalogEntry::setProp
void setProp(const char *key, T &val) const
set a named property
Definition: MolCatalogEntry.h:55
RDKit::MolCatalogEntry::getOrder
unsigned int getOrder() const
Definition: MolCatalogEntry.h:42
RDKit::MolCatalogEntry::getProp
void getProp(const std::string &key, T &res) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: MolCatalogEntry.h:72
RDKit::MolCatalogEntry::getDescription
std::string getDescription() const
returns a text description of this entry
Definition: MolCatalogEntry.h:38
RDKit::MolCatalogEntry::MolCatalogEntry
MolCatalogEntry(const std::string &pickle)
construct from a pickle
Definition: MolCatalogEntry.h:34
export.h