Jacob Carlborg wrote:
> On 2012-07-14 05:24, Jens Mueller wrote:
> >Hi,
> >
> >there is some documentation on writing a Deimos interface.
> >E.g.
> >http://prowiki.org/wiki4d/wiki.cgi?LanguageDevel/DIPs/DIP12
> >http://dlang.org/interfaceToC.html
> >
> >I'd like to get a list of rules that one has to follow.
> >
> >First you have to convert the name of the header file to a valid D
> >module name. Therefore, I found/came up with the following rules:
> >* a slash (/) has to be replaced by a dot (.)
> >* a dash (-) has to be replaced by a dot (.)
> >* a D keyword gets a underscore (_) appended
> >
> >Maybe someone can commented on them. I suppose there are even more.
> >These are just the ones I encountered.
> >
> >Some questions on module names I could not find a definite answer for:
> >1. The D page says they should be lower case. Should Deimos module names
> >    also be made lower case?
> >2. Should all interfaces be put in a common package, say deimos?
> >
> >Translating the header file itself is pretty straightforward following
> >http://dlang.org/interfaceToC.html. Though some cases are not covered:
> >* E.g. use core.stdc.stdint for standard C types.
> 
> I would say that when a C typedef has a corresponding type in D, use
> that instead of an alias. For example:
> 
> int8_t -> use byte
> int32_t -> use int
> 
> But one need to make sure that the typedef resolves to the same D
> type on all platforms.

By using core.stdc.stdint I'm safe, right? I mean int8_t is just an
alias in core.stdc.stdint. I'd like to change the header file as little
as possible.

> >* const T* should be replaced with const(T)*
> >* How to deal with macros?
> >
> >Can we write a recipe like guide for writing a Deimos interface?
> 
> You can have a look at dstep for automatically translate
> C/Objective-C headers: https://github.com/jacob-carlborg/dstep

Usually, the changes are straightforward. It's just these little things
where is no clear rule that cost time.

Jens

Reply via email to