Code reuse via preprocessing

Unconventional use of the C preprocessor, spotted in GNUstep's FoundationKit (GNUstep-base): GSConcreteValueTemplate.m.

GSConcreteValue.m includes it like this:

#define TYPE_ORDER 0
#include "GSConcreteValueTemplate.m"
#undef TYPE_ORDER

#define TYPE_ORDER 1
#include "GSConcreteValueTemplate.m"
#undef TYPE_ORDER

// [...]

#define TYPE_ORDER 5
#include "GSConcreteValueTemplate.m"
#undef TYPE_ORDER

So now? svn praise or svn blame?