I would suggest a conversion table for PDG IDs < 1000 and a std::map for everything above. This ensures a fast conversion for the most common particles while not wasting too much memory.
...since you assigned yourself to this task: are you planning to provide a solution in the next days? This is a blocker for a few other things. Otherwise, I would look into this.
I am not sure if this will ever be relevant. At least for PYTHIA right now nuclei are not interesting, in particular not for decays.
But I think the conversion is very simple. All generic nuclei are Code::Nucleus this is super-generic. Of course when you want to do something reasonable with Nucleus you will have to read/write A, Z etc. explicitly in your respective particle data code. But this should always be possible. We probably need a few extra "converter tool functions" like "unsigned int GetMassNumberFromPDG(PDGCode c) {return c/10%1000; } etc.