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