11 #ifndef _RD_MOLPICKLE_H
12 #define _RD_MOLPICKLE_H
20 #include <boost/utility/binary.hpp>
40 const char *
message()
const {
return _msg.c_str(); };
47 namespace PicklerOps {
141 static unsigned int getDefaultPickleProperties();
142 static void setDefaultPickleProperties(
unsigned int);
148 static void pickleMol(
const ROMol *mol, std::ostream &ss);
149 static void pickleMol(
const ROMol *mol, std::ostream &ss,
150 unsigned int propertyFlags);
152 static void pickleMol(
const ROMol &mol, std::ostream &ss);
155 unsigned int propertyFlags) {
160 static void pickleMol(
const ROMol *mol, std::string &res);
161 static void pickleMol(
const ROMol *mol, std::string &res,
162 unsigned int propertyFlags);
163 static void pickleMol(
const ROMol &mol, std::string &res);
165 unsigned int propertyFlags) {
170 static void molFromPickle(
const std::string &
pickle,
ROMol *mol);
176 static void molFromPickle(std::istream &ss,
ROMol *mol);
183 static std::int32_t _pickleAtomData(std::ostream &tss,
const Atom *atom);
185 static void _unpickleAtomData(std::istream &tss,
Atom *atom,
int version);
187 static void _pickleQueryAtomData(std::ostream &tss,
const Atom *atom);
190 template <
typename T>
191 static void _pickle(
const ROMol *mol, std::ostream &ss,
192 unsigned int propertyFlags);
195 template <
typename T>
196 static void _pickleAtom(std::ostream &ss,
const Atom *atom);
199 template <
typename T>
200 static void _pickleBond(std::ostream &ss,
const Bond *bond,
201 std::map<int, int> &atomIdxMap);
204 template <
typename T>
205 static void _pickleSSSR(std::ostream &ss,
const RingInfo *ringInfo,
206 std::map<int, int> &atomIdxMap);
209 template <
typename T>
210 static void _pickleSubstanceGroup(std::ostream &ss,
212 std::map<int, int> &atomIdxMap,
213 std::map<int, int> &bondIdxMap);
216 template <
typename T>
217 static void _pickleStereo(std::ostream &ss,
218 const std::vector<StereoGroup> &groups,
219 std::map<int, int> &atomIdxMap);
222 template <
typename T>
223 static void _pickleConformer(std::ostream &ss,
const Conformer *conf);
226 template <
typename T>
227 static void _depickle(std::istream &ss,
ROMol *mol,
int version,
232 template <
typename T>
233 static Atom *_addAtomFromPickle(std::istream &ss,
ROMol *mol,
235 bool directMap =
false);
238 template <
typename T>
239 static Bond *_addBondFromPickle(std::istream &ss,
ROMol *mol,
int version,
240 bool directMap =
false);
244 template <
typename T>
245 static void _addRingInfoFromPickle(std::istream &ss,
ROMol *mol,
int version,
246 bool directMap =
false);
249 template <
typename T>
250 static SubstanceGroup _getSubstanceGroupFromPickle(std::istream &ss,
251 ROMol *mol,
int version);
253 template <
typename T>
254 static void _depickleStereo(std::istream &ss,
ROMol *mol,
int version);
257 template <
typename T>
258 static Conformer *_conformerFromPickle(std::istream &ss,
int version);
261 static void _pickleProperties(std::ostream &ss,
const RDProps &props,
262 unsigned int pickleFlags);
264 static void _unpickleProperties(std::istream &ss,
RDProps &props);
267 static void _pickleV1(
const ROMol *mol, std::ostream &ss);
269 static void _depickleV1(std::istream &ss,
ROMol *mol);
271 static void _addAtomFromPickleV1(std::istream &ss,
ROMol *mol);
273 static void _addBondFromPickleV1(std::istream &ss,
ROMol *mol);