Mercurial > projects > ldc
view lphobos/typeinfo1/ti_float.d @ 86:fd32135dca3e trunk
[svn r90] Major updates to the gen directory. Redesigned the 'elem' struct. Much more... !!!
Lots of bugfixes.
Added support for special foreach on strings.
Added std.array, std.utf, std.ctype and std.uni to phobos.
Changed all the .c files in the gen dir to .cpp (it *is* C++ after all)
author | lindquist |
---|---|
date | Sat, 03 Nov 2007 14:44:58 +0100 |
parents | 2c3cd3596187 |
children | 373489eeaf90 |
line wrap: on
line source
// float module typeinfo1.ti_float; class TypeInfo_f : TypeInfo { char[] toString() { return "float"; } hash_t getHash(void *p) { return *cast(uint *)p; } static bool _isnan(float f) { return f !<>= 0; } static int _equals(float f1, float f2) { return f1 == f2 || (_isnan(f1) && _isnan(f2)); } static int _compare(float d1, float d2) { if (d1 !<>= d2) // if either are NaN { if (_isnan(d1)) { if (_isnan(d2)) return 0; return -1; } return 1; } return (d1 == d2) ? 0 : ((d1 < d2) ? -1 : 1); } int equals(void *p1, void *p2) { return _equals(*cast(float *)p1, *cast(float *)p2); } int compare(void *p1, void *p2) { return _compare(*cast(float *)p1, *cast(float *)p2); } size_t tsize() { return float.sizeof; } void swap(void *p1, void *p2) { float t; t = *cast(float *)p1; *cast(float *)p1 = *cast(float *)p2; *cast(float *)p2 = t; } void[] init() { static float r; return (&r)[0 .. 1]; } }