digitalmars.D - D modules referenced by C source?
- Matt (3/3) May 06 2009 Hi, I apologise if this has already been asked, but I haven't gone and D...
- BCS (4/9) May 06 2009 The best approach might be to write a .h file with only the constants in...
- Robert Fraser (9/22) May 06 2009 If the constants are in a syntax recognized by both C and D (e.x.
- BCS (3/5) May 06 2009 Darn, now I want to go out and build stuff to do this:
- Denis Koroskin (4/16) May 06 2009 Did you try htod? http://www.digitalmars.com/d/2.0/htod.html
- Matt (2/24) May 07 2009 Thanks, but the problem isn't with my writing the D module for C. It's h...
- Robert Fraser (3/28) May 07 2009 Well, if you write the constants in C, you can have them automatically
- Robert Clipsham (9/14) May 07 2009 I've never tried this, but I guess you'd do something like:
Hi, I apologise if this has already been asked, but I haven't gone and DLed a news reader yet, so Firefox keeps complaining every time I try to use the search box. I was planning to include some C source into a D project, and was happily writing the D module for the "header" for the source, when I ran into a little problem. I want to include some const values in the module, which made me realize I don't know how to include the module in the C source. I can see how it would work from the D side of the compilation, but how would I go about making the const values visible to the C code? Do I just #include "d_module.d"? Or is there a different way to do this? What would the compilation process look like for this? Thank you in advance for any help you can provide.
May 06 2009
Reply to Matt,don't know how to include the module in the C source. I can see how it would work from the D side of the compilation, but how would I go about making the const values visible to the C code? Do I just #include "The best approach might be to write a .h file with only the constants in it and then use htod to convert it into a .d header. Aside from that you would end up hand editing bith files.
May 06 2009
BCS wrote:Reply to Matt,If the constants are in a syntax recognized by both C and D (e.x. they're just integers, or enums), you can write the .h and use D's mixin(import("constants.h")), which would prevent you from having to maintain two files. If you're using some types differently in each, or want to use #defines on the C side, etc., you could use CTFE to convert (there was a CTFE regex engine floating around somewhere a whiel back... Actually, I'd like to get my hands on that myself if anyone has the link).don't know how to include the module in the C source. I can see how it would work from the D side of the compilation, but how would I go about making the const values visible to the C code? Do I just #include "The best approach might be to write a .h file with only the constants in it and then use htod to convert it into a .d header. Aside from that you would end up hand editing bith files.
May 06 2009
Reply to Robert,mixin(import("constants.h"))Darn, now I want to go out and build stuff to do this: mixin(h2d!(import("stdio.h")));
May 06 2009
On Thu, 07 May 2009 03:02:16 +0400, Matt <webwraith fastmail.fm> wrote:Hi, I apologise if this has already been asked, but I haven't gone and DLed a news reader yet, so Firefox keeps complaining every time I try to use the search box. I was planning to include some C source into a D project, and was happily writing the D module for the "header" for the source, when I ran into a little problem. I want to include some const values in the module, which made me realize I don't know how to include the module in the C source. I can see how it would work from the D side of the compilation, but how would I go about making the const values visible to the C code? Do I just #include "d_module.d"? Or is there a different way to do this? What would the compilation process look like for this? Thank you in advance for any help you can provide.Did you try htod? http://www.digitalmars.com/d/2.0/htod.html There is also BCD http://www.dsource.org/projects/bcd Try both tools and let us know if it helped.
May 06 2009
Denis Koroskin Wrote:On Thu, 07 May 2009 03:02:16 +0400, Matt <webwraith fastmail.fm> wrote:Thanks, but the problem isn't with my writing the D module for C. It's how the C source imports that module to access the constants in it.Hi, I apologise if this has already been asked, but I haven't gone and DLed a news reader yet, so Firefox keeps complaining every time I try to use the search box. I was planning to include some C source into a D project, and was happily writing the D module for the "header" for the source, when I ran into a little problem. I want to include some const values in the module, which made me realize I don't know how to include the module in the C source. I can see how it would work from the D side of the compilation, but how would I go about making the const values visible to the C code? Do I just #include "d_module.d"? Or is there a different way to do this? What would the compilation process look like for this? Thank you in advance for any help you can provide.Did you try htod? http://www.digitalmars.com/d/2.0/htod.html There is also BCD http://www.dsource.org/projects/bcd Try both tools and let us know if it helped.
May 07 2009
Matt wrote:Denis Koroskin Wrote:Well, if you write the constants in C, you can have them automatically translated to D in the build process and then just include the result.On Thu, 07 May 2009 03:02:16 +0400, Matt <webwraith fastmail.fm> wrote:Thanks, but the problem isn't with my writing the D module for C. It's how the C source imports that module to access the constants in it.Hi, I apologise if this has already been asked, but I haven't gone and DLed a news reader yet, so Firefox keeps complaining every time I try to use the search box. I was planning to include some C source into a D project, and was happily writing the D module for the "header" for the source, when I ran into a little problem. I want to include some const values in the module, which made me realize I don't know how to include the module in the C source. I can see how it would work from the D side of the compilation, but how would I go about making the const values visible to the C code? Do I just #include "d_module.d"? Or is there a different way to do this? What would the compilation process look like for this? Thank you in advance for any help you can provide.Did you try htod? http://www.digitalmars.com/d/2.0/htod.html There is also BCD http://www.dsource.org/projects/bcd Try both tools and let us know if it helped.
May 07 2009
Matt wrote:Hi, I apologise if this has already been asked, but I haven't gone and DLed a news reader yet, so Firefox keeps complaining every time I try to use the search box. I was planning to include some C source into a D project, and was happily writing the D module for the "header" for the source, when I ran into a little problem. I want to include some const values in the module, which made me realize I don't know how to include the module in the C source. I can see how it would work from the D side of the compilation, but how would I go about making the const values visible to the C code? Do I just #include "d_module.d"? Or is there a different way to do this? What would the compilation process look like for this? Thank you in advance for any help you can provide.I've never tried this, but I guess you'd do something like: extern(C) void myFunction(); In the D file, compile it, then link the resulting object in when you compile the C app. You would of course need to define this function and anything else you've extern(C)'d in the C app so it's available. I'm guessing that you wouldn't be able to use a large chunk of D's functionality without linking in a good chunk (if not all) of a D runtime too, but I may be wrong.
May 07 2009