Most of the code in the modules in the Code directory were related to the contents of the modules and not to their code. Therefore they were moved to a seperate directory named Modules.
The rest of the name would be spelled out when the name didn't start with a letter.
execRawPBuilder -> runBuilder unwrapNameBuilder -> unwrapNameM As these names are more suitable.
The modules are now build out of parts. These parts can then later be used to generate the real code.
There shouldn't be any duplicate exports after the previous fix, so that warning is reabled. The unused-imports is needed for some modules where Foreig.C.Types is imported but not used as it only defines functions of type IO (). These warnings can be (I think) safely ignored. All the other warnings indicate that something has gone wrong and should therefore be treated as errors.
The Package builder monad from Code.Generating will probably be moved or deleted in the future. Furthermore as it is old code from a period with less experience I don't like it any more. Therefore it is replaced by a Writer monad over lists of modules (with some extra information), which are all defined in Code.Builder. As a result of the rewrite several differences showed up between the reference and the output. This was due to merging of the deprecated and normal versions of category modules. This is fixed by adding "Compatibility" to the modules with deprecated contents.
The build script uses the sources from BuildSources to create and build the OpenGLRawTest package containing the supplied output. The reference archiver compiles every reference source. If this sucseeds then the reference source is archived.
It collided with the used -g for generating group modules. The -g was not very special to the gl.spec while -g and -G were for groups. So the -f is assigned to the spec as it supplies the [f]unctions.
This hopefully prevents the previous commit from 'being late'.
whenOption and unlessOption should be present regardless of the monad ontop of the RawGenMonad.
The locations and names of specific modules were part of Code.Builder. As this module was getting quite large and the resolving of names should not depend on the builders the naming is moved to it's own module.
- Adds the implementation of most of the class lifing of mtl. - Adds an Identity and an IO type alias for the transformer. - Changes the Builders to use the new features