On Tuesday, 12 January 2016 at 10:43:40 UTC, Russel Winder wrote:
On Tue, 2016-01-12 at 08:12 +0000, Atila Neves via
Digitalmars-d wrote:
On Monday, 11 January 2016 at 17:25:26 UTC, Russel Winder
wrote:
> I am guessing that people have an answer to this:
>
> D making use of a C API needs a D module adapter. This can
> either be constructed by hand (well it can, but…), or it can
> be auto generated from the C header files and then hand
> massaged (likely far better). I think the only tool for this
> on Linux is DStep.
>
> This is all very well for a static unchanging API, but what
> about C APIs that are generated from elsewhere? This
> requires constant update of the D modules. Do people just do
> this by hand?
>
> Is the pain of creating a V4L D module set worth the effort
> rather than just suffering the pain of writing in C++?
This is the kind of thing I wrote reggae for. CMake is an
alternative, but I'd rather write D than CMake script.
CMake scripts are hideous in that the language is like nothing
else, other than perhaps m4 macros. They should have used Lisp.
Or Python.
I must try Reggae at some stage, but for now I need to progress
this Me TV rewrite. D and Rust provide so many barriers to
effective use of a C library, that I am resorting to using C++.
Yes you have to do extra stuff to avoid writing C code, but
nowhere near the amount you have to to create D and Rust
adaptors.
What's so hard about writing a few function prototypes, aliases
and enums? It's annoying that we have to do it, but compared to
writing the rest of a project it's always going to be a tiny
amount of work.
For a lot of projects you can only bind what you actually need, I
often just pretend that I have already written the bindings then
write whatever lines are necessary to get it to compile!