Language subset for printing

Adam D. Ruppe destructionator at gmail.com
Fri Dec 20 18:11:50 PST 2013


On Saturday, 21 December 2013 at 01:57:50 UTC, Casper Færgemand 
wrote:
> Having skimmed core.stdc.stdio.d now, it's seems pretty 
> manageable to parse, so we'll go with that. Thankies. :3

cool. Also make note of the "extern(C):" on line 30 of that file: 
the colon applies that thing to everything after it, so the whole 
file is extern(C) (and nothrow and @system, unless overridden 
later0

Also, the druntime import names follow a simple pattern:

core.stdc.* -> #include<*.h> in C. so stdio.h is core.stdc.stdio, 
stdlib.h is core.stdc.stdlib, and so on. This only covers 
standard C functions, some C includes won't be there since they 
are non-standard extensions.

There's also includes for other operating systems in

core.sys.OS_NAME.FILE

so

import core.sys.posix.unistd;  is #include<unistd.h> in C on 
Posix systems (linux, etc.)

core.sys.linux.* is Linus specific extensions.

core.sys.posix.sys.socket == #include<sys/socket.h>


And there's also core.sys.windows.windows for Windows stuff, 
though this is really incomplete. So if you do much work with the 
Win32 API you'll want to download the more complete bindings
http://www.dsource.org/projects/bindings/browser/trunk/win32

There's a bunch of other C libs done in here too:
https://github.com/D-Programming-Deimos



Or, you can avoid doing the modules by just copy/pasting the 
extern(C) definitions you need to call yourself. That can get a 
bit tricky translating macros and structs from C, you'll have to 
be sure to get the types right (A "long" in C isn't the same as a 
"long" in D for instance), but this isn't too hard either.

So if something isn't already done in the deimos collection, you 
can still use the C libraries (or other C files you write) just 
by getting those function prototypes done like i did in my last 
message.


More information about the Digitalmars-d-learn mailing list