msvcp90: Add std_Ctraits::Isnan implementation.
This commit is contained in:
parent
0e21f80b4b
commit
6fe4d9e71b
|
@ -2103,9 +2103,9 @@
|
||||||
@ stub ?_Isinf@?$_Ctraits@M@std@@SA_NM@Z
|
@ stub ?_Isinf@?$_Ctraits@M@std@@SA_NM@Z
|
||||||
@ stub ?_Isinf@?$_Ctraits@N@std@@SA_NN@Z
|
@ stub ?_Isinf@?$_Ctraits@N@std@@SA_NN@Z
|
||||||
@ stub ?_Isinf@?$_Ctraits@O@std@@SA_NO@Z
|
@ stub ?_Isinf@?$_Ctraits@O@std@@SA_NO@Z
|
||||||
@ stub ?_Isnan@?$_Ctraits@M@std@@SA_NM@Z
|
@ cdecl ?_Isnan@?$_Ctraits@M@std@@SA_NM@Z(float) std_Ctraits_float__Isnan
|
||||||
@ stub ?_Isnan@?$_Ctraits@N@std@@SA_NN@Z
|
@ cdecl ?_Isnan@?$_Ctraits@N@std@@SA_NN@Z(double) std_Ctraits_double__Isnan
|
||||||
@ stub ?_Isnan@?$_Ctraits@O@std@@SA_NO@Z
|
@ cdecl ?_Isnan@?$_Ctraits@O@std@@SA_NO@Z(double) std_Ctraits_long_double__Isnan
|
||||||
@ stub -arch=win32 ?_Loc_atexit@std@@YA_NP6AXXZ@Z
|
@ stub -arch=win32 ?_Loc_atexit@std@@YA_NP6AXXZ@Z
|
||||||
@ stub -arch=win32 ?_Makpat@?$_Mpunct@D@std@@AAEXAAUpattern@money_base@2@III@Z
|
@ stub -arch=win32 ?_Makpat@?$_Mpunct@D@std@@AAEXAAUpattern@money_base@2@III@Z
|
||||||
@ stub -arch=win64 ?_Makpat@?$_Mpunct@D@std@@AEAAXAEAUpattern@money_base@2@III@Z
|
@ stub -arch=win64 ?_Makpat@?$_Mpunct@D@std@@AEAAXAEAUpattern@money_base@2@III@Z
|
||||||
|
|
|
@ -2300,9 +2300,9 @@
|
||||||
@ stub ?_Isinf@?$_Ctraits@M@std@@SA_NM@Z
|
@ stub ?_Isinf@?$_Ctraits@M@std@@SA_NM@Z
|
||||||
@ stub ?_Isinf@?$_Ctraits@N@std@@SA_NN@Z
|
@ stub ?_Isinf@?$_Ctraits@N@std@@SA_NN@Z
|
||||||
@ stub ?_Isinf@?$_Ctraits@O@std@@SA_NO@Z
|
@ stub ?_Isinf@?$_Ctraits@O@std@@SA_NO@Z
|
||||||
@ stub ?_Isnan@?$_Ctraits@M@std@@SA_NM@Z
|
@ cdecl ?_Isnan@?$_Ctraits@M@std@@SA_NM@Z(float) std_Ctraits_float__Isnan
|
||||||
@ stub ?_Isnan@?$_Ctraits@N@std@@SA_NN@Z
|
@ cdecl ?_Isnan@?$_Ctraits@N@std@@SA_NN@Z(double) std_Ctraits_double__Isnan
|
||||||
@ stub ?_Isnan@?$_Ctraits@O@std@@SA_NO@Z
|
@ cdecl ?_Isnan@?$_Ctraits@O@std@@SA_NO@Z(double) std_Ctraits_long_double__Isnan
|
||||||
@ thiscall -arch=win32 ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ(ptr) basic_streambuf_char__Lock
|
@ thiscall -arch=win32 ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ(ptr) basic_streambuf_char__Lock
|
||||||
@ cdecl -arch=win64 ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ(ptr) basic_streambuf_char__Lock
|
@ cdecl -arch=win64 ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ(ptr) basic_streambuf_char__Lock
|
||||||
@ thiscall -arch=win32 ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ(ptr) basic_streambuf_wchar__Lock
|
@ thiscall -arch=win32 ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ(ptr) basic_streambuf_wchar__Lock
|
||||||
|
|
|
@ -2557,9 +2557,9 @@
|
||||||
@ stub ?_Isinf@?$_Ctraits@M@std@@SA_NM@Z
|
@ stub ?_Isinf@?$_Ctraits@M@std@@SA_NM@Z
|
||||||
@ stub ?_Isinf@?$_Ctraits@N@std@@SA_NN@Z
|
@ stub ?_Isinf@?$_Ctraits@N@std@@SA_NN@Z
|
||||||
@ stub ?_Isinf@?$_Ctraits@O@std@@SA_NO@Z
|
@ stub ?_Isinf@?$_Ctraits@O@std@@SA_NO@Z
|
||||||
@ stub ?_Isnan@?$_Ctraits@M@std@@SA_NM@Z
|
@ cdecl ?_Isnan@?$_Ctraits@M@std@@SA_NM@Z(float) std_Ctraits_float__Isnan
|
||||||
@ stub ?_Isnan@?$_Ctraits@N@std@@SA_NN@Z
|
@ cdecl ?_Isnan@?$_Ctraits@N@std@@SA_NN@Z(double) std_Ctraits_double__Isnan
|
||||||
@ stub ?_Isnan@?$_Ctraits@O@std@@SA_NO@Z
|
@ cdecl ?_Isnan@?$_Ctraits@O@std@@SA_NO@Z(double) std_Ctraits_long_double__Isnan
|
||||||
@ cdecl -arch=win32 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPAV123@PAVfacet@23@I@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
|
@ cdecl -arch=win32 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPAV123@PAVfacet@23@I@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
|
||||||
@ cdecl -arch=win64 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
|
@ cdecl -arch=win64 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
|
||||||
@ cdecl -arch=win32 ?_Locimp_ctor@_Locimp@locale@std@@CAXPAV123@ABV123@@Z(ptr ptr) locale__Locimp__Locimp_ctor
|
@ cdecl -arch=win32 ?_Locimp_ctor@_Locimp@locale@std@@CAXPAV123@ABV123@@Z(ptr ptr) locale__Locimp__Locimp_ctor
|
||||||
|
|
|
@ -815,6 +815,15 @@ std_Ctraits * __thiscall std_Ctraits_op_assign( std_Ctraits *this, std_Ctraits *
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ?_Isnan@?$_Ctraits@M@std@@SA_NM@Z -> public: static bool __cdecl std::_Ctraits<float>::_Isnan(float) */
|
||||||
|
BOOLEAN __cdecl std_Ctraits_float__Isnan( float x ) { return _isnan(x); }
|
||||||
|
|
||||||
|
/* ?_Isnan@?$_Ctraits@N@std@@SA_NN@Z -> public: static bool __cdecl std::_Ctraits<double>::_Isnan(double) */
|
||||||
|
BOOLEAN __cdecl std_Ctraits_double__Isnan( double x ) { return _isnan(x); }
|
||||||
|
|
||||||
|
/* ?_Isnan@?$_Ctraits@O@std@@SA_NO@Z -> public: static bool __cdecl std::_Ctraits<long double>::_Isnan(long double) */
|
||||||
|
BOOLEAN __cdecl std_Ctraits_long_double__Isnan( LDOUBLE x ) { return _isnan(x); }
|
||||||
|
|
||||||
/* ?atan2@?$_Ctraits@M@std@@SAMMM@Z -> public: static float __cdecl std::_Ctraits<float>::atan2(float,float) */
|
/* ?atan2@?$_Ctraits@M@std@@SAMMM@Z -> public: static float __cdecl std::_Ctraits<float>::atan2(float,float) */
|
||||||
float __cdecl std_Ctraits_float_atan2( float y, float x ) { return atan2f( y, x ); }
|
float __cdecl std_Ctraits_float_atan2( float y, float x ) { return atan2f( y, x ); }
|
||||||
|
|
||||||
|
|
|
@ -2878,9 +2878,9 @@
|
||||||
@ stub ?_Isinf@?$_Ctraits@M@std@@SA_NM@Z
|
@ stub ?_Isinf@?$_Ctraits@M@std@@SA_NM@Z
|
||||||
@ stub ?_Isinf@?$_Ctraits@N@std@@SA_NN@Z
|
@ stub ?_Isinf@?$_Ctraits@N@std@@SA_NN@Z
|
||||||
@ stub ?_Isinf@?$_Ctraits@O@std@@SA_NO@Z
|
@ stub ?_Isinf@?$_Ctraits@O@std@@SA_NO@Z
|
||||||
@ stub ?_Isnan@?$_Ctraits@M@std@@SA_NM@Z
|
@ cdecl ?_Isnan@?$_Ctraits@M@std@@SA_NM@Z(float) std_Ctraits_float__Isnan
|
||||||
@ stub ?_Isnan@?$_Ctraits@N@std@@SA_NN@Z
|
@ cdecl ?_Isnan@?$_Ctraits@N@std@@SA_NN@Z(double) std_Ctraits_double__Isnan
|
||||||
@ stub ?_Isnan@?$_Ctraits@O@std@@SA_NO@Z
|
@ cdecl ?_Isnan@?$_Ctraits@O@std@@SA_NO@Z(double) std_Ctraits_long_double__Isnan
|
||||||
@ cdecl -arch=win32 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPAV123@PAVfacet@23@I@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
|
@ cdecl -arch=win32 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPAV123@PAVfacet@23@I@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
|
||||||
@ cdecl -arch=win64 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
|
@ cdecl -arch=win64 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
|
||||||
@ cdecl -arch=win32 ?_Locimp_ctor@_Locimp@locale@std@@CAXPAV123@ABV123@@Z(ptr ptr) locale__Locimp__Locimp_ctor
|
@ cdecl -arch=win32 ?_Locimp_ctor@_Locimp@locale@std@@CAXPAV123@ABV123@@Z(ptr ptr) locale__Locimp__Locimp_ctor
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <wctype.h>
|
#include <wctype.h>
|
||||||
|
#include <math.h>
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
@ -26,6 +27,8 @@
|
||||||
#include <winbase.h>
|
#include <winbase.h>
|
||||||
#include "wine/test.h"
|
#include "wine/test.h"
|
||||||
|
|
||||||
|
typedef double LDOUBLE; /* long double is just a double */
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
LCID handle;
|
LCID handle;
|
||||||
unsigned page;
|
unsigned page;
|
||||||
|
@ -110,6 +113,10 @@ static void (__thiscall *p_basic_ostringstream_char_dtor)(/*basic_ostringstream_
|
||||||
static void (__thiscall *p_basic_ostringstream_char_vbase_dtor)(/*basic_ostringstream_char*/void*);
|
static void (__thiscall *p_basic_ostringstream_char_vbase_dtor)(/*basic_ostringstream_char*/void*);
|
||||||
static void (__thiscall *p_basic_ios_char_dtor)(/*basic_ios_char*/void*);
|
static void (__thiscall *p_basic_ios_char_dtor)(/*basic_ios_char*/void*);
|
||||||
|
|
||||||
|
static BOOL (__cdecl *p_std_Ctraits_float__Isnan)(float);
|
||||||
|
static BOOL (__cdecl *p_std_Ctraits_double__Isnan)(double);
|
||||||
|
static BOOL (__cdecl *p_std_Ctraits_long_double__Isnan)(LDOUBLE);
|
||||||
|
|
||||||
static complex_float* (__thiscall *p_complex_float_ctor)(complex_float*, const float*, const float*);
|
static complex_float* (__thiscall *p_complex_float_ctor)(complex_float*, const float*, const float*);
|
||||||
static complex_float* (__cdecl *p_complex_float_add)(complex_float*, const complex_float*, const complex_float*);
|
static complex_float* (__cdecl *p_complex_float_add)(complex_float*, const complex_float*, const complex_float*);
|
||||||
static complex_float* (__cdecl *p_complex_float_div)(complex_float*, const complex_float*, const complex_float*);
|
static complex_float* (__cdecl *p_complex_float_div)(complex_float*, const complex_float*, const complex_float*);
|
||||||
|
@ -216,6 +223,11 @@ static BOOL init(void)
|
||||||
SET(p_wctrans, "wctrans");
|
SET(p_wctrans, "wctrans");
|
||||||
SET(p_towctrans, "towctrans");
|
SET(p_towctrans, "towctrans");
|
||||||
SET(basic_ostringstream_char_vbtable, "??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@");
|
SET(basic_ostringstream_char_vbtable, "??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@");
|
||||||
|
|
||||||
|
SET(p_std_Ctraits_float__Isnan, "?_Isnan@?$_Ctraits@M@std@@SA_NM@Z");
|
||||||
|
SET(p_std_Ctraits_double__Isnan, "?_Isnan@?$_Ctraits@N@std@@SA_NN@Z");
|
||||||
|
SET(p_std_Ctraits_long_double__Isnan, "?_Isnan@?$_Ctraits@O@std@@SA_NO@Z");
|
||||||
|
|
||||||
if(sizeof(void*) == 8) { /* 64-bit initialization */
|
if(sizeof(void*) == 8) { /* 64-bit initialization */
|
||||||
SET(p_char_assign, "?assign@?$char_traits@D@std@@SAXAEADAEBD@Z");
|
SET(p_char_assign, "?assign@?$char_traits@D@std@@SAXAEADAEBD@Z");
|
||||||
SET(p_wchar_assign, "?assign@?$char_traits@_W@std@@SAXAEA_WAEB_W@Z");
|
SET(p_wchar_assign, "?assign@?$char_traits@_W@std@@SAXAEA_WAEB_W@Z");
|
||||||
|
@ -688,6 +700,41 @@ static BOOL almost_eq(float f1, float f2)
|
||||||
return f1 < 0.0001;
|
return f1 < 0.0001;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_Ctraits_math_functions(void)
|
||||||
|
{
|
||||||
|
BYTE ret;
|
||||||
|
|
||||||
|
ret = p_std_Ctraits_float__Isnan(0.0);
|
||||||
|
ok(ret == FALSE, "ret = %d\n", ret);
|
||||||
|
|
||||||
|
ret = p_std_Ctraits_float__Isnan(0.0 / 0.0);
|
||||||
|
ok(ret == TRUE, "ret = %d\n", ret);
|
||||||
|
|
||||||
|
ret = p_std_Ctraits_float__Isnan(1.0 / 0.0);
|
||||||
|
ok(ret == FALSE, "ret = %d\n", ret);
|
||||||
|
|
||||||
|
ret = p_std_Ctraits_float__Isnan(-1.0 / 0.0);
|
||||||
|
ok(ret == FALSE, "ret = %d\n", ret);
|
||||||
|
|
||||||
|
ret = p_std_Ctraits_float__Isnan(log(-1.0));
|
||||||
|
ok(ret == TRUE, "ret = %d\n", ret);
|
||||||
|
|
||||||
|
ret = p_std_Ctraits_float__Isnan(sqrt(-1.0));
|
||||||
|
ok(ret == TRUE, "ret = %d\n", ret);
|
||||||
|
|
||||||
|
ret = p_std_Ctraits_double__Isnan(3.14159 / 0.0);
|
||||||
|
ok(ret == FALSE, "ret = %d\n", ret);
|
||||||
|
|
||||||
|
ret = p_std_Ctraits_double__Isnan(log(-3.14159));
|
||||||
|
ok(ret == TRUE, "ret = %d\n", ret);
|
||||||
|
|
||||||
|
ret = p_std_Ctraits_long_double__Isnan(3.14159 / 0.0);
|
||||||
|
ok(ret == FALSE, "ret = %d\n", ret);
|
||||||
|
|
||||||
|
ret = p_std_Ctraits_long_double__Isnan(sqrt(-3.14159));
|
||||||
|
ok(ret == TRUE, "ret = %d\n", ret);
|
||||||
|
}
|
||||||
|
|
||||||
static void test_complex(void)
|
static void test_complex(void)
|
||||||
{
|
{
|
||||||
complex_float c1, c2, c3;
|
complex_float c1, c2, c3;
|
||||||
|
@ -935,6 +982,7 @@ START_TEST(misc)
|
||||||
test_virtual_call();
|
test_virtual_call();
|
||||||
test_virtual_base_dtors();
|
test_virtual_base_dtors();
|
||||||
test_allocator_char();
|
test_allocator_char();
|
||||||
|
test_Ctraits_math_functions();
|
||||||
test_complex();
|
test_complex();
|
||||||
|
|
||||||
ok(!invalid_parameter, "invalid_parameter_handler was invoked too many times\n");
|
ok(!invalid_parameter, "invalid_parameter_handler was invoked too many times\n");
|
||||||
|
|
Loading…
Reference in New Issue