January 15, 2005 strategy to reuse C/C++ headers | ||||
---|---|---|---|---|
| ||||
Yow, lads and lasses. I tried to write a script program to convert C/C++ headers into D, but failed. You know, many guys trying so. This seems another critical task for us. Do you have any standard method to reuse C/C++ headers? Is there a flexible and perfect lexical analyzer with extendable multi-status, whose internal tables we can change at run-time? Can XML help us? Yours Faithfully, |
January 15, 2005 Re: strategy to reuse C/C++ headers | ||||
---|---|---|---|---|
| ||||
Posted in reply to CrazyJapG-ManKiller | CrazyJapG-ManKiller wrote: > I tried to write a script program to convert C/C++ headers into D, but failed. > You know, many guys trying so. This seems another critical task for us. There are a few "hints" at http://www.digitalmars.com/d/htomodule.html, as well as a note at http://www.digitalmars.com/d/dcompiler.html#general > Bugs > These are some of the major bugs: [...] > * Need to write a tool to convert C .h files into D imports. There are a few projects, such as http://www.dsource.org/projects/h2d/ and the ones at http://svn.dsource.org/svn/projects/bindings/trunk/ > Do you have any standard method to reuse C/C++ headers? I didn't have much luck with the h2d requirements (boost, stl) so I wrote my own little Perl hack with the most common ones... http://www.algonet.se/~afb/d/h2d.pl It's not very clever, and needs a lot of cleaning up afterwards. But I've used it to convert the entire OpenGL and SDL headers... **** D also needs a tool to convert regular modules into "import modules", such as the ones used by e.g. the Phobos runtime code (and others) Import module: object.d Implementation module: internal/object.d The import module only has stubs for linking, not the code: > class Object > { > void print(); > char[] toString(); > uint toHash(); > int opCmp(Object o); > int opEquals(Object o); > } Which makes it similar to a header file, in terms of usage... So that you can ship just the interface, but not the source ? Maybe this little snippet would do: perl -pe 's/\{.*?\}/;/s' --anders |
Copyright © 1999-2021 by the D Language Foundation