They already are, but hardly anything supports the save function, so it's rare for datatypes to implement it (this one doesn't, although I suspect it's about two lines of code so I can add it if you have a need for it?)
By bidirectional I mean saving in the same format the datatype decodes, that is to say, every datatype subclass as a
codec. Every time I've saved a datatype, I've got an IFF file.
Ideally, one would be able to get a list of available subclasses from the parent class. You could then pick one and ask the datatype system to export data in that format.