Suggestion for hsc2hs (structures with commas)

I came across the following issue in hsc2hs: when requesting a size of a C structure with #size (or similarly this may apply to #peek, #poke, #offset macros), and the structure is declared "anonymously", and contains multiple field declaration of the same type such as: struct {int ab,cd;} then #size(struct {int ab,cd;}) will result in hsc_size(struct {int ab,cd;}) which will fail because of the comma inside the structure makes the macro recognize 2 arguments instead of 1. GCC's preprocessor allows variadic macros defined like #define __quote__(x...) x If hsc_size is called: hsc_size(__quote__(struct {int ab,cd;})) then error does not occur. Similarly: hsc_peek(__quote__(struct {int ab,cd;}),cd) because __quote__ is scanned first, and its result is treated as a single argument. I looked through cpp.info, but could not find any other way to quote macro arguments. Is it possible to update hsc2hs (Main.hs I believe) to emit macro calls involving C types in the way described above? i. e. #size(t) becomes hsc_size(__quote__(t)), #peek(t,f) becomes hsc_peek(__quote__(t),f) etc. when hsc2hs generates the C file from a hsc source. PS I am working with hsc2hs from the GHC 6.2.2 distribution. I couldn't find such fixes in the changelog since then. I believe, the person maintaining hsc2hs might be able to implement these fixes faster than if I tried. PPS This will work with GCC, but I am not sure abouth other compilers (like Microsoft C) -- Dimitry Golubovsky Anywhere on the Web
participants (1)
-
Dimitry Golubovsky