1 #ifndef _WIN32K_FLOATOBJ_H_
2 #define _WIN32K_FLOATOBJ_H_
8 _FLOATOBJ_Equal(FLOATOBJ
*pf1
, FLOATOBJ
*pf2
)
10 EFLOAT_S
*pef1
= (EFLOAT_S
*)pf1
;
11 EFLOAT_S
*pef2
= (EFLOAT_S
*)pf2
;
12 return (pef1
->lMant
== pef2
->lMant
&& pef1
->lExp
== pef2
->lExp
);
17 _FLOATOBJ_GetLong(FLOATOBJ
*pf
)
19 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
20 return pef
->lMant
>> (32 - pef
->lExp
);
25 _FLOATOBJ_GetFix(FLOATOBJ
*pf
)
27 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
28 LONG Shift
= (28 - pef
->lExp
);
29 return (Shift
>= 0 ? pef
->lMant
>> Shift
: pef
->lMant
<< -Shift
);
34 _FLOATOBJ_IsLong(FLOATOBJ
*pf
)
36 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
37 ULONG Shift
= 32 - pef
->lExp
;
38 if (Shift
> 31) return FALSE
;
39 return (((pef
->lMant
>> Shift
) << Shift
) == pef
->lMant
);
44 _FLOATOBJ_Equal0(FLOATOBJ
*pf
)
46 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
47 return (pef
->lMant
== 0 && pef
->lExp
== 0);
52 _FLOATOBJ_Equal1(FLOATOBJ
*pf
)
54 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
55 return (pef
->lMant
== 0x40000000 && pef
->lExp
== 2);
58 #define FLOATOBJ_Set0(fo) (fo)->ul1 = 0; (fo)->ul2 = 0;
59 #define FLOATOBJ_Set1(fo) (fo)->ul1 = 0x40000000; (fo)->ul2 = 2;
63 #define _FLOATOBJ_Equal(pf,pf1) (*(pf) == *(pf1))
64 #define _FLOATOBJ_GetLong(pf) ((LONG)*(pf))
65 #define _FLOATOBJ_IsLong(pf) ((FLOAT)((LONG)*(pf)) == *(pf))
66 #define _FLOATOBJ_Equal0(pf) (*(pf) == 0.)
67 #define _FLOATOBJ_Equal1(pf) (*(pf) == 1.)
69 #define FLOATOBJ_Set0(fo) *(fo) = 0;
70 #define FLOATOBJ_Set1(fo) *(fo) = 1;
74 #endif /* not _WIN32K_FLOATOBJ_H_ */