00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef IMPCORE_UTILITY_H
00010 #define IMPCORE_UTILITY_H
00011
00012 #include "core_macros.h"
00013 #include "core_config.h"
00014 #include "XYZR.h"
00015 #include <IMP/base_types.h>
00016 #include <IMP/algebra/Segment3D.h>
00017 #include <IMP/algebra/Transformation3D.h>
00018 #include <IMP/Model.h>
00019 #include <IMP/Particle.h>
00020
00021 IMPCORE_BEGIN_NAMESPACE
00022
00023
00024
00025 IMPCOREEXPORT algebra::VectorD<3> get_centroid(const XYZsTemp &ps);
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 template <class Container>
00047 class EditGuard: public RAII {
00048 IMP::internal::OwnerPointer<Container> c_;
00049 public:
00050 IMP_RAII(EditGuard, (Container *c),,
00051 {
00052 if (!c->get_is_editing()) {
00053 c_= IMP::internal::OwnerPointer<Container>(c);
00054 c_->set_is_editing(true);
00055 }
00056 },
00057 if (c_) c_->set_is_editing(false);
00058 )
00059 };
00060
00061 IMPCORE_END_NAMESPACE
00062
00063 #endif