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