00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef IMPCONTAINER_CLOSE_BIPARTITE_PAIR_CONTAINER_H
00012 #define IMPCONTAINER_CLOSE_BIPARTITE_PAIR_CONTAINER_H
00013
00014 #include "container_config.h"
00015 #include <IMP/core/ClosePairsFinder.h>
00016 #include <IMP/core/internal/MovedSingletonContainer.h>
00017 #include <IMP/PairContainer.h>
00018 #include <IMP/PairFilter.h>
00019 #include <IMP/SingletonContainer.h>
00020 #include <IMP/container/ListPairContainer.h>
00021 #include <IMP/container/PairContainerSet.h>
00022 #include <IMP/core/internal/pair_helpers.h>
00023
00024 IMPCONTAINER_BEGIN_NAMESPACE
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 class IMPCONTAINEREXPORT CloseBipartitePairContainer:
00036 #if defined(IMP_DOXYGEN) || defined(SWIG)
00037 public PairContainer
00038 #else
00039 public IMP::core::internal::ListLikePairContainer
00040 #endif
00041 {
00042 typedef IMP::core::internal::ListLikePairContainer P;
00043 IMP::internal::OwnerPointer<SingletonContainer> a_, b_;
00044 IMP::internal::OwnerPointer<core::ClosePairsFinder> cpf_;
00045 IMP::internal::OwnerPointer<core::internal::MovedSingletonContainer>
00046 moveda_, movedb_;
00047 bool first_call_;
00048 double distance_, slack_;
00049 IMP_ACTIVE_CONTAINER_DECL(CloseBipartitePairContainer);
00050 void initialize(SingletonContainer *a,
00051 SingletonContainer *b, double distance,
00052 double slack, Model *m, core::ClosePairsFinder *cpf);
00053 public:
00054
00055 CloseBipartitePairContainer(SingletonContainer *a,
00056 SingletonContainer *b,
00057 double distance,
00058 double slack=1);
00059
00060 CloseBipartitePairContainer(SingletonContainer *a,
00061 SingletonContainer *b,
00062 Model *m, double distance,
00063 double slack=1);
00064
00065
00066 CloseBipartitePairContainer(SingletonContainer *a,
00067 SingletonContainer *b,
00068 double distance,
00069 core::ClosePairsFinder *cpf,
00070 double slack=1);
00071
00072 CloseBipartitePairContainer(SingletonContainer *a,
00073 SingletonContainer *b,
00074 Model *m, double distance,
00075 core::ClosePairsFinder *cpf,
00076 double slack=1);
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086 IMP_LIST(public, PairFilter, pair_filter,
00087 PairFilter*, PairFilters);
00088
00089
00090 #if defined(IMP_DOXYGEN) || defined(SWIG)
00091 IMP_PAIR_CONTAINER(CloseBipartitePairContainer);
00092 #else
00093 IMP_LISTLIKE_PAIR_CONTAINER(CloseBipartitePairContainer);
00094 #endif
00095 };
00096
00097
00098 IMPCONTAINER_END_NAMESPACE
00099
00100 #endif