Ok I know it's v 0.0.1, but I think this bugs are not so
difficult to fix:
- d keywords should be escaped => (for example int f(int out)
should become int f(int _out) or something similar...)
- self alias should be removed => typedef test { int a; } test;
generate alias test test; struct test { int a; };
- struct gives error if used on function ( "xxxx is used as a
type")
- variadic function gives errors: "Error: variadic functions with
non-D linkage must have at least one parameter"
:)
On Saturday, 7 July 2012 at 14:47:49 UTC, Jacob Carlborg wrote:
DStep is a tool for translating C and Objective-C headers to D
modules. It uses libclang for lexing/parsing and AST traversal.
This means it handles everything that Clang itself can handle,
although this doesn't mean it will correctly translate
everything.
I would consider this release alpha or beta. I'm releasing this
now in hope I get some feedback on what language features the
tool can't handle.
The tool is available at github:
https://github.com/jacob-carlborg/dstep
Binaries are available for Mac OS X and Ubuntu 11.10 32bit:
https://github.com/jacob-carlborg/dstep/downloads
Unfortunately I haven't been able to successfully compile it on
Windows due to Optlink not cooperating. I'll most likely
provide Linux binaries with better compatibility later.
Build instructions are available at github.
Usage:
dstep <input-file.h> -o output_file.d
For Objective-C
dstep <input-file.h> -o output_file.d -ObjC
Tests:
DStep uses Cucumber and Aruba (Ruby tools) to run its tests. It
will basically run the tool on all *.h files in the
"test_files" directory and compare the results to the
corresponding *.d files.
Known issues/missing functionality:
* Multiple input files
* Framework as input file
* Add module declaration
* Option for specifying before and after code
* Option for specifying package
* Windows support
C:
* Self includes
* Out of order typedefs of structs
* Bitfields
* Non-standard extensions
* Preprocessor
* Arrays with no size marked as "extern".
Objective-C:
* Protocols
* Properties
* Blocks
* Categories
* Actions
* Outlets
* Selectors
This is basically what's on the todo list:
https://raw.github.com/jacob-carlborg/dstep/master/todo.taskpaper
There's no point in reporting issues which are listed above.