IMP logo
IMP Reference Guide  2.14.0
The Integrative Modeling Platform
AllPairContainer.h
Go to the documentation of this file.
1 /**
2  * \file IMP/container/AllPairContainer.h
3  * \brief Return all pairs from a SingletonContainer
4  *
5  * Copyright 2007-2020 IMP Inventors. All rights reserved.
6  */
7 
8 #ifndef IMPCONTAINER_ALL_PAIR_CONTAINER_H
9 #define IMPCONTAINER_ALL_PAIR_CONTAINER_H
10 
11 #include <IMP/container/container_config.h>
12 #include <IMP/generic.h>
13 #include <IMP/PairContainer.h>
14 #include <IMP/SingletonContainer.h>
16 #include <IMP/Pointer.h>
17 #include <IMP/pair_macros.h>
18 IMPCONTAINER_BEGIN_NAMESPACE
19 
20 //! Return all unordered pairs of particles taken from the SingletonContainer
21 /* \see AllBipartitePairContainer, ClosePairContainer,
22  CloseBipartitePairContainer for variants on the functionality provided.
23  */
24 class IMPCONTAINEREXPORT AllPairContainer : public PairContainer {
26 
27  protected:
28  virtual std::size_t do_get_contents_hash() const IMP_OVERRIDE {
29  return c_->get_contents_hash();
30  }
31 
32  public:
33  template <class F>
34  void apply_generic(F* f) const {
35  validate_readable();
36  const ParticleIndexes& pis = c_->get_contents();
37  for (unsigned int i = 0; i < pis.size(); ++i) {
38  for (unsigned int j = 0; j < i; ++j) {
39  f->apply_index(get_model(), ParticleIndexPair(pis[i], pis[j]));
40  }
41  }
42  }
43  //! Get the individual particles from the passed SingletonContainer
45  std::string name = "AllPairContainer%1%");
52 };
53 
55 
56 IMPCONTAINER_END_NAMESPACE
57 
58 #endif /* IMPCONTAINER_ALL_PAIR_CONTAINER_H */
virtual ParticleIndexPairs get_range_indexes() const =0
A shared container for Pairs.
Definition: PairContainer.h:37
Macros for various classes.
A container for Singletons.
void apply_generic(const PairModifier *m) const
Just use apply() in the base class.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
Return all unordered pairs of particles taken from the SingletonContainer.
#define IMP_PAIR_CONTAINER_METHODS(Name)
Definition: pair_macros.h:117
A container for Pairs.
A smart pointer to a ref-counted Object that is a class member.
Definition: Pointer.h:146
Store a list of ParticleIndexPairs.
#define IMP_OBJECTS(Name, PluralName)
Define the types for storing lists of object pointers.
Definition: object_macros.h:44
A nullptr-initialized pointer to an IMP Object.
virtual ParticleIndexes get_all_possible_indexes() const =0
Get contained particles.
virtual ParticleIndexPairs get_indexes() const =0
virtual ModelObjectsTemp do_get_inputs() const =0
#define IMP_OVERRIDE
Cause a compile error if this method does not override a parent method.
Various important functionality for implementing decorators.