12 #ifndef IMPKERNEL_SINGLETON_CONTAINER_H
13 #define IMPKERNEL_SINGLETON_CONTAINER_H
15 #include <IMP/kernel/kernel_config.h>
16 #include "internal/IndexingIterator.h"
19 #include "internal/container_helpers.h"
30 IMPKERNEL_BEGIN_NAMESPACE
61 if (get_provides_access())
65 if (contents_hash_ != nhash || !cache_initialized_) {
66 contents_hash_ = nhash;
67 cache_initialized_ =
true;
70 return contents_cache_;
85 return IMP::kernel::internal::get_particle(get_model(),
get_indexes());
89 return IMP::kernel::internal::get_particle(get_model(),
get_indexes()[i]);
91 unsigned int get_number()
const {
return get_indexes().size(); }
93 bool get_provides_access()
const;
98 template <
class Functor>
99 Functor for_each(Functor f) {
102 return std::for_each(vs.begin(), vs.end(), f);
114 IMPKERNEL_DEPRECATED_METHOD_DECL(2.1)
115 unsigned int get_number_of_particles()
const;
119 IMPKERNEL_DEPRECATED_METHOD_DECL(2.1)
124 std::string name =
"SingletonContainer %1%");
127 virtual bool do_get_provides_access()
const {
return false; }
132 mutable std::size_t contents_hash_;
134 mutable bool cache_initialized_;
141 #if !defined(SWIG) && !defined(IMP_DOXYGEN)
175 void set_name_if_default(std::string name);
178 IMPKERNEL_END_NAMESPACE
std::size_t get_contents_hash() const
An exception for a request for an invalid member of a container.
Class for adding derivatives from restraints to the model.
Control display of deprecation information.
ParticleIndexes get_indexes(const ParticlesTemp &ps)
Various general useful macros for IMP.
Abstract base class for containers of particles.
IMP::kernel::SingletonContainer SingletonContainer
SingletonContainerAdaptor(base::internal::PointerBase< C > c)
ParticlesTemp get_particles(kernel::Model *m, const ParticleIndexes &ps)
A smart pointer to a reference counted object.
A base class for modifiers of kernel::ParticlesTemp.
IMP::kernel::SingletonModifier SingletonModifier
Abstract class for containers of particles.
Various general useful macros for IMP.
Class to handle individual model particles.
Classes to handle individual model particles. (Note that implementation of inline functions in in int...
Classes to handle individual model particles.
#define IMP_THROW(message, exception_name)
Throw an exception with a message.
A nullptr-initialized pointer to an IMP Object.
Exception definitions and assertions.
#define IMP_REF_COUNTED_NONTRIVIAL_DESTRUCTOR(Name)
IMP::kernel::SingletonScore SingletonScore
A shared container for Singletons.
Class for storing model, its restraints, constraints, and particles.