Note: this is more of a maintenance/design problem than a bug.
wxWidgets contains a lot of constants that must be copied in wxHaskell; they are created with #define or enum. There are several problems keeping synchronized:
1. There are many constants in wxWidgets (currently, wxcore contains a list of 2756 constants)
2. They might be changed at every release
3. Their values might depend on build settings, OS or compiler
Is it possible to automate this?
Consider the following enum:
enum blah
{
wxFIRST = 0,
#ifdef _X_
wxSECOND,
#endif
wxTHIRD,
wxEND
};
This should be translated to the following Haskell code:
-- Enum blah from file wxWidgets/......
wxFIRST :: Int
wxFIRST = 0
#ifdef _X_
wxSECOND :: Int
wxSECOND = 1
wxTHIRD :: Int
wxTHIRD = 2
wxEND :: Int
wxEND = 3
#else
wxTHIRD :: Int
wxTHIRD = 1
wxEND :: Int
wxEND = 2
#endif
_X_ is a macro that might indicate which compiler is used, in which OS it is compiled, or be a build setting; the macro definitions, available during wxWidgets build, will not all be available during wxHaskell build.