/src/rdkit/Code/GraphMol/FileParsers/FileParserUtils.h
Line | Count | Source |
1 | | // |
2 | | // Copyright (C) 2010-2025 Greg Landrum and other RDKit contributors |
3 | | // |
4 | | // @@ All Rights Reserved @@ |
5 | | // This file is part of the RDKit. |
6 | | // The contents are covered by the terms of the BSD license |
7 | | // which is included in the file license.txt, found at the root |
8 | | // of the RDKit source tree. |
9 | | // |
10 | | #include <RDGeneral/export.h> |
11 | | #ifndef RD_FILEPARSERUTILS_H |
12 | | #define RD_FILEPARSERUTILS_H |
13 | | |
14 | | #include <string> |
15 | | #include <iostream> |
16 | | #include <RDGeneral/BoostStartInclude.h> |
17 | | #include <boost/lexical_cast.hpp> |
18 | | #include <boost/algorithm/string.hpp> |
19 | | #include <boost/format.hpp> |
20 | | #include <RDGeneral/BoostEndInclude.h> |
21 | | #include "FileParsers.h" |
22 | | #include <string_view> |
23 | | |
24 | | namespace RDKit { |
25 | | class RWMol; |
26 | | class Conformer; |
27 | | |
28 | | namespace FileParserUtils { |
29 | | RDKIT_FILEPARSERS_EXPORT inline std::string_view strip( |
30 | 193k | std::string_view orig, std::string stripChars = " \t\r\n") { |
31 | 193k | std::string_view res = orig; |
32 | 193k | auto start = res.find_first_not_of(stripChars); |
33 | 193k | if (start != std::string_view::npos) { |
34 | 179k | auto end = res.find_last_not_of(stripChars) + 1; |
35 | 179k | res = res.substr(start, end - start); |
36 | 179k | } else { |
37 | 13.7k | res = ""; |
38 | 13.7k | } |
39 | 193k | return res; |
40 | 193k | } |
41 | | |
42 | | template <typename T> |
43 | 131k | T stripSpacesAndCast(std::string_view input, bool acceptSpaces = false) { |
44 | 131k | auto trimmed = strip(input, " "); |
45 | 131k | if (acceptSpaces && trimmed.empty()) { |
46 | 0 | return 0; |
47 | 131k | } else { |
48 | 131k | return boost::lexical_cast<T>(trimmed); |
49 | 131k | } |
50 | 131k | } unsigned int RDKit::FileParserUtils::stripSpacesAndCast<unsigned int>(std::__1::basic_string_view<char, std::__1::char_traits<char> >, bool) Line | Count | Source | 43 | 127k | T stripSpacesAndCast(std::string_view input, bool acceptSpaces = false) { | 44 | 127k | auto trimmed = strip(input, " "); | 45 | 127k | if (acceptSpaces && trimmed.empty()) { | 46 | 0 | return 0; | 47 | 127k | } else { | 48 | 127k | return boost::lexical_cast<T>(trimmed); | 49 | 127k | } | 50 | 127k | } |
int RDKit::FileParserUtils::stripSpacesAndCast<int>(std::__1::basic_string_view<char, std::__1::char_traits<char> >, bool) Line | Count | Source | 43 | 4.06k | T stripSpacesAndCast(std::string_view input, bool acceptSpaces = false) { | 44 | 4.06k | auto trimmed = strip(input, " "); | 45 | 4.06k | if (acceptSpaces && trimmed.empty()) { | 46 | 0 | return 0; | 47 | 4.06k | } else { | 48 | 4.06k | return boost::lexical_cast<T>(trimmed); | 49 | 4.06k | } | 50 | 4.06k | } |
|
51 | | template <typename T> |
52 | 131k | T stripSpacesAndCast(const std::string &input, bool acceptSpaces = false) { |
53 | 131k | return stripSpacesAndCast<T>(std::string_view(input.c_str()), acceptSpaces); |
54 | 131k | } unsigned int RDKit::FileParserUtils::stripSpacesAndCast<unsigned int>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) Line | Count | Source | 52 | 127k | T stripSpacesAndCast(const std::string &input, bool acceptSpaces = false) { | 53 | 127k | return stripSpacesAndCast<T>(std::string_view(input.c_str()), acceptSpaces); | 54 | 127k | } |
int RDKit::FileParserUtils::stripSpacesAndCast<int>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) Line | Count | Source | 52 | 4.06k | T stripSpacesAndCast(const std::string &input, bool acceptSpaces = false) { | 53 | 4.06k | return stripSpacesAndCast<T>(std::string_view(input.c_str()), acceptSpaces); | 54 | 4.06k | } |
|
55 | | RDKIT_FILEPARSERS_EXPORT int toInt(const std::string &input, |
56 | | bool acceptSpaces = true); |
57 | | RDKIT_FILEPARSERS_EXPORT unsigned int toUnsigned(const std::string &input, |
58 | | bool acceptSpaces = true); |
59 | | RDKIT_FILEPARSERS_EXPORT double toDouble(const std::string &input, |
60 | | bool acceptSpaces = true); |
61 | | RDKIT_FILEPARSERS_EXPORT int toInt(const std::string_view input, |
62 | | bool acceptSpaces = true); |
63 | | RDKIT_FILEPARSERS_EXPORT unsigned int toUnsigned(std::string_view input, |
64 | | bool acceptSpaces = true); |
65 | | RDKIT_FILEPARSERS_EXPORT double toDouble(const std::string_view input, |
66 | | bool acceptSpaces = true); |
67 | | |
68 | | // gets a V3000 CTAB for a molecule |
69 | | RDKIT_FILEPARSERS_EXPORT std::string getV3000CTAB( |
70 | | const ROMol &tmol, const boost::dynamic_bitset<> &wasAromatic, |
71 | | int confId = -1, unsigned int precision = 6); |
72 | | //! \overload |
73 | | inline std::string getV3000CTAB(const ROMol &tmol, int confId = -1, |
74 | 0 | unsigned int precision = 6) { |
75 | 0 | boost::dynamic_bitset<> wasAromatic(tmol.getNumBonds()); |
76 | 0 | return getV3000CTAB(tmol, wasAromatic, confId, precision); |
77 | 0 | }; |
78 | | // reads a line from an MDL v3K CTAB |
79 | | RDKIT_FILEPARSERS_EXPORT std::string getV3000Line(std::istream *inStream, |
80 | | unsigned int &line); |
81 | | |
82 | | // nAtoms and nBonds are ignored on input, set on output |
83 | | RDKIT_FILEPARSERS_EXPORT bool ParseV3000CTAB( |
84 | | std::istream *inStream, unsigned int &line, RWMol *mol, Conformer *&conf, |
85 | | bool &chiralityPossible, unsigned int &nAtoms, unsigned int &nBonds, |
86 | | bool strictParsing = true, bool expectMEND = true, |
87 | | bool expectMacroAtoms = false); |
88 | | |
89 | | // nAtoms and nBonds are used |
90 | | RDKIT_FILEPARSERS_EXPORT bool ParseV2000CTAB( |
91 | | std::istream *inStream, unsigned int &line, RWMol *mol, Conformer *&conf, |
92 | | bool &chiralityPossible, unsigned int &nAtoms, unsigned int &nBonds, |
93 | | bool strictParsing = true); |
94 | | |
95 | | //! finishes up the processing (sanitization, etc.) of a molecule read from |
96 | | //! CTAB |
97 | | RDKIT_FILEPARSERS_EXPORT void finishMolProcessing( |
98 | | RWMol *res, bool chiralityPossible, |
99 | | const v2::FileParsers::MolFileParserParams &ps); |
100 | | //! \overload |
101 | | inline void finishMolProcessing(RWMol *res, bool chiralityPossible, |
102 | 0 | bool sanitize, bool removeHs) { |
103 | 0 | v2::FileParsers::MolFileParserParams ps; |
104 | 0 | ps.sanitize = sanitize; |
105 | 0 | ps.removeHs = removeHs; |
106 | 0 | finishMolProcessing(res, chiralityPossible, ps); |
107 | 0 | } |
108 | | |
109 | | //! Deprecated, please use QueryOps::replaceAtomWithQueryAtom instead |
110 | | RDKIT_FILEPARSERS_EXPORT Atom *replaceAtomWithQueryAtom(RWMol *mol, Atom *atom); |
111 | | |
112 | | //! applies a particular property to the atoms as an atom property list |
113 | | template <typename T, typename U> |
114 | | void applyMolListProp(ROMol &mol, const std::string &pn, |
115 | | const std::string &prefix, |
116 | | const std::string &missingValueMarker, size_t nItems, |
117 | 0 | U getter) { |
118 | 0 | std::string itempn = pn.substr(prefix.size()); |
119 | 0 | std::string strVect = mol.getProp<std::string>(pn); |
120 | 0 | std::vector<std::string> tokens; |
121 | 0 | boost::split(tokens, strVect, boost::is_any_of(" \t\n"), |
122 | 0 | boost::token_compress_on); |
123 | 0 | std::string mv = missingValueMarker; |
124 | 0 | size_t first_token = 0; |
125 | 0 | if (tokens.size() == nItems + 1 && tokens[0].front() == '[' && |
126 | 0 | tokens[0].back() == ']') { |
127 | 0 | mv = std::string(tokens[0].begin() + 1, tokens[0].end() - 1); |
128 | 0 | first_token = 1; |
129 | 0 | } |
130 | 0 | if (mv.empty()) { |
131 | 0 | BOOST_LOG(rdWarningLog) << "Missing value marker for property " << pn |
132 | 0 | << " is empty." << std::endl; |
133 | 0 | } |
134 | 0 | if(tokens.size() - first_token != nItems) { |
135 | 0 | BOOST_LOG(rdWarningLog) << "Property list " << pn << " has incompatible size, " |
136 | 0 | << tokens.size() << " elements found; expecting " |
137 | 0 | << nItems << ". Ignoring it." << std::endl; |
138 | 0 | return; |
139 | 0 | } |
140 | 0 | for (size_t i = first_token; i < tokens.size(); ++i) { |
141 | 0 | if (tokens[i] != mv) { |
142 | 0 | unsigned int itemid = i - first_token; |
143 | 0 | try { |
144 | 0 | T apv = boost::lexical_cast<T>(tokens[i]); |
145 | 0 | getter(itemid)->setProp(itempn, apv); |
146 | 0 | } catch (const boost::bad_lexical_cast &) { |
147 | 0 | BOOST_LOG(rdWarningLog) |
148 | 0 | << "Value " << tokens[i] << " for property " << pn << " of item " |
149 | 0 | << itemid << " can not be parsed. Ignoring it." << std::endl; |
150 | 0 | } |
151 | 0 | } |
152 | 0 | } |
153 | 0 | } Unexecuted instantiation: void RDKit::FileParserUtils::applyMolListProp<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#1}>(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#1})Unexecuted instantiation: void RDKit::FileParserUtils::applyMolListProp<int, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#1}>(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#1})Unexecuted instantiation: void RDKit::FileParserUtils::applyMolListProp<double, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#1}>(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#1})Unexecuted instantiation: void RDKit::FileParserUtils::applyMolListProp<bool, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#1}>(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#1})Unexecuted instantiation: void RDKit::FileParserUtils::applyMolListProp<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#2}>(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#2})Unexecuted instantiation: void RDKit::FileParserUtils::applyMolListProp<int, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#2}>(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#2})Unexecuted instantiation: void RDKit::FileParserUtils::applyMolListProp<double, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#2}>(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#2})Unexecuted instantiation: void RDKit::FileParserUtils::applyMolListProp<bool, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#2}>(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#2}) |
154 | | |
155 | | //! applies a particular property to the atoms as an atom property list |
156 | | template <typename T> |
157 | | [[deprecated("use applyMolListProp instead")]] |
158 | | void applyMolListPropToAtoms(ROMol &mol, const std::string &pn, |
159 | | const std::string &prefix, |
160 | | const std::string &missingValueMarker = "n/a") { |
161 | | auto getter = [&mol](size_t which) { return mol.getAtomWithIdx(which); }; |
162 | | applyMolListProp<T>(mol, pn, prefix, missingValueMarker, mol.getNumAtoms(), |
163 | | getter); |
164 | | } |
165 | | |
166 | | template <typename T, typename U> |
167 | | void applyMolListProps(ROMol &mol, const std::string &prefix, size_t nItems, |
168 | | U getter, const std::string missingValueMarker = "n/a") { |
169 | | for (auto pn : mol.getPropList()) { |
170 | | if (pn.find(prefix) == 0 && pn.length() > prefix.length()) { |
171 | | applyMolListProp<T>(mol, pn, prefix, missingValueMarker, nItems, getter); |
172 | | } |
173 | | } |
174 | | } |
175 | | |
176 | | //! applies all properties matching a particular prefix as an atom property |
177 | | //! list |
178 | | template <typename T> |
179 | | [[deprecated("use applyMolListProps instead")]] |
180 | | void applyMolListPropsToAtoms(ROMol &mol, const std::string &prefix, |
181 | | const std::string missingValueMarker = "n/a") { |
182 | | auto getter = [&mol](size_t which) { return mol.getAtomWithIdx(which); }; |
183 | | auto nItems = mol.getNumAtoms(); |
184 | | for (auto pn : mol.getPropList()) { |
185 | | if (pn.find(prefix) == 0 && pn.length() > prefix.length()) { |
186 | | applyMolListProp<T>(mol, pn, prefix, missingValueMarker, nItems, getter); |
187 | | } |
188 | | } |
189 | | } |
190 | | |
191 | | static constexpr std::string_view atomPropPrefixView = "atom."; |
192 | | static constexpr size_t atomPropPrefixLength = atomPropPrefixView.length(); |
193 | | static const std::string atomPropPrefix = std::string(atomPropPrefixView); |
194 | | static constexpr std::string_view bondPropPrefixView = "bond."; |
195 | | static constexpr size_t bondPropPrefixLength = bondPropPrefixView.length(); |
196 | | static const std::string bondPropPrefix = std::string(bondPropPrefixView); |
197 | | |
198 | | //! if the property name matches our rules for atom property lists, we'll |
199 | | //! apply it to the atoms |
200 | | inline void processMolPropertyList( |
201 | | ROMol &mol, const std::string &pn, |
202 | 0 | const std::string &missingValueMarker = "n/a") { |
203 | 0 | auto propSetter = [&](const std::string &propPrefix, auto getter, |
204 | 0 | size_t nItems) { |
205 | 0 | std::string prefix = propPrefix + "prop."; |
206 | 0 | if (pn.find(prefix) == 0 && pn.length() > prefix.length()) { |
207 | 0 | applyMolListProp<std::string>(mol, pn, prefix, missingValueMarker, nItems, |
208 | 0 | getter); |
209 | 0 | } else { |
210 | 0 | prefix = propPrefix + "iprop."; |
211 | 0 | if (pn.find(prefix) == 0 && pn.length() > prefix.length()) { |
212 | 0 | applyMolListProp<int>(mol, pn, prefix, missingValueMarker, nItems, |
213 | 0 | getter); |
214 | 0 | } else { |
215 | 0 | prefix = propPrefix + "dprop."; |
216 | 0 | if (pn.find(prefix) == 0 && pn.length() > prefix.length()) { |
217 | 0 | applyMolListProp<double>(mol, pn, prefix, missingValueMarker, nItems, |
218 | 0 | getter); |
219 | 0 | } else { |
220 | 0 | prefix = propPrefix + "bprop."; |
221 | 0 | if (pn.find(prefix) == 0 && pn.length() > prefix.length()) { |
222 | 0 | applyMolListProp<bool>(mol, pn, prefix, missingValueMarker, nItems, |
223 | 0 | getter); |
224 | 0 | } |
225 | 0 | } |
226 | 0 | } |
227 | 0 | } |
228 | 0 | }; Unexecuted instantiation: auto RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, auto:1, unsigned long)#1}::operator()<RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#1}>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#1}, unsigned long) constUnexecuted instantiation: auto RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, auto:1, unsigned long)#1}::operator()<RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#2}>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, RDKit::FileParserUtils::processMolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda(unsigned long)#2}, unsigned long) const |
229 | 0 |
|
230 | 0 | if (pn.find(atomPropPrefix) == 0 && pn.length() > atomPropPrefixLength) { |
231 | 0 | propSetter( |
232 | 0 | atomPropPrefix, |
233 | 0 | [&mol](size_t which) { return mol.getAtomWithIdx(which); }, |
234 | 0 | mol.getNumAtoms()); |
235 | 0 | } else if (pn.find(bondPropPrefix) == 0 && |
236 | 0 | pn.length() > bondPropPrefixLength) { |
237 | 0 | propSetter( |
238 | 0 | bondPropPrefix, |
239 | 0 | [&mol](size_t which) { return mol.getBondWithIdx(which); }, |
240 | 0 | mol.getNumBonds()); |
241 | 0 | } |
242 | 0 | } |
243 | | //! loops over all properties and applies the ones that match the rules for |
244 | | //! atom property lists to the atoms and bonds |
245 | | inline void processMolPropertyLists( |
246 | 0 | ROMol &mol, const std::string &missingValueMarker = "n/a") { |
247 | 0 | for (const auto &pn : mol.getPropList()) { |
248 | 0 | processMolPropertyList(mol, pn, missingValueMarker); |
249 | 0 | } |
250 | 0 | } |
251 | | |
252 | | static constexpr unsigned int DEFAULT_LINESIZE = 190; |
253 | | |
254 | | template <typename T, typename U> |
255 | | std::string getPropertyList(U getter, const std::string &propName, |
256 | | std::string missingValueMarker = "", |
257 | 0 | unsigned int lineSize = DEFAULT_LINESIZE) { |
258 | 0 | std::string res; |
259 | 0 | std::string propVal; |
260 | 0 | if (!missingValueMarker.empty()) { |
261 | 0 | propVal += boost::str(boost::format("[%s] ") % missingValueMarker); |
262 | 0 | } else { |
263 | 0 | missingValueMarker = "n/a"; |
264 | 0 | } |
265 | 0 | for (const auto item : getter()) { |
266 | 0 | std::string apVal = missingValueMarker; |
267 | 0 | T tVal; |
268 | 0 | if (item->getPropIfPresent(propName, tVal)) { |
269 | 0 | apVal = boost::lexical_cast<std::string>(tVal); |
270 | 0 | } |
271 | 0 | if (propVal.length() + apVal.length() + 1 >= lineSize) { |
272 | 0 | // remove trailing space: |
273 | 0 | propVal.pop_back(); |
274 | 0 | res += propVal + "\n"; |
275 | 0 | propVal = ""; |
276 | 0 | } |
277 | 0 | propVal += apVal + " "; |
278 | 0 | } |
279 | 0 | if (!propVal.empty()) { |
280 | 0 | // remove the trailing space: |
281 | 0 | propVal.pop_back(); |
282 | 0 | res += propVal; |
283 | 0 | } |
284 | 0 | return res; |
285 | 0 | } Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > RDKit::FileParserUtils::getPropertyList<int, RDKit::FileParserUtils::createAtomIntPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::FileParserUtils::createAtomIntPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned int)Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > RDKit::FileParserUtils::getPropertyList<double, RDKit::FileParserUtils::createAtomDoublePropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::FileParserUtils::createAtomDoublePropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned int)Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > RDKit::FileParserUtils::getPropertyList<bool, RDKit::FileParserUtils::createAtomBoolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::FileParserUtils::createAtomBoolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned int)Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > RDKit::FileParserUtils::getPropertyList<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, RDKit::FileParserUtils::createAtomStringPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::FileParserUtils::createAtomStringPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned int)Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > RDKit::FileParserUtils::getPropertyList<int, RDKit::FileParserUtils::createBondIntPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::FileParserUtils::createBondIntPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned int)Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > RDKit::FileParserUtils::getPropertyList<double, RDKit::FileParserUtils::createBondDoublePropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::FileParserUtils::createBondDoublePropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned int)Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > RDKit::FileParserUtils::getPropertyList<bool, RDKit::FileParserUtils::createBondBoolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::FileParserUtils::createBondBoolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned int)Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > RDKit::FileParserUtils::getPropertyList<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, RDKit::FileParserUtils::createBondStringPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::FileParserUtils::createBondStringPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned int) |
286 | | |
287 | | template <typename T> |
288 | | [[deprecated("use getPropertyList() instead")]] |
289 | | std::string getAtomPropertyList(ROMol &mol, const std::string &atomPropName, |
290 | | std::string missingValueMarker = "", |
291 | | unsigned int lineSize = DEFAULT_LINESIZE) { |
292 | | return getPropertyList<T>([&mol]() { return mol.atoms(); }, atomPropName, |
293 | | missingValueMarker, lineSize); |
294 | | } |
295 | | |
296 | | template <typename T, typename U> |
297 | | void createPropertyList(ROMol &mol, U getter, const std::string &prefix, |
298 | | const std::string &typeMarker, |
299 | | const std::string &propName, |
300 | | const std::string &missingValueMarker = "", |
301 | 0 | unsigned int lineSize = DEFAULT_LINESIZE) { |
302 | 0 | std::string molPropName = prefix + "." + typeMarker + "." + propName; |
303 | 0 | mol.setProp(molPropName, getPropertyList<T>(getter, propName, |
304 | 0 | missingValueMarker, lineSize)); |
305 | 0 | } Unexecuted instantiation: void RDKit::FileParserUtils::createPropertyList<int, RDKit::FileParserUtils::createAtomIntPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::ROMol&, RDKit::FileParserUtils::createAtomIntPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)Unexecuted instantiation: void RDKit::FileParserUtils::createPropertyList<double, RDKit::FileParserUtils::createAtomDoublePropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::ROMol&, RDKit::FileParserUtils::createAtomDoublePropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)Unexecuted instantiation: void RDKit::FileParserUtils::createPropertyList<bool, RDKit::FileParserUtils::createAtomBoolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::ROMol&, RDKit::FileParserUtils::createAtomBoolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)Unexecuted instantiation: void RDKit::FileParserUtils::createPropertyList<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, RDKit::FileParserUtils::createAtomStringPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::ROMol&, RDKit::FileParserUtils::createAtomStringPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)Unexecuted instantiation: void RDKit::FileParserUtils::createPropertyList<int, RDKit::FileParserUtils::createBondIntPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::ROMol&, RDKit::FileParserUtils::createBondIntPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)Unexecuted instantiation: void RDKit::FileParserUtils::createPropertyList<double, RDKit::FileParserUtils::createBondDoublePropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::ROMol&, RDKit::FileParserUtils::createBondDoublePropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)Unexecuted instantiation: void RDKit::FileParserUtils::createPropertyList<bool, RDKit::FileParserUtils::createBondBoolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::ROMol&, RDKit::FileParserUtils::createBondBoolPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)Unexecuted instantiation: void RDKit::FileParserUtils::createPropertyList<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, RDKit::FileParserUtils::createBondStringPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}>(RDKit::ROMol&, RDKit::FileParserUtils::createBondStringPropertyList(RDKit::ROMol&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int)::{lambda()#1}, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int) |
306 | | |
307 | | inline void createAtomIntPropertyList( |
308 | | ROMol &mol, const std::string &atomPropName, |
309 | | const std::string &missingValueMarker = "", |
310 | 0 | unsigned int lineSize = DEFAULT_LINESIZE) { |
311 | 0 | createPropertyList<int>( |
312 | 0 | mol, [&mol]() { return mol.atoms(); }, "atom", "iprop", atomPropName, |
313 | 0 | missingValueMarker, lineSize); |
314 | 0 | } |
315 | | inline void createAtomDoublePropertyList( |
316 | | ROMol &mol, const std::string &atomPropName, |
317 | | const std::string &missingValueMarker = "", |
318 | 0 | unsigned int lineSize = DEFAULT_LINESIZE) { |
319 | 0 | createPropertyList<double>( |
320 | 0 | mol, [&mol]() { return mol.atoms(); }, "atom", "dprop", atomPropName, |
321 | 0 | missingValueMarker, lineSize); |
322 | 0 | } |
323 | | inline void createAtomBoolPropertyList( |
324 | | ROMol &mol, const std::string &atomPropName, |
325 | | const std::string &missingValueMarker = "", |
326 | 0 | unsigned int lineSize = DEFAULT_LINESIZE) { |
327 | 0 | createPropertyList<bool>( |
328 | 0 | mol, [&mol]() { return mol.atoms(); }, "atom", "bprop", atomPropName, |
329 | 0 | missingValueMarker, lineSize); |
330 | 0 | } |
331 | | inline void createAtomStringPropertyList( |
332 | | ROMol &mol, const std::string &atomPropName, |
333 | | const std::string &missingValueMarker = "", |
334 | 0 | unsigned int lineSize = DEFAULT_LINESIZE) { |
335 | 0 | createPropertyList<std::string>( |
336 | 0 | mol, [&mol]() { return mol.atoms(); }, "atom", "prop", atomPropName, |
337 | 0 | missingValueMarker, lineSize); |
338 | 0 | } |
339 | | |
340 | | inline void createBondIntPropertyList( |
341 | | ROMol &mol, const std::string &bondPropName, |
342 | | const std::string &missingValueMarker = "", |
343 | 0 | unsigned int lineSize = DEFAULT_LINESIZE) { |
344 | 0 | createPropertyList<int>( |
345 | 0 | mol, [&mol]() { return mol.bonds(); }, "bond", "iprop", bondPropName, |
346 | 0 | missingValueMarker, lineSize); |
347 | 0 | } |
348 | | inline void createBondDoublePropertyList( |
349 | | ROMol &mol, const std::string &bondPropName, |
350 | | const std::string &missingValueMarker = "", |
351 | 0 | unsigned int lineSize = DEFAULT_LINESIZE) { |
352 | 0 | createPropertyList<double>( |
353 | 0 | mol, [&mol]() { return mol.bonds(); }, "bond", "dprop", bondPropName, |
354 | 0 | missingValueMarker, lineSize); |
355 | 0 | } |
356 | | inline void createBondBoolPropertyList( |
357 | | ROMol &mol, const std::string &bondPropName, |
358 | | const std::string &missingValueMarker = "", |
359 | 0 | unsigned int lineSize = DEFAULT_LINESIZE) { |
360 | 0 | createPropertyList<bool>( |
361 | 0 | mol, [&mol]() { return mol.bonds(); }, "bond", "bprop", bondPropName, |
362 | 0 | missingValueMarker, lineSize); |
363 | 0 | } |
364 | | inline void createBondStringPropertyList( |
365 | | ROMol &mol, const std::string &bondPropName, |
366 | | const std::string &missingValueMarker = "", |
367 | 0 | unsigned int lineSize = DEFAULT_LINESIZE) { |
368 | 0 | createPropertyList<std::string>( |
369 | 0 | mol, [&mol]() { return mol.bonds(); }, "bond", "prop", bondPropName, |
370 | 0 | missingValueMarker, lineSize); |
371 | 0 | } |
372 | | |
373 | | RDKIT_FILEPARSERS_EXPORT void moveAdditionalPropertiesToSGroups(RWMol &mol); |
374 | | |
375 | | } // namespace FileParserUtils |
376 | | } // namespace RDKit |
377 | | |
378 | | #endif |