Any pointers on how to minimise the pain of reading the code?
Aspirin 
Errm, seriously, not really, other than perhaps just focussing on one
area of the code. I tend to mostly focus on the database stuff, and have
recently started looking at memory leaks with the aid of Instruments.app
on MacOS, which does facilitate somewhat the fingerpointing and blaming
game for the bits of code it considers "wrong". Not that it always gets
it right mind.
With the database code, I started occasionally perusing the driver
classes when I was still using OpenOffice.org and trying to understand
how they were constructed and how they were intended to function. I held
the vain hope of developing my own driver class at the time (but for
which db backend I fail to recall now), realising very quickly that it
was out of my league, so I just kept opening up the cxx files and
scrolling through them, and then forgetting most of what I'd found
interesting as soon as I'd closed it. At the time, I was also subscribed
to the dba mailing list for OpenOffice.org where the devs from Sun
frequently intervened to explain this or that function, and parts of the
API. Unfortunately, the dba code side of things is heavily
undersubscribed in the behemoth project that is LibreOffice today in
terms of human investment, there is but one dba code caretaker who has a
dayjob other than helping out with LO, and a few other occasional
committers, mostly people working for Linux distros to fix bugs, or
GSOC-ing, thereby making it difficult to have increasing in-depth
knowledge and insights. That knowledge kind of tends to be assumed.
I would probably need several lifetimes to become proficient enough in
programming in C++ to be able to even dream of understanding each time
what is going on. I'd say, even with the amateur knowledge I have
currently, it has taken me more than 10 years of repeated blank staring
at lines of code to even start to comprehend, sadly...
Anyway, we are seriously digressing from the initial topic, so I'll stop
here...
Alex