| WINElib resources: a proposal |
| |
| One of the current issues with WINElib is the inadequate support for accessing |
| resources by name. I propose the following technique (which I have already |
| begun to implement) to allow this: |
| |
| An internal table of resource entries is provided along with a registering |
| function for adding a resource to this table. 'winerc' should construct |
| *.c files much the same way as it does now with the inclusion of a single |
| static 'constructor' function that registers the associated resources with |
| the internal mechanism like so: |
| |
| static void DoIt() __attribute__ ((constructor)); |
| static void DoIt() |
| { |
| LIBRES_RegisterResource(hello3_MENU_MAIN__bytes, |
| sizeof(hello3_MENU_MAIN__bytes), |
| "MAIN", |
| RT_MENU); |
| LIBRES_RegisterResource(hello3_DIALOG_DIADEMO__bytes, |
| sizeof(hello3_DIALOG_DIADEMO__bytes), |
| "DIADEMO", |
| RT_DIALOG); |
| ... etc. ... |
| } |
| |
| The internal table can then be searched for the resource by name. |
| |
| The only potential drawback I've determined so far is this technique's |
| reliance on gcc's 'constructor' attribute, which disallows compilation with |
| some other compiler. However, I'm guessing that WINE is already heavily |
| dependent on gcc, so this is probably not too much of a factor. |
| |
| Any comments/suggestions/criticisms will be greatly appreciated. |
| |
| Thank you, |
| --Jim |