This patch "modernizes" DNA_struct_switch_endian similar to how I updated DNA_struct_reconstruct recently. Furthermore, some special case handling has been moved/removed.
Unfortunately, I don't have any 64 bit big endian file to test this with. Our tests don't contain such a file, it's probably quite a rare combination in general...
The first special case that I moved somewhere else is the blocktype member. It was used by the old animation system and was not supposed to be endian switched. Now it is endian switched in the generic code and then switched back during direct linking. Something similar is done in other cases as well. For example IDP_DirectLinkProperty.
Secondly, the way pointers were endian switched before was confusing. Sometimes they were switched and sometimes not depending on different factors. Now, they are always switched when the endianness is different, and never switched when the endianness is the same.