Before I dive into this caching stuff I'd like to finish the preview clean-up that started it off.
The code below iterates over only "top level" insets that are owned directly by the Buffer. void Previews::generateBufferPreviews(Buffer const & buffer) const { PreviewLoader & ploader = loader(&buffer); Buffer::inset_iterator it = buffer.inset_const_iterator_begin(); Buffer::inset_iterator end = buffer.inset_const_iterator_end(); for (; it != end; ++it) { (*it)->addPreview(ploader); } ploader.startLoading(); } How should I loop over all insets? Do I: 1. Loop from outside for (; it != end; ++it) { (*it)->addPreview(ploader); // add some sub-loop } 2. Overload addPreview in container insets (text, tabular, collapsable any more?) Regards, Angus Incidentally, what's the preferred STL algorithm for for (; it != end; ++it) { (*it)->addPreview(ploader); } ?