12 #ifndef IMPKERNEL_SINGLETON_CONTAINER_H 
   13 #define IMPKERNEL_SINGLETON_CONTAINER_H 
   15 #include <IMP/kernel_config.h> 
   16 #include "internal/IndexingIterator.h" 
   19 #include "internal/container_helpers.h" 
   29 #include <cereal/access.hpp> 
   30 #include <cereal/types/base_class.hpp> 
   32 IMPKERNEL_BEGIN_NAMESPACE
 
   33 class SingletonModifier;
 
   73     if (get_provides_access())
 
   77       if (contents_hash_ != nhash || !cache_initialized_) {
 
   78         contents_hash_ = nhash;
 
   79         cache_initialized_ = 
true;
 
   80         get_indexes_in_place(contents_cache_); 
 
   82       return contents_cache_;
 
   98     return IMP::internal::get_particle(get_model(), 
get_indexes());
 
  101   Particle* 
get(
unsigned int i) 
const {
 
  102     return IMP::internal::get_particle(get_model(), 
get_indexes()[i]);
 
  108   unsigned int get_number()
 const { 
return get_indexes().size(); }
 
  110   bool get_provides_access() 
const;
 
  115   template <
class Functor>
 
  116   Functor for_each(Functor f) {
 
  119     return std::for_each(vs.begin(), vs.end(), f);
 
  127                      std::string name = 
"SingletonContainer %1%");
 
  138   virtual bool do_get_provides_access()
 const { 
return false; }
 
  140 #if !defined(SWIG) && !defined(IMP_DOXYGEN) 
  152   mutable std::size_t contents_hash_;
 
  154   mutable bool cache_initialized_;
 
  156   friend class cereal::access;
 
  158   template<
class Archive> 
void serialize(Archive &ar) {
 
  159     ar(cereal::base_class<Container>(
this));
 
  161     if (std::is_base_of<cereal::detail::InputArchiveBase, Archive>::value) {
 
  163       cache_initialized_ = 
false;
 
  173 #if !defined(SWIG) && !defined(IMP_DOXYGEN) 
  174     public Pointer<SingletonContainer>
 
  207   void set_name_if_default(std::string name);
 
  210 IMPKERNEL_END_NAMESPACE
 
A base class for modifiers of ParticlesTemp. 
 
Control display of deprecation information. 
 
Macros to help with reference counting. 
 
Class for adding derivatives from restraints to the model. 
 
std::size_t get_contents_hash() const 
 
A smart pointer to a reference counted object. 
 
Class for storing model, its restraints, constraints, and particles. 
 
#define IMP_UNUSED(variable)
 
Various general useful macros for IMP. 
 
An exception for a request for an invalid member of a container. 
 
A shared container for Singletons. 
 
Classes to handle individual model particles. (Note that implementation of inline functions is in int...
 
Abstract base class for containers of particles. 
 
#define IMP_THROW(message, exception_name)
Throw an exception with a message. 
 
A nullptr-initialized pointer to an IMP Object. 
 
Helper macros for throwing and handling exceptions. 
 
Class to handle individual particles of a Model object. 
 
#define IMP_REF_COUNTED_NONTRIVIAL_DESTRUCTOR(Name)
 
SingletonContainerAdaptor(IMP::internal::PointerBase< C > c)
 
ParticleIndexes get_indexes(const ParticlesTemp &ps)
Get the indexes from a list of particles. 
 
Abstract class for containers of particles.