8 #ifndef IMPKERNEL_REFINER_H 
    9 #define IMPKERNEL_REFINER_H 
   11 #include <IMP/kernel_config.h> 
   14 #include "internal/IndexingIterator.h" 
   19 IMPKERNEL_BEGIN_NAMESPACE
 
   22 class DerivativeAccumulator;
 
   47   Refiner(std::string name = 
"Refiner %1%", 
bool is_by_ref = 
false);
 
   85                     "This refiner does not support" 
   86                      " get_refined_indexes_by_ref()",
 
  100     return get_refined(a)[i];
 
  106     return get_refined(a).size();
 
  116   typedef internal::IndexingIterator<Accessor> RefinedIterator;
 
  117   RefinedIterator refined_begin(
Particle *a) 
const;
 
  118   RefinedIterator refined_end(
Particle *a) 
const;
 
  125 #if !defined(SWIG) && !defined(IMP_DOXYGEN) 
  126 struct Refiner::Accessor {
 
  132   typedef Particle *result_type;
 
  133   Particle *operator()(
unsigned int i)
 const { 
return r_->get_refined(p_, i); }
 
  134   bool operator==(
const Accessor &o)
 const { 
return p_ == o.p_ && r_ == o.r_; }
 
  138 inline Refiner::RefinedIterator Refiner::refined_begin(Particle *a)
 const {
 
  139   return RefinedIterator(Accessor(a, 
this), 0);
 
  141 inline Refiner::RefinedIterator Refiner::refined_end(Particle *a)
 const {
 
  142   return RefinedIterator(Accessor(a, 
this), get_number_of_refined(a));
 
  145 IMPKERNEL_END_NAMESPACE
 
Control display of deprecation information. 
 
virtual Particle * get_refined(Particle *a, unsigned int i) const 
Get the ith refined particle. 
 
Base class for objects that take particle arguments and read from them. 
 
A more IMP-like version of the std::vector. 
 
Class for storing model, its restraints, constraints, and particles. 
 
virtual bool get_can_refine(Particle *) const 
Return true if this refiner can refine that particle. 
 
Common base class for heavy weight IMP objects. 
 
#define IMP_UNUSED(variable)
 
Classes used in the construction of ModelObjects. 
 
virtual unsigned int get_number_of_refined(Particle *a) const 
 
Classes to handle individual model particles. (Note that implementation of inline functions is in int...
 
#define IMP_OBJECTS(Name, PluralName)
Define the types for storing lists of object pointers. 
 
Helper macros for throwing and handling exceptions. 
 
Abstract class to implement hierarchical methods. 
 
Class to handle individual particles of a Model object. 
 
bool get_is_by_ref_supported()
 
#define IMP_ALWAYS_CHECK(condition, message, exception_name)
Throw an exception if a check fails. 
 
An exception for an invalid value being passed to IMP.