blob: c00d31e8eb04dfe918c650565ab383b7f5b72a8c [file] [log] [blame]
1. User interface
- use GNU's long_getopt
- allow to pass input and output files via command line
- add options for various not-yet-implemented features (Unicode, Win32
format, non-native/native alignment and endianness, compact output
format)
2. Input format
- improve input file processing
Currently, certain pre- and postprocessing is required. winerc
should accept an arbitrary resource script and generate the C file
with as little intermediate files as possible. I'm not sure how to
handle the symbols from windows.h. There are certain options:
* winerc predefines the symbols via the cpp command line
* windows.h is #include'd, and the resulting C code is dropped
(Should winerc do C parsing here?)
* a stripped-down version of windows.h is included,
generated by "grep '^#' windows.h"
* windows.h #ifdef's every C code with _RC_INVOKED
(commercial solution)
- complete input syntax
The goal here is to support every existing resource file which is
accepted by another resource compiler, not to put as much fancy
features into the compiler as possible. Every correct resource file
which generates a parse error can be reported as a bug, a problem
analysis and a fix would be appreciated.
3. Output file format
- add missing resources (fonts, versioninfo, stringtables,rcdata)
- check style handling
The semantics of control and dialog styles is somewhat poorly
documented. For example, I couldn't find a reference that every
control has the WS_VISIBLE and WS_CHILD style, even if they are
not specified. What other styles are considered default?
The existance of default styles implies support for disabling these,
unlike any other proper programming language,
NOT WS_VISIBLE | WS_GROUP
does *not* mean ~WS_VISIBLE, but WS_CHILD|WS_GROUP (in C semantics).
What other strange semantics are there?
- check cursor and icon handling
At the moment, the .CUR and .ICO files are copied byte-by-byte into
the C array. This is probably wrong, as there are things like cursor
and icon groups. In which way should they be present in a Wine image?
Should we have arrays for every cursor, as well as the cursor group?
Is one cursor per group enough, in the context of X? If so, do we
still need the group?
- create a more compact output file
The current format is well-suited for debugging, as one can easily
match it with a resource' hex dump. A more compact format would use
strings instead of integer lists. A clever algorithm for embedding
values <32 and >127 is required.
- platform independence
Currently, the lay-out of the resources is just as it is in Win3.1 -
packed structures, little endian. Although this format can be used
on any architecture, aligned data and native endianness would speed-up
the resource manipulation and simplify the code. OTOH, this would
break applications that rely on the lay-out. All this is of interest
for the library version only.
- Win32 support
4. Programming Style
- memory management
No memory is freed in the current implementation.