DistanceRestraint now takes a pair of ParticleIndexes and a ScoreFunc
which it then owns.
On this subject, did you make any more progress with the reference
counting code? It seems like this would be a obvious candidate for
reference counting (e.g. an excluded volume may create thousands of
distance restraints, all of which share a single scoring function by
increasing its reference count). I seem to recall that you were stuck at
the Python interface. If this is still the case, I can take a look, as I
(probably) know a bit about the SWIG internals.
If others think reference counting of IMP objects is a bad idea, now's
the time to say...