Restarting events using the C++ API

I am trying to figure out how to restart events using the C++ API, ie not using macros. I would also prefer to do read it from a string, instead of reading from the run{%d}evt{%d}.rndm files.

As far as I can tell from looking at G4WorkerTaskRunManager::GenerateEvent(), the first user action after setting the seed is GeneratePrimaries(). It seems that my only option is to save and restore the random engine status at the beginning of GeneratePrimaries(). Am I correct?