www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Is it possible to translate this API's C headers?

reply spikespaz <spikespaz outlook.com> writes:
There is a project that I wish to use from D 
(https://ultralig.ht).

It's Electron, but with forked WebKit and the samples are very, 
very fast.

This is a great compromise between wanting to have a very custom 
interface and not wanting to use the slow 
Electron/Sciter/Awesomium/WebView.

I am having trouble porting the C headers though. Firstly, I 
barely know C at all, especially not enough to do this. The 
extent of my C knowledge is terminal TicTacToe game I made three 
years ago.

I tried using all of the conversion tools under the "Interfacing 
with C" page of the wiki, but I'm getting import errors. Probably 
because the paths are all using "<>", expecting an include path 
from the compiler. I tried to solve this by refractoring the 
imports to use relative quoted paths.

But even when I fixed that, I kept hitting miscellaneous problems 
with MSVC, LLVM, and every other dependency under the sun those 
conversion tools needed. So I figured that Windows was just a 
crappy ecosystem, and tried it on Linux. No easier.

So now I'm here, a C noob, really wanting to use Adam's great 
project from the D language. The only barrier is my lack of 
knowledge in C. And I definitely do not have the means to port 
these headers by hand.

Could one of you give me pointers about how to go about this? I 
have the dynamic link libraries, the static libraries, and the 
header includes.

https://github.com/ultralight-ux/ultralight
https://github.com/ultralight-ux/ultralight-0.9-api
Sep 16 2018
next sibling parent Mike Parker <aldacron gmail.com> writes:
On Monday, 17 September 2018 at 03:16:33 UTC, spikespaz wrote:
 There is a project that I wish to use from D 
 (https://ultralig.ht).

 It's Electron, but with forked WebKit and the samples are very, 
 very fast.

 This is a great compromise between wanting to have a very 
 custom interface and not wanting to use the slow 
 Electron/Sciter/Awesomium/WebView.

 I am having trouble porting the C headers though. Firstly, I 
 barely know C at all, especially not enough to do this. The 
 extent of my C knowledge is terminal TicTacToe game I made 
 three years ago.

 I tried using all of the conversion tools under the 
 "Interfacing with C" page of the wiki, but I'm getting import 
 errors. Probably because the paths are all using "<>", 
 expecting an include path from the compiler. I tried to solve 
 this by refractoring the imports to use relative quoted paths.

 But even when I fixed that, I kept hitting miscellaneous 
 problems with MSVC, LLVM, and every other dependency under the 
 sun those conversion tools needed. So I figured that Windows 
 was just a crappy ecosystem, and tried it on Linux. No easier.

 So now I'm here, a C noob, really wanting to use Adam's great 
 project from the D language. The only barrier is my lack of 
 knowledge in C. And I definitely do not have the means to port 
 these headers by hand.

 Could one of you give me pointers about how to go about this? I 
 have the dynamic link libraries, the static libraries, and the 
 header includes.

 https://github.com/ultralight-ux/ultralight
 https://github.com/ultralight-ux/ultralight-0.9-api
FYI, those are C++ headers, not C. The page you read will get you part of the way there, but the Interfacing to C++ page would be more relevant: https://dlang.org/spec/cpp_interface.html Of course, if you don't know C++ that will only get you so far. If these were C headers, I'd just go ahead and translate them myself, but C++ headers will require a higher time investment from me because I'm not up to speed on the current state of D's C++ interface. There are people here who are more well informed who might be able to help, but it's going to require more than a few tips in a forum post.
Sep 16 2018
prev sibling next sibling parent reply Kagamin <spam here.lot> writes:
try dpp https://github.com/atilaneves/dpp
Sep 17 2018
parent reply Jonathan M Davis <newsgroup.d jmdavisprog.com> writes:
On Monday, September 17, 2018 7:43:21 AM MDT Kagamin via Digitalmars-d-learn 
wrote:
 try dpp https://github.com/atilaneves/dpp
Since according to Mike's post, it's C++ code, dpp wouldn't help, because it currently only supports C and not C++. - Jonathan M Davis
Sep 17 2018
parent reply Atila Neves <atila.neves gmail.com> writes:
On Monday, 17 September 2018 at 19:13:06 UTC, Jonathan M Davis 
wrote:
 On Monday, September 17, 2018 7:43:21 AM MDT Kagamin via 
 Digitalmars-d-learn wrote:
 try dpp https://github.com/atilaneves/dpp
Since according to Mike's post, it's C++ code, dpp wouldn't help, because it currently only supports C and not C++. - Jonathan M Davis
It does C++ as well, just not all (or even close at this point) of it. I doubt it'd work on any real C++ codebase right now, but who knows. It definitely won't if any of the headers use the standard library, which is likely to happen. It turns out that parsing C++ is a lot of work. Who knew? :P
Sep 18 2018
next sibling parent Kagamin <spam here.lot> writes:
On Tuesday, 18 September 2018 at 13:39:40 UTC, Atila Neves wrote:
 It does C++ as well, just not all (or even close at this point) 
 of it. I doubt it'd work on any real C++ codebase right now, 
 but who knows. It definitely won't if any of the headers use 
 the standard library, which is likely to happen.
It doesn't look like that, https://github.com/ultralight-ux/ultralight-0.9-api/blob/master/include Ultralight/Vector.h - this is probably the most complex code there.
Sep 18 2018
prev sibling parent Jonathan M Davis <newsgroup.d jmdavisprog.com> writes:
On Tuesday, September 18, 2018 7:39:40 AM MDT Atila Neves via Digitalmars-d-
learn wrote:
 On Monday, 17 September 2018 at 19:13:06 UTC, Jonathan M Davis

 wrote:
 On Monday, September 17, 2018 7:43:21 AM MDT Kagamin via

 Digitalmars-d-learn wrote:
 try dpp https://github.com/atilaneves/dpp
Since according to Mike's post, it's C++ code, dpp wouldn't help, because it currently only supports C and not C++. - Jonathan M Davis
It does C++ as well, just not all (or even close at this point) of it. I doubt it'd work on any real C++ codebase right now, but who knows. It definitely won't if any of the headers use the standard library, which is likely to happen.
Well, the repo claims that it currently only does C - hence why I said that it will only do C (though even if it partially supports C++, odds are it's not enough to matter unless you know what you're doing - which the OP clearly doesn't, since they don't know C/C++).
 It turns out that parsing C++ is a lot of work. Who knew? :P
Yeah... - Jonathan M Davis
Sep 19 2018
prev sibling parent Guillaume Piolat <spam smam.org> writes:
On Monday, 17 September 2018 at 03:16:33 UTC, spikespaz wrote:
 Could one of you give me pointers about how to go about this? I 
 have the dynamic link libraries, the static libraries, and the 
 header includes.
Every other language other than C++ will have the same problem as you interacting with this library, so you could follow this plan. Step 1 Chime in https://github.com/ultralight-ux/ultralight/issues/15 and wait until it is implemented: everyone will need this since its a C++ library hence unusable from any other language Step 2 Ask for binary releases in dynlib form, or build them yourselves. Step 3 Implement a BindBC or Derelict library
Sep 18 2018