Suggestion: std.ctypes

Gregor Richards Richards at codu.org
Tue May 30 12:36:03 PDT 2006


[Apologies if there is already such a thing, but I can't find it]

I think it would help both htod and bcd.gen quite a bit if there was a
std.ctypes, with aliases for all of the system-specific C types to the
non-system-specific D types.  It could look, for example, like:

version (X86) {
alias c_long_long_signed_int_t long;
alias c_long_long_unsigned_int_t ulong;
alias c_long_long_int_t long;

alias c_long_signed_int_t int;
alias c_long_unsigned_int_t uint;
alias c_long_int_t int;

alias c_signed_int_t int;
alias c_unsigned_int_t uint;
alias c_int_t int;

// etc, etc
} else version (X86_64) {
alias c_long_long_signed_int_t long;
alias c_long_long_unsigned_int_t ulong;
alias c_long_long_int_t long;

alias c_long_signed_int_t long;
alias c_long_unsigned_int_t ulong;
alias c_long_int_t long;

alias c_signed_int_t int;
alias c_unsigned_int_t uint;
alias c_int_t int;

// etc, etc
} else version (IA64) {
alias c_long_long_signed_int_t long;
alias c_long_long_unsigned_int_t ulong;
alias c_long_long_int_t long;

alias c_long_signed_int_t long;
alias c_long_unsigned_int_t ulong;
alias c_long_int_t long;

alias c_signed_int_t long;
alias c_unsigned_int_t ulong;
alias c_int_t long;

// etc, etc
}

(I'm probably misremembering most of those sizes, but you get the idea)

This would make it a lot easier to make bindings that were non-system-specific,
since they could simply import std.ctypes and then use c_int_t, etc.





More information about the Digitalmars-d mailing list