I am not sure where an external epg is loaded for something like cross epg, so I will have to look into that. That being said the side affects of changing the data format are that previous dat may no longer be compatible.
I think we should not worry about breaking the epg.dat format.
external epg should not abuse the epg.dat dump to 'import' epg data, we have far better methods for that.
There is a small bug in the eventData desctructor
CacheSize -= it->second.second[1];
Should be
CacheSize -= (it->second.second[1] -2);
CacheSize is only cosmetic, isn't it?