static inline void processCuts( size_t i, size_t maxCuts, BondVector_t& bonds_selected, const std::vector<BondVector_t>& matching_bonds, const ROMol& mol, std::vector<std::pair<ROMOL_SPTR, ROMOL_SPTR> >& res) { for (size_t x = i; x < matching_bonds.size(); x++) { appendBonds(bonds_selected, matching_bonds[x]); addResult(res, mol, bonds_selected, maxCuts); if (bonds_selected.size() < maxCuts) processCuts(x + 1, maxCuts, bonds_selected, matching_bonds, mol, res); bonds_selected.pop_back(); } }
static inline void processCuts( size_t i, size_t minCuts, size_t maxCuts, BondVector_t& bonds_selected, const std::vector<BondVector_t>& matching_bonds, const ROMol& mol, std::vector<std::pair<ROMOL_SPTR, ROMOL_SPTR> >& res) { if(maxCuts < minCuts) throw ValueErrorException("supplied maxCuts is less than minCuts"); if(minCuts==0) throw ValueErrorException("minCuts must be greater than 0"); for (size_t x = i; x < matching_bonds.size(); x++) { appendBonds(bonds_selected, matching_bonds[x]); if(bonds_selected.size() >= minCuts) { addResult(res, mol, bonds_selected, maxCuts); } if (bonds_selected.size() < maxCuts) { processCuts(x + 1, minCuts, maxCuts, bonds_selected, matching_bonds, mol, res); } bonds_selected.pop_back(); } }