Instead of making system or portable file readers responsible for
dropping and reordering variables, make them read full cases and
let the caller take care of any changes.
Instead of providing a system or portable file writer with a raw
case in the format needed for output, provide it with a regular
case. The writer takes care of any needed translation.
Instead of treating `struct file_handle' as a class to subclass
into data files, system files, and portable files, instead use it
as a helper that coordinates access. Now it is opaque, too.
Break dictionary functions into separate header file.
Get rid of procedure-specific union in struct variable, using
instead a void * pointer and a destructor function.
86 files changed: