bool Customizable::Socket::HasEmptySlot() const { if (fMaxConnections < 0 || CountConnections() < fMaxConnections) return true; return false; }
// Cчитает число связей от атомами, подходящими под фильтр from. // до атомов, подходящих под фильтр to // Подходит как для расчета Cn-Cm, где n != m, так и для Cn-Cn, Cn-OH и т.п. size_t CountConnections(const VertexFilter& from, const VertexFilter& to) const { if (from == to) { return CountConnections(from); } std::vector<Vertex> fromVertices = findAll(from); std::vector<Vertex> toVertices = findAll(to); size_t result = 0; for (size_t i=0; i<fromVertices.size(); ++i) { for (size_t j=0; j<toVertices.size(); ++j) { result += Distance(fromVertices[i], toVertices[j]); } } return result; }