IMP  2.2.1
The Integrative Modeling Platform
AllBipartitePairContainer.h
Go to the documentation of this file.
1 /**
2  * \file IMP/container/AllBipartitePairContainer.h
3  * \brief Return all pairs from a SingletonContainer
4  *
5  * This file is generated by a script (core/tools/make-container).
6  * Do not edit directly.
7  *
8  * Copyright 2007-2014 IMP Inventors. All rights reserved.
9  */
10 
11 #ifndef IMPCONTAINER_ALL_BIPARTITE_PAIR_CONTAINER_H
12 #define IMPCONTAINER_ALL_BIPARTITE_PAIR_CONTAINER_H
13 
14 #include <IMP/container/container_config.h>
15 
16 #include <IMP/PairContainer.h>
17 #include <IMP/SingletonContainer.h>
20 #include <IMP/pair_macros.h>
21 #include <IMP/singleton_macros.h>
22 #include <boost/functional/hash/hash.hpp>
23 
24 IMPCONTAINER_BEGIN_NAMESPACE
25 
26 //! Return all bipartite pairs between two containers
27 /** See also AllPairContainer, ClosePairContainer,
28  CloseBipartitePairContainer for variants on the functionality provided.
29  */
30 class IMPCONTAINEREXPORT AllBipartitePairContainer : public PairContainer {
32 
33  protected:
34  virtual std::size_t do_get_contents_hash() const IMP_OVERRIDE {
35  std::size_t ret = a_->get_contents_hash();
36  boost::hash_combine(ret, b_->get_contents_hash());
37  return ret;
38  }
39 
40  public:
41  template <class F>
42  void apply_generic(F* f) const {
43  validate_readable();
44  IMP_FOREACH(ParticleIndex pa, a_->get_contents()) {
45  IMP_FOREACH(ParticleIndex pb, b_->get_contents()) {
46  f->apply_index(get_model(), kernel::ParticleIndexPair(pa, pb));
47  }
48  }
49  }
50  AllBipartitePairContainer(SingletonContainerAdaptor a,
51  SingletonContainerAdaptor b,
52  std::string name = "AllBipartitePairContainer%1%");
53  virtual kernel::ParticleIndexPairs get_indexes() const IMP_OVERRIDE;
54  virtual kernel::ParticleIndexPairs get_range_indexes() const IMP_OVERRIDE;
55  virtual kernel::ModelObjectsTemp do_get_inputs() const IMP_OVERRIDE;
56  virtual kernel::ParticleIndexes get_all_possible_indexes() const IMP_OVERRIDE;
59 };
60 
62 
63 IMPCONTAINER_END_NAMESPACE
64 
65 #endif /* IMPCONTAINER_ALL_BIPARTITE_PAIR_CONTAINER_H */
virtual ParticleIndexes get_all_possible_indexes() const =0
Get contained particles.
Import IMP/kernel/pair_macros.h in the namespace.
Import IMP/kernel/SingletonContainer.h in the namespace.
A smart pointer to a ref-counted Object that is a class memeber.
Definition: base/Pointer.h:147
Store a set of PairContainers.
#define IMP_PAIR_CONTAINER_METHODS(Name)
virtual kernel::ParticleIndexPairs get_indexes() const =0
Import IMP/kernel/singleton_macros.h in the namespace.
A shared container for Pairs.
A class to store an fixed array of same-typed values.
Definition: base/Array.h:33
Import IMP/kernel/PairContainer.h in the namespace.
virtual kernel::ParticleIndexPairs get_range_indexes() const =0
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Store a list of kernel::ParticlePairsTemp.
#define IMP_OBJECTS(Name, PluralName)
Define the types for storing sets of objects.
void apply_generic(const PairModifier *m) const
Just use apply() in the base class.
virtual ModelObjectsTemp do_get_inputs() const =0
Return all bipartite pairs between two containers.