Mercurial > projects > ldc
view lphobos/std/c/fenv.d @ 650:aa6a0b7968f7
Added test case for bug #100
Removed dubious check for not emitting static private global in other modules without access. This should be handled properly somewhere else, it's causing unresolved global errors for stuff that should work (in MiniD)
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Sun, 05 Oct 2008 17:28:15 +0200 |
parents | c53b6e3fe49a |
children |
line wrap: on
line source
/** * C's <fenv.h> * Authors: Walter Bright, Digital Mars, www.digitalmars.com * License: Public Domain * Macros: * WIKI=Phobos/StdCFenv */ module std.c.fenv; extern (C): /// Entire floating point environment struct fenv_t { version (Windows) { ushort status; ushort control; ushort round; ushort reserved[2]; } else version (linux) { ushort __control_word; ushort __unused1; ushort __status_word; ushort __unused2; ushort __tags; ushort __unused3; uint __eip; ushort __cs_selector; ushort __opcode; uint __data_offset; ushort __data_selector; ushort __unused5; } else { static assert(0); } } alias int fexcept_t; /// Floating point status flags /// The various floating point exceptions enum { FE_INVALID = 1, /// FE_DENORMAL = 2, /// FE_DIVBYZERO = 4, /// FE_OVERFLOW = 8, /// FE_UNDERFLOW = 0x10, /// FE_INEXACT = 0x20, /// FE_ALL_EXCEPT = 0x3F, /// Mask of all the exceptions } /// Rounding modes enum { FE_TONEAREST = 0, /// FE_UPWARD = 0x800, /// FE_DOWNWARD = 0x400, /// FE_TOWARDZERO = 0xC00, /// } version (Windows) { extern fenv_t _FE_DFL_ENV; /// Default floating point environment fenv_t* FE_DFL_ENV = &_FE_DFL_ENV; } else version (linux) { /// Default floating point environment fenv_t* FE_DFL_ENV = cast(fenv_t*)(-1); } else { static assert(0); } /// Floating point precision enum { FE_FLTPREC = 0, /// FE_DBLPREC = 0x200, /// FE_LDBLPREC = 0x300, /// } int fetestexcept(int excepts); /// int feraiseexcept(int excepts); /// int feclearexcept(int excepts); /// //int fegetexcept(fexcept_t *flagp,int excepts); /// //int fesetexcept(fexcept_t *flagp,int excepts); /// int fegetround(); /// int fesetround(int round); /// int fegetprec(); /// int fesetprec(int prec); /// int fegetenv(fenv_t *envp); /// int fesetenv(fenv_t *envp); /// //void feprocentry(fenv_t *envp); /// //void feprocexit(const fenv_t *envp); /// int fegetexceptflag(fexcept_t *flagp,int excepts); /// int fesetexceptflag(fexcept_t *flagp,int excepts); /// int feholdexcept(fenv_t *envp); /// int feupdateenv(fenv_t *envp); ///