DStep - Bindings Generator 0.0.1

Jonathan Andrew jonfandrew at gmail.com
Tue Jul 10 17:38:39 PDT 2012


On Monday, 9 July 2012 at 06:30:39 UTC, Jacob Carlborg wrote:
> On 2012-07-08 23:22, Jonathan Andrew wrote:
>
>> Jacob,
>
>> The only disadvantage to the single-file limitation is that in 
>> the case
>> of GTK at least, it has preprocessor directives to keep you 
>> from just
>> #include-ing the single file you want to convert, so I just 
>> used sed to
>> strip out all the #error directives that come up and force it 
>> to do my
>> bidding. I understand DStep doesn't deal with preprocessor 
>> yet, but as
>> far as the CLang front-end it uses goes, it might be helpful 
>> to find a
>> way to turn off #error-s.
>
> I had no idea about that.
>
>> sed -i 's/#error/\/\//g' *.h
>>
>> The next step was to rename all the D reserved words that GTK 
>> used as
>> function arguments - in, out, function, and align are the only 
>> ones I
>> can think of off the top of my head. Easy fix for the user (by 
>> no means
>> am I complaining), but if you want to streamline the 
>> conversion,
>> automatically renaming these kinds of arguments might be a 
>> helpful option.
>
> I thought the tool did that already.
>
>> Then, renaming all the duplicate empty struct{} entries in 
>> some of the
>> files. You already know about this, but it was probably the 
>> most
>> time-consuming part of the process for converting GTK, at 
>> least. I
>> couldn't think of an easy way to automate this on my end, 
>> because some
>> of the empty structs were necessary to get it to compile.
>
> I thought I had fixed this too. I'll have to take a look.
>
>> Finally, putting import statements in all the .d files after I 
>> was done.
>> Still a long way to go on this (500 files).
>>
>> Sorry for the long post, this is probably obvious stuff to 
>> everybody
>> else, but I was really impressed with DStep - thank you for 
>> creating it!
>
> No it's good, this is just what I wanted people to do. It would 
> be great if you could report these issues:
>
> https://github.com/jacob-carlborg/dstep/issues
>
> If you have a simple test case or a header I can try that would 
> be great.

OK, as far as the empty struct-s, it looks like it has to do with 
typedef struct.
-------------------------------------------------------
//Test.h:

typedef struct _Booger Booger;

//Results in:

-------------------------------------------------------
//Test.d:

extern (C):

alias _Booger Booger;

struct _Booger
{
}

-------------------------------------------------------

If the .h has:

typedef struct _Booger Booger;

struct Booger
{
    int a;
};

The .d will have both the incorrect empty struct and the correct 
one with the "int a;" declaration.
extern (C):

alias _Booger Booger;

struct _Booger
{
}

struct _Booger
{
    int a;
}

Thanks,
    Jon


More information about the Digitalmars-d-announce mailing list