// oh yeah, and the C-part void cbSpaceEachPointerCallback(void *pointer, /*body,shape,contraint*/ C_word *data /*callback closure*/) { C_word *ptr = C_alloc (C_SIZEOF_POINTER); C_word sp = C_mpointer (&ptr, pointer); C_word old = *data; C_save (sp); *data = C_callback(*data, 1); //printf ("old = %X\tnew = %X\n", old, *data); } void forEachShape (cpSpace *space, C_word callback) { cpSpaceEachShape (space, cbSpaceEachPointerCallback, &callback); }