void ModelObject::validate_outputs() const { if (!get_has_dependencies()) return; IMP_IF_CHECK(USAGE_AND_INTERNAL) { IMP_CHECK_OBJECT(this); ModelObjectsTemp ret = do_get_outputs(); std::sort(ret.begin(), ret.end()); ret.erase(std::unique(ret.begin(), ret.end()), ret.end()); ModelObjectsTemp saved = get_model()->get_dependency_graph_outputs(this); std::sort(saved.begin(), saved.end()); ModelObjectsTemp intersection; std::set_intersection(saved.begin(), saved.end(), ret.begin(), ret.end(), std::back_inserter(intersection)); IMP_USAGE_CHECK( intersection.size() == ret.size(), "Dependencies changed without invalidating dependencies." << " Make sure you call set_has_dependencies(false) any " << "time the list of dependencies changed. Object is " << get_name() << " of type " << get_type_name()); } }
ModelObjectsTemp ModelObject::get_outputs() const { IMP_OBJECT_LOG; validate_outputs(); return do_get_outputs(); }
ModelObjectsTemp ParticleOutputs::get_outputs( Model *m, const ParticleIndexes &pis) const { return do_get_outputs(m, pis); }