On 02.04.2009, at 11:34, Duncan Coutts wrote:
It was pointed out to me yesterday that it would be rather useful if
c2hs could automatically work out if the ffi import for a {# call/ fun #}
hook should be ccall or stdcall calling convention
...
So the first job would be for Language.C to keep the __attribute__'s in
the abstract syntax tree. They already get parsed, but at least last
time I looked they were not entered into the AST.
Hi Duncan,

language.c records attributes already :) (implemented during SoC last year).

See: 
http://hackage.haskell.org/packages/archive/language-c/0.3.1.1/doc/html/Language-C-Syntax-AST.html#t%3ACAttr

examples $ cat test.i
__attribute__((__stdcall__)) int f();
examples $ ./ParseAndPrint test.i
__attribute__((__stdcall__)) int f();

In the AST, this kind of attribute is recorded like this:

* CDecl
  * declspecs-list
    + CTypeQual
       + CAttrQual
           * CAttr "__stdcall__" [] nodeinfo
  *  declr-list
  *  nodeinfo

The attribute syntax
is pretty uniform so a generic representation in the AST would be fine.
Any code that interpreted the attributes would just have to match on
known string values.
Right, it is easy to check whether the "stdcall" attribute is present.
Is the current language.c support sufficient for implementing this request ?

benedikt


_______________________________________________
C2hs mailing list
C2hs@haskell.org
http://www.haskell.org/mailman/listinfo/c2hs

Reply via email to