#590: hsc2hs: quoting of macro arguments containing commas
-------------------------------------------------------+--------------------
Reporter: Dimitry Golubovsky <[EMAIL PROTECTED]> | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: None | Version: 6.4.1
Severity: minor | Keywords:
-------------------------------------------------------+--------------------
{{{
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
}}}
--
Ticket URL: <http://cvs.haskell.org/trac/ghc/ticket/590>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs