I finally got fed up with confusing the sp_object_{request,invoke} methods, so I gave them more descriptive names, made them real C++ methods, cleaned up internal comments, and documented them somewhat.
Quick overview of what became what:
sp_object_invoke_write -> SPObject::updateRepr sp_object_request_update -> SPObject::requestDisplayUpdate sp_object_invoke_update -> SPObject::updateDisplay sp_object_request_modified -> SPObject::requestModified sp_object_invoke_modified -> SPObject::emitModified
There are now two versions of SPObject::updateRepr() -- the two-argument version lets you specify a repr; the single-argument version works on the repr attached to the object (and defaults to flags of SP_OBJECT_WRITE_EXT if you don't specify).
This means that most of the time when you just want to push changes down to the SPObject's repr, you only need to call object->updateRepr() with no arguments and it'll do the right thing.
Other than that, given the massive scale of the change (see the ChangeLog), I've tried to resist making any other major changes.
Given that changes touch a very large portion of the tree you'll all probably find yourselves rebuilding quite a lot of files. Sorry about that. ^^;
Also note that if you've written any new code using the old C methods, it should still work for now (I left wrappers in place), but you will get deprecation warnings. So rewrite that soon, I'll be pulling the wrappers in a day or two.
-mental