The load name is misleading. Ignore it and pretend these files were called activatorrecord.hpp, weaponrecord.hpp and such. Just add sa save/write function to each of these.*Phew*
Anyway, should I create a set of save<whatever> classes or just add a save function to the load<whatever> ones that already exist?
And on that matter, is all the data that needs to be saved contained in those files, or are there any cases where I have to read the data from somewhere else?
There are a few special cases to consider. The actual cell content (the objects in the cell)) is stored outside of the ESM recrod structure, but loadcell.hpp offers a CellRef structure for it. This struct also needs a save function.
The land record file has an additional struct LandData. This data currently is stored in the main record (which is wrong; but we can fix that later). LandData will also need a save function.
And when this is all done, we also need a way to test the correctness of loading/saving (probably best implemented in the ESM tool, which will require a bit of clean up first). But we will get to that when you are done with the save functions.