From 949a8afdaf394a588209c3ee7692630c90b32e22 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 12 Nov 2013 12:51:51 +0100 Subject: [PATCH] msvcp71: Share part of the implementation with msvcp90. --- dlls/msvcp71/Makefile.in | 4 +- dlls/msvcp71/cxx.h | 446 -------- dlls/msvcp71/exception.c | 563 ---------- dlls/msvcp71/math.c | 2169 -------------------------------------- dlls/msvcp71/memory.c | 102 -- dlls/msvcp71/misc.c | 190 ---- dlls/msvcp71/msvcp71.c | 105 -- 7 files changed, 3 insertions(+), 3576 deletions(-) delete mode 100644 dlls/msvcp71/cxx.h delete mode 100644 dlls/msvcp71/exception.c delete mode 100644 dlls/msvcp71/math.c delete mode 100644 dlls/msvcp71/memory.c delete mode 100644 dlls/msvcp71/misc.c delete mode 100644 dlls/msvcp71/msvcp71.c diff --git a/dlls/msvcp71/Makefile.in b/dlls/msvcp71/Makefile.in index d7d36ef87ce..d895a03ce5d 100644 --- a/dlls/msvcp71/Makefile.in +++ b/dlls/msvcp71/Makefile.in @@ -2,6 +2,8 @@ MODULE = msvcp71.dll IMPORTS = msvcrt MODCFLAGS = @BUILTINFLAG@ EXTRAINCL = -I$(top_srcdir)/include/msvcrt +EXTRADEFS = -D_MSVCP_VER=71 +PARENTSRC = ../msvcp90 C_SRCS = \ exception.c \ @@ -10,7 +12,7 @@ C_SRCS = \ math.c \ memory.c \ misc.c \ - msvcp71.c \ + msvcp_main.c \ string.c @MAKE_DLL_RULES@ diff --git a/dlls/msvcp71/cxx.h b/dlls/msvcp71/cxx.h deleted file mode 100644 index 8925ed361f7..00000000000 --- a/dlls/msvcp71/cxx.h +++ /dev/null @@ -1,446 +0,0 @@ -/* - * Copyright 2012 Piotr Caban for CodeWeavers - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -/* Copied from dlls/msvcrt/cpp.c */ -#ifdef __i386__ /* thiscall functions are i386-specific */ - -#define THISCALL(func) __thiscall_ ## func -#define THISCALL_NAME(func) __ASM_NAME("__thiscall_" #func) -#define __thiscall __stdcall -#define DEFINE_THISCALL_WRAPPER(func,args) \ - extern void THISCALL(func)(void); \ - __ASM_GLOBAL_FUNC(__thiscall_ ## func, \ - "popl %eax\n\t" \ - "pushl %ecx\n\t" \ - "pushl %eax\n\t" \ - "jmp " __ASM_NAME(#func) __ASM_STDCALL(args) ) -#else /* __i386__ */ - -#define THISCALL(func) func -#define THISCALL_NAME(func) __ASM_NAME(#func) -#define __thiscall __cdecl -#define DEFINE_THISCALL_WRAPPER(func,args) /* nothing */ - -#endif /* __i386__ */ - -#ifdef _WIN64 - -#define VTABLE_ADD_FUNC(name) "\t.quad " THISCALL_NAME(name) "\n" - -#define __ASM_VTABLE(name,funcs) \ - __asm__(".data\n" \ - "\t.align 8\n" \ - "\t.quad " __ASM_NAME(#name "_rtti") "\n" \ - "\t.globl " __ASM_NAME("MSVCP_" #name "_vtable") "\n" \ - __ASM_NAME("MSVCP_" #name "_vtable") ":\n" \ - funcs "\n\t.text") - -#else - -#define VTABLE_ADD_FUNC(name) "\t.long " THISCALL_NAME(name) "\n" - -#define __ASM_VTABLE(name,funcs) \ - __asm__(".data\n" \ - "\t.align 4\n" \ - "\t.long " __ASM_NAME(#name "_rtti") "\n" \ - "\t.globl " __ASM_NAME("MSVCP_" #name "_vtable") "\n" \ - __ASM_NAME("MSVCP_" #name "_vtable") ":\n" \ - funcs "\n\t.text") - -#endif /* _WIN64 */ - -#ifndef __x86_64__ - -#define DEFINE_RTTI_DATA(name, off, base_classes_no, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name) \ - static const type_info name ## _type_info = { \ - &MSVCP_type_info_vtable, \ - NULL, \ - mangled_name \ - }; \ -\ -static const rtti_base_descriptor name ## _rtti_base_descriptor = { \ - &name ##_type_info, \ - base_classes_no, \ - { 0, -1, 0}, \ - 64 \ -}; \ -\ -static const rtti_base_array name ## _rtti_base_array = { \ - { \ - &name ## _rtti_base_descriptor, \ - cl1, \ - cl2, \ - cl3, \ - cl4, \ - cl5, \ - cl6, \ - cl7, \ - cl8, \ - cl9, \ - } \ -}; \ -\ -static const rtti_object_hierarchy name ## _hierarchy = { \ - 0, \ - 0, \ - base_classes_no+1, \ - &name ## _rtti_base_array \ -}; \ -\ -const rtti_object_locator name ## _rtti = { \ - 0, \ - off, \ - 0, \ - &name ## _type_info, \ - &name ## _hierarchy \ -}; - -#define DEFINE_CXX_DATA(type, base_no, cl1, cl2, dtor) \ -\ -static const cxx_type_info type ## _cxx_type_info = { \ - 0, \ - & type ##_type_info, \ - { 0, -1, 0 }, \ - sizeof(type), \ - (cxx_copy_ctor)THISCALL(MSVCP_ ## type ##_copy_ctor) \ -}; \ -\ -static const cxx_type_info_table type ## _cxx_type_table = { \ - base_no+1, \ - { \ - & type ## _cxx_type_info, \ - cl1, \ - cl2 \ - } \ -}; \ -\ -static const cxx_exception_type type ## _cxx_type = { \ - 0, \ - (cxx_copy_ctor)THISCALL(dtor), \ - NULL, \ - & type ## _cxx_type_table \ -}; - -#else - -#define DEFINE_RTTI_DATA(name, off, base_classes_no, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name) \ - static const type_info name ## _type_info = { \ - &MSVCP_type_info_vtable, \ - NULL, \ - mangled_name \ - }; \ -\ -static rtti_base_descriptor name ## _rtti_base_descriptor = { \ - 0xdeadbeef, \ - base_classes_no, \ - { 0, -1, 0}, \ - 64 \ -}; \ -\ -static rtti_base_array name ## _rtti_base_array = { \ - { \ - 0xdeadbeef, \ - 0xdeadbeef, \ - 0xdeadbeef, \ - 0xdeadbeef, \ - 0xdeadbeef, \ - 0xdeadbeef, \ - 0xdeadbeef, \ - 0xdeadbeef, \ - 0xdeadbeef, \ - 0xdeadbeef, \ - } \ -}; \ -\ -static rtti_object_hierarchy name ## _hierarchy = { \ - 0, \ - 0, \ - base_classes_no+1, \ - 0xdeadbeef \ -}; \ -\ -rtti_object_locator name ## _rtti = { \ - 1, \ - off, \ - 0, \ - 0xdeadbeef, \ - 0xdeadbeef, \ - 0xdeadbeef \ -};\ -\ -static void init_ ## name ## _rtti(char *base) \ -{ \ - name ## _rtti_base_descriptor.type_descriptor = (char*)&name ## _type_info - base; \ - name ## _rtti_base_array.bases[0] = (char*)&name ## _rtti_base_descriptor - base; \ - name ## _rtti_base_array.bases[1] = (char*)cl1 - base; \ - name ## _rtti_base_array.bases[2] = (char*)cl2 - base; \ - name ## _rtti_base_array.bases[3] = (char*)cl3 - base; \ - name ## _rtti_base_array.bases[4] = (char*)cl4 - base; \ - name ## _rtti_base_array.bases[5] = (char*)cl5 - base; \ - name ## _rtti_base_array.bases[6] = (char*)cl6 - base; \ - name ## _rtti_base_array.bases[7] = (char*)cl7 - base; \ - name ## _rtti_base_array.bases[8] = (char*)cl8 - base; \ - name ## _rtti_base_array.bases[9] = (char*)cl9 - base; \ - name ## _hierarchy.base_classes = (char*)&name ## _rtti_base_array - base; \ - name ## _rtti.type_descriptor = (char*)&name ## _type_info - base; \ - name ## _rtti.type_hierarchy = (char*)&name ## _hierarchy - base; \ - name ## _rtti.object_locator = (char*)&name ## _rtti - base; \ -} - -#define DEFINE_CXX_DATA(type, base_no, cl1, cl2, dtor) \ -\ -static cxx_type_info type ## _cxx_type_info = { \ - 0, \ - 0xdeadbeef, \ - { 0, -1, 0 }, \ - sizeof(type), \ - 0xdeadbeef \ -}; \ -\ -static cxx_type_info_table type ## _cxx_type_table = { \ - base_no+1, \ - { \ - 0xdeadbeef, \ - 0xdeadbeef, \ - 0xdeadbeef \ - } \ -}; \ -\ -static cxx_exception_type type ##_cxx_type = { \ - 0, \ - 0xdeadbeef, \ - 0, \ - 0xdeadbeef \ -}; \ -\ -static void init_ ## type ## _cxx(char *base) \ -{ \ - type ## _cxx_type_info.type_info = (char *)&type ## _type_info - base; \ - type ## _cxx_type_info.copy_ctor = (char *)MSVCP_ ## type ## _copy_ctor - base; \ - type ## _cxx_type_table.info[0] = (char *)&type ## _cxx_type_info - base; \ - type ## _cxx_type_table.info[1] = (char *)cl1 - base; \ - type ## _cxx_type_table.info[2] = (char *)cl2 - base; \ - type ## _cxx_type.destructor = (char *)dtor - base; \ - type ## _cxx_type.type_info_table = (char *)&type ## _cxx_type_table - base; \ -} - -#endif - -#define DEFINE_RTTI_DATA0(name, off, mangled_name) \ - DEFINE_RTTI_DATA(name, off, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name) -#define DEFINE_RTTI_DATA1(name, off, cl1, mangled_name) \ - DEFINE_RTTI_DATA(name, off, 1, cl1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name) -#define DEFINE_RTTI_DATA2(name, off, cl1, cl2, mangled_name) \ - DEFINE_RTTI_DATA(name, off, 2, cl1, cl2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name) -#define DEFINE_RTTI_DATA3(name, off, cl1, cl2, cl3, mangled_name) \ - DEFINE_RTTI_DATA(name, off, 3, cl1, cl2, cl3, NULL, NULL, NULL, NULL, NULL, NULL, mangled_name) -#define DEFINE_RTTI_DATA4(name, off, cl1, cl2, cl3, cl4, mangled_name) \ - DEFINE_RTTI_DATA(name, off, 4, cl1, cl2, cl3, cl4, NULL, NULL, NULL, NULL, NULL, mangled_name) -#define DEFINE_RTTI_DATA8(name, off, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, mangled_name) \ - DEFINE_RTTI_DATA(name, off, 8, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, NULL, mangled_name) -#define DEFINE_RTTI_DATA9(name, off, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name) \ - DEFINE_RTTI_DATA(name, off, 9, cl1, cl2, cl3, cl4, cl5, cl6, cl7, cl8, cl9, mangled_name) - -#define DEFINE_CXX_DATA0(name, dtor) \ - DEFINE_CXX_DATA(name, 0, NULL, NULL, dtor) -#define DEFINE_CXX_DATA1(name, cl1, dtor) \ - DEFINE_CXX_DATA(name, 1, cl1, NULL, dtor) -#define DEFINE_CXX_DATA2(name, cl1, cl2, dtor) \ - DEFINE_CXX_DATA(name, 2, cl1, cl2, dtor) - -#ifdef __i386__ - -#define CALL_VTBL_FUNC(this, off, ret, type, args) ((ret (WINAPI*)type)&vtbl_wrapper_##off)args - -extern void *vtbl_wrapper_0; -extern void *vtbl_wrapper_4; -extern void *vtbl_wrapper_8; -extern void *vtbl_wrapper_12; -extern void *vtbl_wrapper_16; -extern void *vtbl_wrapper_20; -extern void *vtbl_wrapper_24; -extern void *vtbl_wrapper_28; -extern void *vtbl_wrapper_32; -extern void *vtbl_wrapper_36; -extern void *vtbl_wrapper_40; -extern void *vtbl_wrapper_44; -extern void *vtbl_wrapper_48; -extern void *vtbl_wrapper_52; - -#else - -#define CALL_VTBL_FUNC(this, off, ret, type, args) ((ret (__cdecl***)type)this)[0][off/4]args - -#endif - -/* exception object */ -typedef void (*vtable_ptr)(void); -typedef struct __exception -{ - const vtable_ptr *vtable; - char *name; /* Name of this exception, always a new copy for each object */ - int do_free; /* Whether to free 'name' in our dtor */ -} exception; - -/* Internal: throws selected exception */ -typedef enum __exception_type { - EXCEPTION_RERAISE, - EXCEPTION, - EXCEPTION_BAD_ALLOC, - EXCEPTION_LOGIC_ERROR, - EXCEPTION_LENGTH_ERROR, - EXCEPTION_OUT_OF_RANGE, - EXCEPTION_INVALID_ARGUMENT, - EXCEPTION_RUNTIME_ERROR, - EXCEPTION_FAILURE, -} exception_type; -void throw_exception(exception_type, const char *); - -/* rtti */ -typedef struct __type_info -{ - const vtable_ptr *vtable; - char *name; /* Unmangled name, allocated lazily */ - char mangled[128]; /* Variable length, but we declare it large enough for static RTTI */ -} type_info; - -extern const vtable_ptr MSVCP_type_info_vtable; - -/* offsets for computing the this pointer */ -typedef struct -{ - int this_offset; /* offset of base class this pointer from start of object */ - int vbase_descr; /* offset of virtual base class descriptor */ - int vbase_offset; /* offset of this pointer offset in virtual base class descriptor */ -} this_ptr_offsets; - -/* dlls/msvcrt/cppexcept.h */ -typedef void (*cxx_copy_ctor)(void); - -#ifndef __x86_64__ - -typedef struct _rtti_base_descriptor -{ - const type_info *type_descriptor; - int num_base_classes; - this_ptr_offsets offsets; /* offsets for computing the this pointer */ - unsigned int attributes; -} rtti_base_descriptor; - -typedef struct _rtti_base_array -{ - const rtti_base_descriptor *bases[10]; /* First element is the class itself */ -} rtti_base_array; - -typedef struct _rtti_object_hierarchy -{ - unsigned int signature; - unsigned int attributes; - int array_len; /* Size of the array pointed to by 'base_classes' */ - const rtti_base_array *base_classes; -} rtti_object_hierarchy; - -typedef struct _rtti_object_locator -{ - unsigned int signature; - int base_class_offset; - unsigned int flags; - const type_info *type_descriptor; - const rtti_object_hierarchy *type_hierarchy; -} rtti_object_locator; - -typedef struct -{ - UINT flags; - const type_info *type_info; - this_ptr_offsets offsets; - unsigned int size; - cxx_copy_ctor copy_ctor; -} cxx_type_info; - -typedef struct -{ - UINT count; - const cxx_type_info *info[3]; -} cxx_type_info_table; - -typedef struct -{ - UINT flags; - void (*destructor)(void); - void* /*cxx_exc_custom_handler*/ custom_handler; - const cxx_type_info_table *type_info_table; -} cxx_exception_type; - -#else - -typedef struct -{ - unsigned int type_descriptor; - int num_base_classes; - this_ptr_offsets offsets; /* offsets for computing the this pointer */ - unsigned int attributes; -} rtti_base_descriptor; - -typedef struct -{ - unsigned int bases[10]; /* First element is the class itself */ -} rtti_base_array; - -typedef struct -{ - unsigned int signature; - unsigned int attributes; - int array_len; /* Size of the array pointed to by 'base_classes' */ - unsigned int base_classes; -} rtti_object_hierarchy; - -typedef struct -{ - unsigned int signature; - int base_class_offset; - unsigned int flags; - unsigned int type_descriptor; - unsigned int type_hierarchy; - unsigned int object_locator; -} rtti_object_locator; - -typedef struct -{ - UINT flags; - unsigned int type_info; - this_ptr_offsets offsets; - unsigned int size; - unsigned int copy_ctor; -} cxx_type_info; - -typedef struct -{ - UINT count; - unsigned int info[3]; -} cxx_type_info_table; - -typedef struct -{ - UINT flags; - unsigned int destructor; - unsigned int custom_handler; - unsigned int type_info_table; -} cxx_exception_type; - -#endif diff --git a/dlls/msvcp71/exception.c b/dlls/msvcp71/exception.c deleted file mode 100644 index 1f4ffd2eed2..00000000000 --- a/dlls/msvcp71/exception.c +++ /dev/null @@ -1,563 +0,0 @@ -/* - * Copyright 2010 Piotr Caban for CodeWeavers - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "config.h" - -#include - -#include "msvcp.h" - -#include "windef.h" -#include "winbase.h" -#include "wine/debug.h" -WINE_DEFAULT_DEBUG_CHANNEL(msvcp); - -#define CLASS_IS_SIMPLE_TYPE 1 -#define CLASS_HAS_VIRTUAL_BASE_CLASS 4 - -void WINAPI _CxxThrowException(exception*,const cxx_exception_type*); - -/* vtables */ -extern const vtable_ptr MSVCP_exception_vtable; -extern const vtable_ptr MSVCP_bad_alloc_vtable; -extern const vtable_ptr MSVCP_logic_error_vtable; -extern const vtable_ptr MSVCP_length_error_vtable; -extern const vtable_ptr MSVCP_out_of_range_vtable; -extern const vtable_ptr MSVCP_invalid_argument_vtable; -extern const vtable_ptr MSVCP_runtime_error_vtable; -extern const vtable_ptr MSVCP_failure_vtable; - -static void MSVCP_type_info_dtor(type_info * _this) -{ - free(_this->name); -} - -/* Unexported */ -DEFINE_THISCALL_WRAPPER(MSVCP_type_info_vector_dtor,8) -void * __thiscall MSVCP_type_info_vector_dtor(type_info * _this, unsigned int flags) -{ - TRACE("(%p %x)\n", _this, flags); - if (flags & 2) - { - /* we have an array, with the number of elements stored before the first object */ - INT_PTR i, *ptr = (INT_PTR *)_this - 1; - - for (i = *ptr - 1; i >= 0; i--) MSVCP_type_info_dtor(_this + i); - MSVCRT_operator_delete(ptr); - } - else - { - MSVCP_type_info_dtor(_this); - if (flags & 1) MSVCRT_operator_delete(_this); - } - return _this; -} - -DEFINE_RTTI_DATA0( type_info, 0, ".?AVtype_info@@" ) - -static exception* MSVCP_exception_ctor(exception *this, const char **name) -{ - TRACE("(%p %s)\n", this, *name); - - this->vtable = &MSVCP_exception_vtable; - if(*name) { - unsigned int name_len = strlen(*name) + 1; - this->name = malloc(name_len); - memcpy(this->name, *name, name_len); - this->do_free = TRUE; - } else { - this->name = NULL; - this->do_free = FALSE; - } - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_exception_copy_ctor,8) -exception* __thiscall MSVCP_exception_copy_ctor(exception *this, const exception *rhs) -{ - TRACE("(%p,%p)\n", this, rhs); - - if(!rhs->do_free) { - this->vtable = &MSVCP_exception_vtable; - this->name = rhs->name; - this->do_free = FALSE; - } else - MSVCP_exception_ctor(this, (const char**)&rhs->name); - TRACE("name = %s\n", this->name); - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_exception_dtor,4) -void __thiscall MSVCP_exception_dtor(exception *this) -{ - TRACE("(%p)\n", this); - this->vtable = &MSVCP_exception_vtable; - if(this->do_free) - free(this->name); -} - -DEFINE_THISCALL_WRAPPER(MSVCP_exception_vector_dtor, 8) -void * __thiscall MSVCP_exception_vector_dtor(exception *this, unsigned int flags) -{ - TRACE("%p %x\n", this, flags); - if(flags & 2) { - /* we have an array, with the number of elements stored before the first object */ - INT_PTR i, *ptr = (INT_PTR *)this-1; - - for(i=*ptr-1; i>=0; i--) - MSVCP_exception_dtor(this+i); - MSVCRT_operator_delete(ptr); - } else { - MSVCP_exception_dtor(this); - if(flags & 1) - MSVCRT_operator_delete(this); - } - - return this; -} - -DEFINE_RTTI_DATA0(exception, 0, ".?AVexception@std@@") -DEFINE_CXX_DATA0(exception, MSVCP_exception_dtor) - -/* bad_alloc class data */ -typedef exception bad_alloc; - -static bad_alloc* MSVCP_bad_alloc_ctor(bad_alloc *this, const char **name) -{ - TRACE("%p %s\n", this, *name); - MSVCP_exception_ctor(this, name); - this->vtable = &MSVCP_bad_alloc_vtable; - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_bad_alloc_copy_ctor, 8) -bad_alloc* __thiscall MSVCP_bad_alloc_copy_ctor(bad_alloc *this, const bad_alloc *rhs) -{ - TRACE("%p %p\n", this, rhs); - MSVCP_exception_copy_ctor(this, rhs); - this->vtable = &MSVCP_bad_alloc_vtable; - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_bad_alloc_dtor, 4) -void __thiscall MSVCP_bad_alloc_dtor(bad_alloc *this) -{ - TRACE("%p\n", this); - MSVCP_exception_dtor(this); -} - -DEFINE_THISCALL_WRAPPER(MSVCP_bad_alloc_vector_dtor, 8) -void * __thiscall MSVCP_bad_alloc_vector_dtor(bad_alloc *this, unsigned int flags) -{ - TRACE("%p %x\n", this, flags); - if(flags & 2) { - /* we have an array, with the number of elements stored before the first object */ - INT_PTR i, *ptr = (INT_PTR *)this-1; - - for(i=*ptr-1; i>=0; i--) - MSVCP_bad_alloc_dtor(this+i); - MSVCRT_operator_delete(ptr); - } else { - MSVCP_bad_alloc_dtor(this); - if(flags & 1) - MSVCRT_operator_delete(this); - } - - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_what_exception,4) -const char* __thiscall MSVCP_what_exception(exception * this) -{ - TRACE("(%p) returning %s\n", this, this->name); - return this->name ? this->name : "Unknown exception"; -} - -DEFINE_RTTI_DATA1(bad_alloc, 0, &exception_rtti_base_descriptor, ".?AVbad_alloc@std@@") -DEFINE_CXX_DATA1(bad_alloc, &exception_cxx_type_info, MSVCP_bad_alloc_dtor) - -/* logic_error class data */ -typedef struct _logic_error { - exception e; - basic_string_char str; -} logic_error; - -static logic_error* MSVCP_logic_error_ctor( - logic_error *this, const char **name) -{ - TRACE("%p %s\n", this, *name); - this->e.vtable = &MSVCP_logic_error_vtable; - this->e.name = NULL; - this->e.do_free = FALSE; - MSVCP_basic_string_char_ctor_cstr(&this->str, *name); - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_copy_ctor, 8) -logic_error* __thiscall MSVCP_logic_error_copy_ctor( - logic_error *this, logic_error *rhs) -{ - TRACE("%p %p\n", this, rhs); - MSVCP_exception_copy_ctor(&this->e, &rhs->e); - MSVCP_basic_string_char_copy_ctor(&this->str, &rhs->str); - this->e.vtable = &MSVCP_logic_error_vtable; - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_dtor, 4) -void __thiscall MSVCP_logic_error_dtor(logic_error *this) -{ - TRACE("%p\n", this); - MSVCP_exception_dtor(&this->e); - MSVCP_basic_string_char_dtor(&this->str); -} - -DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_vector_dtor, 8) -void* __thiscall MSVCP_logic_error_vector_dtor( - logic_error *this, unsigned int flags) -{ - TRACE("%p %x\n", this, flags); - if(flags & 2) { - /* we have an array, with the number of elements stored before the first object */ - INT_PTR i, *ptr = (INT_PTR *)this-1; - - for(i=*ptr-1; i>=0; i--) - MSVCP_logic_error_dtor(this+i); - MSVCRT_operator_delete(ptr); - } else { - MSVCP_logic_error_dtor(this); - if(flags & 1) - MSVCRT_operator_delete(this); - } - - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_what, 4) -const char* __thiscall MSVCP_logic_error_what(logic_error *this) -{ - TRACE("%p\n", this); - return MSVCP_basic_string_char_c_str(&this->str); -} - -DEFINE_RTTI_DATA1(logic_error, 0, &exception_rtti_base_descriptor, ".?AVlogic_error@std@@") -DEFINE_CXX_DATA1(logic_error, &exception_cxx_type_info, MSVCP_logic_error_dtor) - -/* length_error class data */ -typedef logic_error length_error; - -static length_error* MSVCP_length_error_ctor( - length_error *this, const char **name) -{ - TRACE("%p %s\n", this, *name); - MSVCP_logic_error_ctor(this, name); - this->e.vtable = &MSVCP_length_error_vtable; - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_length_error_copy_ctor, 8) -length_error* __thiscall MSVCP_length_error_copy_ctor( - length_error *this, length_error *rhs) -{ - TRACE("%p %p\n", this, rhs); - MSVCP_logic_error_copy_ctor(this, rhs); - this->e.vtable = &MSVCP_length_error_vtable; - return this; -} - -DEFINE_RTTI_DATA2(length_error, 0, &logic_error_rtti_base_descriptor, &exception_rtti_base_descriptor, ".?AVlength_error@std@@") -DEFINE_CXX_DATA2(length_error, &logic_error_cxx_type_info, &exception_cxx_type_info, MSVCP_logic_error_dtor) - -/* out_of_range class data */ -typedef logic_error out_of_range; - -static out_of_range* MSVCP_out_of_range_ctor( - out_of_range *this, const char **name) -{ - TRACE("%p %s\n", this, *name); - MSVCP_logic_error_ctor(this, name); - this->e.vtable = &MSVCP_out_of_range_vtable; - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_out_of_range_copy_ctor, 8) -out_of_range* __thiscall MSVCP_out_of_range_copy_ctor( - out_of_range *this, out_of_range *rhs) -{ - TRACE("%p %p\n", this, rhs); - MSVCP_logic_error_copy_ctor(this, rhs); - this->e.vtable = &MSVCP_out_of_range_vtable; - return this; -} - -DEFINE_RTTI_DATA2(out_of_range, 0, &logic_error_rtti_base_descriptor, &exception_rtti_base_descriptor, ".?AVout_of_range@std@@") -DEFINE_CXX_DATA2(out_of_range, &logic_error_cxx_type_info, &exception_cxx_type_info, MSVCP_logic_error_dtor) - -/* invalid_argument class data */ -typedef logic_error invalid_argument; - -static invalid_argument* MSVCP_invalid_argument_ctor( - invalid_argument *this, const char **name) -{ - TRACE("%p %s\n", this, *name); - MSVCP_logic_error_ctor(this, name); - this->e.vtable = &MSVCP_invalid_argument_vtable; - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_invalid_argument_copy_ctor, 8) -invalid_argument* __thiscall MSVCP_invalid_argument_copy_ctor( - invalid_argument *this, invalid_argument *rhs) -{ - TRACE("%p %p\n", this, rhs); - MSVCP_logic_error_copy_ctor(this, rhs); - this->e.vtable = &MSVCP_invalid_argument_vtable; - return this; -} - -DEFINE_RTTI_DATA2(invalid_argument, 0, &logic_error_rtti_base_descriptor, &exception_rtti_base_descriptor, ".?AVinvalid_argument@std@@") -DEFINE_CXX_DATA2(invalid_argument, &logic_error_cxx_type_info, &exception_cxx_type_info, MSVCP_logic_error_dtor) - -/* runtime_error class data */ -typedef struct { - exception e; - basic_string_char str; -} runtime_error; - -static runtime_error* MSVCP_runtime_error_ctor( - runtime_error *this, const char **name) -{ - TRACE("%p %s\n", this, *name); - this->e.vtable = &MSVCP_runtime_error_vtable; - this->e.name = NULL; - this->e.do_free = FALSE; - MSVCP_basic_string_char_ctor_cstr(&this->str, *name); - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_copy_ctor, 8) -runtime_error* __thiscall MSVCP_runtime_error_copy_ctor( - runtime_error *this, runtime_error *rhs) -{ - TRACE("%p %p\n", this, rhs); - MSVCP_exception_copy_ctor(&this->e, &rhs->e); - MSVCP_basic_string_char_copy_ctor(&this->str, &rhs->str); - this->e.vtable = &MSVCP_runtime_error_vtable; - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_dtor, 4) -void __thiscall MSVCP_runtime_error_dtor(runtime_error *this) -{ - TRACE("%p\n", this); - MSVCP_exception_dtor(&this->e); - MSVCP_basic_string_char_dtor(&this->str); -} - -DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_vector_dtor, 8) -void* __thiscall MSVCP_runtime_error_vector_dtor( - runtime_error *this, unsigned int flags) -{ - TRACE("%p %x\n", this, flags); - if(flags & 2) { - /* we have an array, with the number of elements stored before the first object */ - INT_PTR i, *ptr = (INT_PTR *)this-1; - - for(i=*ptr-1; i>=0; i--) - MSVCP_runtime_error_dtor(this+i); - MSVCRT_operator_delete(ptr); - } else { - MSVCP_runtime_error_dtor(this); - if(flags & 1) - MSVCRT_operator_delete(this); - } - - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_what, 4) -const char* __thiscall MSVCP_runtime_error_what(runtime_error *this) -{ - TRACE("%p\n", this); - return MSVCP_basic_string_char_c_str(&this->str); -} - -DEFINE_RTTI_DATA1(runtime_error, 0, &exception_rtti_base_descriptor, ".?AVruntime_error@std@@") -DEFINE_CXX_DATA1(runtime_error, &exception_cxx_type_info, MSVCP_runtime_error_dtor) - -/* failure class data */ -typedef runtime_error failure; - -static failure* MSVCP_failure_ctor( - failure *this, const char **name) -{ - TRACE("%p %s\n", this, *name); - MSVCP_runtime_error_ctor(this, name); - this->e.vtable = &MSVCP_failure_vtable; - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_failure_copy_ctor, 8) -failure* __thiscall MSVCP_failure_copy_ctor( - failure *this, failure *rhs) -{ - TRACE("%p %p\n", this, rhs); - MSVCP_runtime_error_copy_ctor(this, rhs); - this->e.vtable = &MSVCP_failure_vtable; - return this; -} - -DEFINE_THISCALL_WRAPPER(MSVCP_failure_dtor, 4) -void __thiscall MSVCP_failure_dtor(failure *this) -{ - TRACE("%p\n", this); - MSVCP_runtime_error_dtor(this); -} - -DEFINE_THISCALL_WRAPPER(MSVCP_failure_vector_dtor, 8) -void* __thiscall MSVCP_failure_vector_dtor( - failure *this, unsigned int flags) -{ - TRACE("%p %x\n", this, flags); - return MSVCP_runtime_error_vector_dtor(this, flags); -} - -DEFINE_THISCALL_WRAPPER(MSVCP_failure_what, 4) -const char* __thiscall MSVCP_failure_what(failure *this) -{ - TRACE("%p\n", this); - return MSVCP_runtime_error_what(this); -} - -DEFINE_RTTI_DATA2(failure, 0, &runtime_error_rtti_base_descriptor, &exception_rtti_base_descriptor, ".?AVfailure@std@@") -DEFINE_CXX_DATA2(failure, &runtime_error_cxx_type_info, &exception_cxx_type_info, MSVCP_runtime_error_dtor) - -/* ?_Nomemory@std@@YAXXZ */ -void __cdecl _Nomemory(void) -{ - TRACE("()\n"); - throw_exception(EXCEPTION_BAD_ALLOC, NULL); -} - -#ifndef __GNUC__ -void __asm_dummy_vtables(void) { -#endif - __ASM_VTABLE(type_info, - VTABLE_ADD_FUNC(MSVCP_type_info_vector_dtor)); - __ASM_VTABLE(exception, - VTABLE_ADD_FUNC(MSVCP_exception_vector_dtor) - VTABLE_ADD_FUNC(MSVCP_what_exception)); - __ASM_VTABLE(bad_alloc, - VTABLE_ADD_FUNC(MSVCP_bad_alloc_vector_dtor) - VTABLE_ADD_FUNC(MSVCP_what_exception)); - __ASM_VTABLE(logic_error, - VTABLE_ADD_FUNC(MSVCP_logic_error_vector_dtor) - VTABLE_ADD_FUNC(MSVCP_logic_error_what)); - __ASM_VTABLE(length_error, - VTABLE_ADD_FUNC(MSVCP_logic_error_vector_dtor) - VTABLE_ADD_FUNC(MSVCP_logic_error_what)); - __ASM_VTABLE(out_of_range, - VTABLE_ADD_FUNC(MSVCP_logic_error_vector_dtor) - VTABLE_ADD_FUNC(MSVCP_logic_error_what)); - __ASM_VTABLE(invalid_argument, - VTABLE_ADD_FUNC(MSVCP_logic_error_vector_dtor) - VTABLE_ADD_FUNC(MSVCP_logic_error_what)); - __ASM_VTABLE(runtime_error, - VTABLE_ADD_FUNC(MSVCP_runtime_error_vector_dtor) - VTABLE_ADD_FUNC(MSVCP_runtime_error_what)); - __ASM_VTABLE(failure, - VTABLE_ADD_FUNC(MSVCP_failure_vector_dtor) - VTABLE_ADD_FUNC(MSVCP_failure_what)); -#ifndef __GNUC__ -} -#endif - -/* Internal: throws selected exception */ -void throw_exception(exception_type et, const char *str) -{ - const char *addr = str; - - switch(et) { - case EXCEPTION_RERAISE: - _CxxThrowException(NULL, NULL); - case EXCEPTION: { - exception e; - MSVCP_exception_ctor(&e, &addr); - _CxxThrowException(&e, &exception_cxx_type); - } - case EXCEPTION_BAD_ALLOC: { - bad_alloc e; - MSVCP_bad_alloc_ctor(&e, &addr); - _CxxThrowException(&e, &bad_alloc_cxx_type); - } - case EXCEPTION_LOGIC_ERROR: { - logic_error e; - MSVCP_logic_error_ctor(&e, &addr); - _CxxThrowException((exception*)&e, &logic_error_cxx_type); - } - case EXCEPTION_LENGTH_ERROR: { - length_error e; - MSVCP_length_error_ctor(&e, &addr); - _CxxThrowException((exception*)&e, &length_error_cxx_type); - } - case EXCEPTION_OUT_OF_RANGE: { - out_of_range e; - MSVCP_out_of_range_ctor(&e, &addr); - _CxxThrowException((exception*)&e, &out_of_range_cxx_type); - } - case EXCEPTION_INVALID_ARGUMENT: { - invalid_argument e; - MSVCP_invalid_argument_ctor(&e, &addr); - _CxxThrowException((exception*)&e, &invalid_argument_cxx_type); - } - case EXCEPTION_RUNTIME_ERROR: { - runtime_error e; - MSVCP_runtime_error_ctor(&e, &addr); - _CxxThrowException((exception*)&e, &runtime_error_cxx_type); - } - case EXCEPTION_FAILURE: { - failure e; - MSVCP_failure_ctor(&e, &addr); - _CxxThrowException((exception*)&e, &failure_cxx_type); - } - } -} - -void init_exception(void *base) -{ -#ifdef __x86_64__ - init_type_info_rtti(base); - init_exception_rtti(base); - init_bad_alloc_rtti(base); - init_logic_error_rtti(base); - init_length_error_rtti(base); - init_out_of_range_rtti(base); - init_invalid_argument_rtti(base); - init_runtime_error_rtti(base); - init_failure_rtti(base); - - init_exception_cxx(base); - init_bad_alloc_cxx(base); - init_logic_error_cxx(base); - init_length_error_cxx(base); - init_out_of_range_cxx(base); - init_invalid_argument_cxx(base); - init_runtime_error_cxx(base); - init_failure_cxx(base); -#endif -} diff --git a/dlls/msvcp71/math.c b/dlls/msvcp71/math.c deleted file mode 100644 index 7d56c70eea0..00000000000 --- a/dlls/msvcp71/math.c +++ /dev/null @@ -1,2169 +0,0 @@ -/* - * Copyright 2011 Alexandre Julliard - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "config.h" - -#include -#include -#include -#define _USE_MATH_DEFINES -#include - -#include "msvcp.h" -#include "windef.h" -#include "winbase.h" - -typedef double LDOUBLE; /* long double is just a double */ - -typedef struct { } std_Num_base; -typedef struct { } std_Ctraits; - -enum std_float_denorm_style -{ - denorm_indeterminate = -1, - denorm_absent = 0, - denorm_present = 1 -}; - -enum std_float_round_style -{ - round_indeterminate = -1, - round_toward_zero = 0, - round_to_nearest = 1, - round_toward_infinity = 2, - round_toward_neg_infinity = 3 -}; - -/* these are defined as integers but the bit patterns are then interpreted as floats/doubles */ -const DWORD _FDenorm = 1; -const ULONGLONG _Denorm = 1; -const ULONGLONG _LDenorm = 1; -const DWORD _FInf = 0x7f800000; -const ULONGLONG _Inf = (ULONGLONG)0x7ff00000 << 32; -const ULONGLONG _LInf = (ULONGLONG)0x7ff00000 << 32; -const DWORD _FNan = 0x7fc00000; -const ULONGLONG _Nan = (ULONGLONG)0x7ff80000 << 32; -const ULONGLONG _LNan = (ULONGLONG)0x7ff80000 << 32; -const DWORD _FSnan = 0x7f800001; -const ULONGLONG _Snan = ((ULONGLONG)0x7ff00000 << 32) + 1; -const ULONGLONG _LSnan = ((ULONGLONG)0x7ff00000 << 32) + 1; -const ULONGLONG _LZero = 0; -const ULONGLONG _Hugeval = (ULONGLONG)0x7ff00000 << 32; - -const float _FEps = FLT_EPSILON; -const double _Eps = DBL_EPSILON; -const LDOUBLE _LEps = LDBL_EPSILON; - -/* ?digits10@?$numeric_limits@C@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_signed_char_digits10 = 2; - -/* ?digits10@?$numeric_limits@D@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_char_digits10 = 2; - -/* ?digits10@?$numeric_limits@E@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_unsigned_char_digits10 = 2; - -/* ?digits10@?$numeric_limits@F@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_short_digits10 = 4; - -/* ?digits10@?$numeric_limits@G@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_unsigned_short_digits10 = 4; - -/* ?digits10@?$numeric_limits@H@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_int_digits10 = 9; - -/* ?digits10@?$numeric_limits@I@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_unsigned_int_digits10 = 9; - -/* ?digits10@?$numeric_limits@J@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_long_digits10 = 9; - -/* ?digits10@?$numeric_limits@K@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_unsigned_long_digits10 = 9; - -/* ?digits10@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_float_digits10 = FLT_DIG; - -/* ?digits10@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_double_digits10 = DBL_DIG; - -/* ?digits10@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_long_double_digits10 = LDBL_DIG; - -/* ?digits10@?$numeric_limits@_J@std@@2HB -> public: static int const std::numeric_limits<__int64>::digits10 */ -const int std_numeric_limits_int64_digits10 = 18; - -/* ?digits10@?$numeric_limits@_K@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_unsigned_int64_digits10 = 18; - -/* ?digits10@?$numeric_limits@_N@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_bool_digits10 = 0; - -/* ?digits10@?$numeric_limits@_W@std@@2HB -> public: static int const std::numeric_limits::digits10 */ -const int std_numeric_limits_wchar_t_digits10 = 4; - -/* ?digits10@_Num_base@std@@2HB -> public: static int const std::_Num_base::digits10 */ -const int std_Num_base_digits10 = 0; - -/* ?digits@?$numeric_limits@C@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_signed_char_digits = 7; - -/* ?digits@?$numeric_limits@D@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_char_digits = (CHAR_MIN < 0) ? 7 : 8; - -/* ?digits@?$numeric_limits@E@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_unsigned_char_digits = 8; - -/* ?digits@?$numeric_limits@F@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_short_digits = 15; - -/* ?digits@?$numeric_limits@G@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_unsigned_short_digits = 16; - -/* ?digits@?$numeric_limits@H@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_int_digits = 31; - -/* ?digits@?$numeric_limits@I@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_unsigned_int_digits = 32; - -/* ?digits@?$numeric_limits@J@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_long_digits = 31; - -/* ?digits@?$numeric_limits@K@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_unsigned_long_digits = 32; - -/* ?digits@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_float_digits = FLT_MANT_DIG; - -/* ?digits@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_double_digits = DBL_MANT_DIG; - -/* ?digits@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_long_double_digits = LDBL_MANT_DIG; - -/* ?digits@?$numeric_limits@_J@std@@2HB -> public: static int const std::numeric_limits<__int64>::digits */ -const int std_numeric_limits_int64_digits = 63; - -/* ?digits@?$numeric_limits@_K@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_unsigned_int64_digits = 64; - -/* ?digits@?$numeric_limits@_N@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_bool_digits = 1; - -/* ?digits@?$numeric_limits@_W@std@@2HB -> public: static int const std::numeric_limits::digits */ -const int std_numeric_limits_wchar_t_digits = 16; - -/* ?digits@_Num_base@std@@2HB -> public: static int const std::_Num_base::digits */ -const int std_Num_base_digits = 0; - -/* ?has_denorm@_Num_base@std@@2W4float_denorm_style@2@B -> public: static enum std::float_denorm_style const std::_Num_base::has_denorm */ -const enum std_float_denorm_style std_Num_base_has_denorm = denorm_absent; - -/* ?has_denorm@_Num_float_base@std@@2W4float_denorm_style@2@B -> public: static enum std::float_denorm_style const std::_Num_float_base::has_denorm */ -const enum std_float_denorm_style std_Num_float_base_has_denorm = denorm_present; - -/* ?has_denorm_loss@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::has_denorm_loss */ -const BOOLEAN std_Num_base_has_denorm_loss = FALSE; - -/* ?has_denorm_loss@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::has_denorm_loss */ -const BOOLEAN std_Num_float_base_has_denorm_loss = TRUE; - -/* ?has_infinity@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::has_infinity */ -const BOOLEAN std_Num_base_has_infinity = FALSE; - -/* ?has_infinity@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::has_infinity */ -const BOOLEAN std_Num_float_base_has_infinity = TRUE; - -/* ?has_quiet_NaN@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::has_quiet_NaN */ -const BOOLEAN std_Num_base_has_quiet_NaN = FALSE; - -/* ?has_quiet_NaN@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::has_quiet_NaN */ -const BOOLEAN std_Num_float_base_has_quiet_NaN = TRUE; - -/* ?has_signaling_NaN@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::has_signaling_NaN */ -const BOOLEAN std_Num_base_has_signaling_NaN = FALSE; - -/* ?has_signaling_NaN@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::has_signaling_NaN */ -const BOOLEAN std_Num_float_base_has_signaling_NaN = TRUE; - -/* ?is_bounded@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_bounded */ -const BOOLEAN std_Num_base_is_bounded = FALSE; - -/* ?is_bounded@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_bounded */ -const BOOLEAN std_Num_float_base_is_bounded = TRUE; - -/* ?is_bounded@_Num_int_base@std@@2_NB -> public: static bool const std::_Num_int_base::is_bounded */ -const BOOLEAN std_Num_int_base_is_bounded = TRUE; - -/* ?is_exact@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_exact */ -const BOOLEAN std_Num_base_is_exact = FALSE; - -/* ?is_exact@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_exact */ -const BOOLEAN std_Num_float_base_is_exact = FALSE; - -/* ?is_exact@_Num_int_base@std@@2_NB -> public: static bool const std::_Num_int_base::is_exact */ -const BOOLEAN std_Num_int_base_is_exact = TRUE; - -/* ?is_iec559@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_iec559 */ -const BOOLEAN std_Num_base_is_iec559 = FALSE; - -/* ?is_iec559@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_iec559 */ -const BOOLEAN std_Num_float_base_is_iec559 = TRUE; - -/* ?is_integer@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_integer */ -const BOOLEAN std_Num_base_is_integer = FALSE; - -/* ?is_integer@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_integer */ -const BOOLEAN std_Num_float_base_is_integer = FALSE; - -/* ?is_integer@_Num_int_base@std@@2_NB -> public: static bool const std::_Num_int_base::is_integer */ -const BOOLEAN std_Num_int_base_is_integer = TRUE; - -/* ?is_modulo@?$numeric_limits@_N@std@@2_NB -> public: static bool const std::numeric_limits::is_modulo */ -const BOOLEAN std_numeric_limits_bool_is_modulo = FALSE; - -/* ?is_modulo@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_modulo */ -const BOOLEAN std_Num_base_is_modulo = FALSE; - -/* ?is_modulo@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_modulo */ -const BOOLEAN std_Num_float_base_is_modulo = FALSE; - -/* ?is_modulo@_Num_int_base@std@@2_NB -> public: static bool const std::_Num_int_base::is_modulo */ -const BOOLEAN std_Num_int_base_is_modulo = TRUE; - -/* ?is_signed@?$numeric_limits@C@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_signed_char_is_signed = TRUE; - -/* ?is_signed@?$numeric_limits@D@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_char_is_signed = (CHAR_MIN < 0); - -/* ?is_signed@?$numeric_limits@E@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_unsigned_char_is_signed = FALSE; - -/* ?is_signed@?$numeric_limits@F@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_short_is_signed = TRUE; - -/* ?is_signed@?$numeric_limits@G@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_unsigned_short_is_signed = FALSE; - -/* ?is_signed@?$numeric_limits@H@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_int_is_signed = TRUE; - -/* ?is_signed@?$numeric_limits@I@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_unsigned_int_is_signed = FALSE; - -/* ?is_signed@?$numeric_limits@J@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_long_is_signed = TRUE; - -/* ?is_signed@?$numeric_limits@K@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_unsigned_long_is_signed = FALSE; - -/* ?is_signed@?$numeric_limits@_J@std@@2_NB -> public: static bool const std::numeric_limits<__int64>::is_signed */ -const BOOLEAN std_numeric_limits_int64_is_signed = TRUE; - -/* ?is_signed@?$numeric_limits@_K@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_unsigned_int64_is_signed = FALSE; - -/* ?is_signed@?$numeric_limits@_N@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_bool_is_signed = FALSE; - -/* ?is_signed@?$numeric_limits@_W@std@@2_NB -> public: static bool const std::numeric_limits::is_signed */ -const BOOLEAN std_numeric_limits_wchar_t_is_signed = FALSE; - -/* ?is_signed@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_signed */ -const BOOLEAN std_Num_base_is_signed = FALSE; - -/* ?is_signed@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_signed */ -const BOOLEAN std_Num_float_base_is_signed = TRUE; - -/* ?is_specialized@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::is_specialized */ -const BOOLEAN std_Num_base_is_specialized = FALSE; - -/* ?is_specialized@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::is_specialized */ -const BOOLEAN std_Num_float_base_is_specialized = TRUE; - -/* ?is_specialized@_Num_int_base@std@@2_NB -> public: static bool const std::_Num_int_base::is_specialized */ -const BOOLEAN std_Num_int_base_is_specialized = TRUE; - -/* ?max_exponent10@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits::max_exponent10 */ -const int std_numeric_limits_float_max_exponent10 = FLT_MAX_10_EXP; - -/* ?max_exponent10@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits::max_exponent10 */ -const int std_numeric_limits_double_max_exponent10 = DBL_MAX_10_EXP; - -/* ?max_exponent10@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits::max_exponent10 */ -const int std_numeric_limits_long_double_max_exponent10 = LDBL_MAX_10_EXP; - -/* ?max_exponent10@_Num_base@std@@2HB -> public: static int const std::_Num_base::max_exponent10 */ -const int std_Num_base_max_exponent10 = 0; - -/* ?max_exponent@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits::max_exponent */ -const int std_numeric_limits_float_max_exponent = FLT_MAX_EXP; - -/* ?max_exponent@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits::max_exponent */ -const int std_numeric_limits_double_max_exponent = DBL_MAX_EXP; - -/* ?max_exponent@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits::max_exponent */ -const int std_numeric_limits_long_double_max_exponent = LDBL_MAX_EXP; - -/* ?max_exponent@_Num_base@std@@2HB -> public: static int const std::_Num_base::max_exponent */ -const int std_Num_base_max_exponent = 0; - -/* ?min_exponent10@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits::min_exponent10 */ -const int std_numeric_limits_float_min_exponent10 = FLT_MIN_10_EXP; - -/* ?min_exponent10@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits::min_exponent10 */ -const int std_numeric_limits_double_min_exponent10 = DBL_MIN_10_EXP; - -/* ?min_exponent10@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits::min_exponent10 */ -const int std_numeric_limits_long_double_min_exponent10 = LDBL_MIN_10_EXP; - -/* ?min_exponent10@_Num_base@std@@2HB -> public: static int const std::_Num_base::min_exponent10 */ -const int std_Num_base_min_exponent10 = 0; - -/* ?min_exponent@?$numeric_limits@M@std@@2HB -> public: static int const std::numeric_limits::min_exponent */ -const int std_numeric_limits_float_min_exponent = FLT_MIN_EXP; - -/* ?min_exponent@?$numeric_limits@N@std@@2HB -> public: static int const std::numeric_limits::min_exponent */ -const int std_numeric_limits_double_min_exponent = DBL_MIN_EXP; - -/* ?min_exponent@?$numeric_limits@O@std@@2HB -> public: static int const std::numeric_limits::min_exponent */ -const int std_numeric_limits_long_double_min_exponent = LDBL_MIN_EXP; - -/* ?min_exponent@_Num_base@std@@2HB -> public: static int const std::_Num_base::min_exponent */ -const int std_Num_base_min_exponent = 0; - -/* ?radix@_Num_base@std@@2HB -> public: static int const std::_Num_base::radix */ -const int std_Num_base_radix = 0; - -/* ?radix@_Num_float_base@std@@2HB -> public: static int const std::_Num_float_base::radix */ -const int std_Num_float_base_radix = FLT_RADIX; - -/* ?radix@_Num_int_base@std@@2HB -> public: static int const std::_Num_int_base::radix */ -const int std_Num_int_base_radix = 2; - -/* ?round_style@_Num_base@std@@2W4float_round_style@2@B -> public: static enum std::float_round_style const std::_Num_base::round_style */ -const enum std_float_round_style std_Num_base_round_style = round_toward_zero; - -/* ?round_style@_Num_float_base@std@@2W4float_round_style@2@B -> public: static enum std::float_round_style const std::_Num_float_base::round_style */ -const enum std_float_round_style std_Num_float_base_round_style = round_to_nearest; - -/* ?tinyness_before@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::tinyness_before */ -const BOOLEAN std_Num_base_tinyness_before = FALSE; - -/* ?tinyness_before@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::tinyness_before */ -const BOOLEAN std_Num_float_base_tinyness_before = TRUE; - -/* ?traps@_Num_base@std@@2_NB -> public: static bool const std::_Num_base::traps */ -const BOOLEAN std_Num_base_traps = FALSE; - -/* ?traps@_Num_float_base@std@@2_NB -> public: static bool const std::_Num_float_base::traps */ -const BOOLEAN std_Num_float_base_traps = TRUE; - -/* ??4?$numeric_limits@C@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@C@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@D@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@D@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@E@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@E@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@F@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@F@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@G@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@G@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@H@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@H@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@I@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@I@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@J@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@J@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@K@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@K@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@M@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@M@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@N@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@N@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@O@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@O@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@_J@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits<__int64> & __thiscall std::numeric_limits<__int64>::operator=(class std::numeric_limits<__int64> const &) */ -/* ??4?$numeric_limits@_J@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits<__int64> & __ptr64 __cdecl std::numeric_limits<__int64>::operator=(class std::numeric_limits<__int64> const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@_K@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@_K@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@_N@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@_N@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4?$numeric_limits@_W@std@@QAEAAV01@ABV01@@Z -> public: class std::numeric_limits & __thiscall std::numeric_limits::operator=(class std::numeric_limits const &) */ -/* ??4?$numeric_limits@_W@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::numeric_limits & __ptr64 __cdecl std::numeric_limits::operator=(class std::numeric_limits const & __ptr64) __ptr64 */ -/* ??4_Num_base@std@@QAEAAU01@ABU01@@Z -> public: struct std::_Num_base & __thiscall std::_Num_base::operator=(struct std::_Num_base const &) */ -/* ??4_Num_base@std@@QEAAAEAU01@AEBU01@@Z -> public: struct std::_Num_base & __ptr64 __cdecl std::_Num_base::operator=(struct std::_Num_base const & __ptr64) __ptr64 */ -/* ??4_Num_float_base@std@@QAEAAU01@ABU01@@Z -> public: struct std::_Num_float_base & __thiscall std::_Num_float_base::operator=(struct std::_Num_float_base const &) */ -/* ??4_Num_float_base@std@@QEAAAEAU01@AEBU01@@Z -> public: struct std::_Num_float_base & __ptr64 __cdecl std::_Num_float_base::operator=(struct std::_Num_float_base const & __ptr64) __ptr64 */ -/* ??4_Num_int_base@std@@QAEAAU01@ABU01@@Z -> public: struct std::_Num_int_base & __thiscall std::_Num_int_base::operator=(struct std::_Num_int_base const &) */ -/* ??4_Num_int_base@std@@QEAAAEAU01@AEBU01@@Z -> public: struct std::_Num_int_base & __ptr64 __cdecl std::_Num_int_base::operator=(struct std::_Num_int_base const & __ptr64) __ptr64 */ -DEFINE_THISCALL_WRAPPER( std_Num_base_op_assign, 8 ) -std_Num_base * __thiscall std_Num_base_op_assign( std_Num_base *this, std_Num_base *right ) -{ - return this; -} - -/* ?denorm_min@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits::denorm_min(void) */ -signed char __cdecl std_numeric_limits_signed_char_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits::denorm_min(void) */ -char __cdecl std_numeric_limits_char_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits::denorm_min(void) */ -unsigned char __cdecl std_numeric_limits_unsigned_char_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits::denorm_min(void) */ -short __cdecl std_numeric_limits_short_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits::denorm_min(void) */ -unsigned short __cdecl std_numeric_limits_unsigned_short_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits::denorm_min(void) */ -int __cdecl std_numeric_limits_int_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits::denorm_min(void) */ -unsigned int __cdecl std_numeric_limits_unsigned_int_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits::denorm_min(void) */ -LONG __cdecl std_numeric_limits_long_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits::denorm_min(void) */ -ULONG __cdecl std_numeric_limits_unsigned_long_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits::denorm_min(void) */ -float __cdecl std_numeric_limits_float_denorm_min(void) { return *(float *)&_FDenorm; } - -/* ?denorm_min@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits::denorm_min(void) */ -double __cdecl std_numeric_limits_double_denorm_min(void) { return *(double *)&_Denorm; } - -/* ?denorm_min@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits::denorm_min(void) */ -LDOUBLE __cdecl std_numeric_limits_long_double_denorm_min(void) { return *(LDOUBLE *)&_LDenorm; } - -/* ?denorm_min@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::denorm_min(void) */ -__int64 __cdecl std_numeric_limits_int64_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits::denorm_min(void) */ -unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits::denorm_min(void) */ -BOOLEAN __cdecl std_numeric_limits_bool_denorm_min(void) { return 0; } - -/* ?denorm_min@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits::denorm_min(void) */ -WCHAR __cdecl std_numeric_limits_wchar_t_denorm_min(void) { return 0; } - -/* ?epsilon@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits::epsilon(void) */ -signed char __cdecl std_numeric_limits_signed_char_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits::epsilon(void) */ -char __cdecl std_numeric_limits_char_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits::epsilon(void) */ -unsigned char __cdecl std_numeric_limits_unsigned_char_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits::epsilon(void) */ -short __cdecl std_numeric_limits_short_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits::epsilon(void) */ -unsigned short __cdecl std_numeric_limits_unsigned_short_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits::epsilon(void) */ -int __cdecl std_numeric_limits_int_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits::epsilon(void) */ -unsigned int __cdecl std_numeric_limits_unsigned_int_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits::epsilon(void) */ -LONG __cdecl std_numeric_limits_long_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits::epsilon(void) */ -ULONG __cdecl std_numeric_limits_unsigned_long_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits::epsilon(void) */ -float __cdecl std_numeric_limits_float_epsilon(void) { return _FEps; } - -/* ?epsilon@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits::epsilon(void) */ -double __cdecl std_numeric_limits_double_epsilon(void) { return _Eps; } - -/* ?epsilon@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits::epsilon(void) */ -LDOUBLE __cdecl std_numeric_limits_long_double_epsilon(void) { return _LEps; } - -/* ?epsilon@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::epsilon(void) */ -__int64 __cdecl std_numeric_limits_int64_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits::epsilon(void) */ -unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits::epsilon(void) */ -BOOLEAN __cdecl std_numeric_limits_bool_epsilon(void) { return 0; } - -/* ?epsilon@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits::epsilon(void) */ -WCHAR __cdecl std_numeric_limits_wchar_t_epsilon(void) { return 0; } - -/* ?infinity@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits::infinity(void) */ -signed char __cdecl std_numeric_limits_signed_char_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits::infinity(void) */ -char __cdecl std_numeric_limits_char_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits::infinity(void) */ -unsigned char __cdecl std_numeric_limits_unsigned_char_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits::infinity(void) */ -short __cdecl std_numeric_limits_short_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits::infinity(void) */ -unsigned short __cdecl std_numeric_limits_unsigned_short_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits::infinity(void) */ -int __cdecl std_numeric_limits_int_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits::infinity(void) */ -unsigned int __cdecl std_numeric_limits_unsigned_int_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits::infinity(void) */ -LONG __cdecl std_numeric_limits_long_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits::infinity(void) */ -ULONG __cdecl std_numeric_limits_unsigned_long_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits::infinity(void) */ -float __cdecl std_numeric_limits_float_infinity(void) { return *(float *)&_FInf; } - -/* ?infinity@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits::infinity(void) */ -double __cdecl std_numeric_limits_double_infinity(void) { return *(double *)&_Inf; } - -/* ?infinity@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits::infinity(void) */ -LDOUBLE __cdecl std_numeric_limits_long_double_infinity(void) { return *(LDOUBLE *)&_LInf; } - -/* ?infinity@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::infinity(void) */ -__int64 __cdecl std_numeric_limits_int64_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits::infinity(void) */ -unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits::infinity(void) */ -BOOLEAN __cdecl std_numeric_limits_bool_infinity(void) { return 0; } - -/* ?infinity@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits::infinity(void) */ -WCHAR __cdecl std_numeric_limits_wchar_t_infinity(void) { return 0; } - -/* ?max@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits::max(void) */ -signed char __cdecl std_numeric_limits_signed_char_max(void) { return SCHAR_MAX; } - -/* ?max@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits::max(void) */ -char __cdecl std_numeric_limits_char_max(void) { return CHAR_MAX; } - -/* ?max@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits::max(void) */ -unsigned char __cdecl std_numeric_limits_unsigned_char_max(void) { return UCHAR_MAX; } - -/* ?max@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits::max(void) */ -short __cdecl std_numeric_limits_short_max(void) { return SHRT_MAX; } - -/* ?max@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits::max(void) */ -unsigned short __cdecl std_numeric_limits_unsigned_short_max(void) { return USHRT_MAX; } - -/* ?max@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits::max(void) */ -int __cdecl std_numeric_limits_int_max(void) { return INT_MAX; } - -/* ?max@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits::max(void) */ -unsigned int __cdecl std_numeric_limits_unsigned_int_max(void) { return UINT_MAX; } - -/* ?max@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits::max(void) */ -LONG __cdecl std_numeric_limits_long_max(void) { return LONG_MAX; } - -/* ?max@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits::max(void) */ -ULONG __cdecl std_numeric_limits_unsigned_long_max(void) { return ULONG_MAX; } - -/* ?max@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits::max(void) */ -float __cdecl std_numeric_limits_float_max(void) { return FLT_MAX; } - -/* ?max@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits::max(void) */ -double __cdecl std_numeric_limits_double_max(void) { return DBL_MAX; } - -/* ?max@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits::max(void) */ -LDOUBLE __cdecl std_numeric_limits_long_double_max(void) { return LDBL_MAX; } - -/* ?max@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::max(void) */ -__int64 __cdecl std_numeric_limits_int64_max(void) { return I64_MAX; } - -/* ?max@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits::max(void) */ -unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_max(void) { return UI64_MAX; } - -/* ?max@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits::max(void) */ -BOOLEAN __cdecl std_numeric_limits_bool_max(void) { return 1; } - -/* ?max@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits::max(void) */ -WCHAR __cdecl std_numeric_limits_wchar_t_max(void) { return USHRT_MAX; } - -/* ?min@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits::min(void) */ -signed char __cdecl std_numeric_limits_signed_char_min(void) { return SCHAR_MIN; } - -/* ?min@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits::min(void) */ -char __cdecl std_numeric_limits_char_min(void) { return CHAR_MIN; } - -/* ?min@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits::min(void) */ -unsigned char __cdecl std_numeric_limits_unsigned_char_min(void) { return 0; } - -/* ?min@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits::min(void) */ -short __cdecl std_numeric_limits_short_min(void) { return SHRT_MIN; } - -/* ?min@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits::min(void) */ -unsigned short __cdecl std_numeric_limits_unsigned_short_min(void) { return 0; } - -/* ?min@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits::min(void) */ -int __cdecl std_numeric_limits_int_min(void) { return INT_MIN; } - -/* ?min@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits::min(void) */ -unsigned int __cdecl std_numeric_limits_unsigned_int_min(void) { return 0; } - -/* ?min@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits::min(void) */ -LONG __cdecl std_numeric_limits_long_min(void) { return LONG_MIN; } - -/* ?min@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits::min(void) */ -ULONG __cdecl std_numeric_limits_unsigned_long_min(void) { return 0; } - -/* ?min@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits::min(void) */ -float __cdecl std_numeric_limits_float_min(void) { return FLT_MIN; } - -/* ?min@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits::min(void) */ -double __cdecl std_numeric_limits_double_min(void) { return DBL_MIN; } - -/* ?min@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits::min(void) */ -LDOUBLE __cdecl std_numeric_limits_long_double_min(void) { return LDBL_MIN; } - -/* ?min@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::min(void) */ -__int64 __cdecl std_numeric_limits_int64_min(void) { return I64_MIN; } - -/* ?min@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits::min(void) */ -unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_min(void) { return 0; } - -/* ?min@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits::min(void) */ -BOOLEAN __cdecl std_numeric_limits_bool_min(void) { return 0; } - -/* ?min@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits::min(void) */ -WCHAR __cdecl std_numeric_limits_wchar_t_min(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits::quiet_NaN(void) */ -signed char __cdecl std_numeric_limits_signed_char_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits::quiet_NaN(void) */ -char __cdecl std_numeric_limits_char_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits::quiet_NaN(void) */ -unsigned char __cdecl std_numeric_limits_unsigned_char_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits::quiet_NaN(void) */ -short __cdecl std_numeric_limits_short_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits::quiet_NaN(void) */ -unsigned short __cdecl std_numeric_limits_unsigned_short_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits::quiet_NaN(void) */ -int __cdecl std_numeric_limits_int_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits::quiet_NaN(void) */ -unsigned int __cdecl std_numeric_limits_unsigned_int_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits::quiet_NaN(void) */ -LONG __cdecl std_numeric_limits_long_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits::quiet_NaN(void) */ -ULONG __cdecl std_numeric_limits_unsigned_long_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits::quiet_NaN(void) */ -float __cdecl std_numeric_limits_float_quiet_NaN(void) { return *(float *)&_FNan; } - -/* ?quiet_NaN@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits::quiet_NaN(void) */ -double __cdecl std_numeric_limits_double_quiet_NaN(void) { return *(double *)&_Nan; } - -/* ?quiet_NaN@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits::quiet_NaN(void) */ -LDOUBLE __cdecl std_numeric_limits_long_double_quiet_NaN(void) { return *(LDOUBLE *)&_LNan; } - -/* ?quiet_NaN@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::quiet_NaN(void) */ -__int64 __cdecl std_numeric_limits_int64_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits::quiet_NaN(void) */ -unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits::quiet_NaN(void) */ -BOOLEAN __cdecl std_numeric_limits_bool_quiet_NaN(void) { return 0; } - -/* ?quiet_NaN@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits::quiet_NaN(void) */ -WCHAR __cdecl std_numeric_limits_wchar_t_quiet_NaN(void) { return 0; } - -/* ?round_error@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits::round_error(void) */ -signed char __cdecl std_numeric_limits_signed_char_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits::round_error(void) */ -char __cdecl std_numeric_limits_char_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits::round_error(void) */ -unsigned char __cdecl std_numeric_limits_unsigned_char_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits::round_error(void) */ -short __cdecl std_numeric_limits_short_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits::round_error(void) */ -unsigned short __cdecl std_numeric_limits_unsigned_short_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits::round_error(void) */ -int __cdecl std_numeric_limits_int_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits::round_error(void) */ -unsigned int __cdecl std_numeric_limits_unsigned_int_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits::round_error(void) */ -LONG __cdecl std_numeric_limits_long_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits::round_error(void) */ -ULONG __cdecl std_numeric_limits_unsigned_long_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits::round_error(void) */ -float __cdecl std_numeric_limits_float_round_error(void) { return 0.5; } - -/* ?round_error@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits::round_error(void) */ -double __cdecl std_numeric_limits_double_round_error(void) { return 0.5; } - -/* ?round_error@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits::round_error(void) */ -LDOUBLE __cdecl std_numeric_limits_long_double_round_error(void) { return 0.5; } - -/* ?round_error@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::round_error(void) */ -__int64 __cdecl std_numeric_limits_int64_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits::round_error(void) */ -unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits::round_error(void) */ -BOOLEAN __cdecl std_numeric_limits_bool_round_error(void) { return 0; } - -/* ?round_error@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits::round_error(void) */ -WCHAR __cdecl std_numeric_limits_wchar_t_round_error(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@C@std@@SACXZ -> public: static signed char __cdecl std::numeric_limits::signaling_NaN(void) */ -signed char __cdecl std_numeric_limits_signed_char_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@D@std@@SADXZ -> public: static char __cdecl std::numeric_limits::signaling_NaN(void) */ -char __cdecl std_numeric_limits_char_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@E@std@@SAEXZ -> public: static unsigned char __cdecl std::numeric_limits::signaling_NaN(void) */ -unsigned char __cdecl std_numeric_limits_unsigned_char_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@F@std@@SAFXZ -> public: static short __cdecl std::numeric_limits::signaling_NaN(void) */ -short __cdecl std_numeric_limits_short_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@G@std@@SAGXZ -> public: static unsigned short __cdecl std::numeric_limits::signaling_NaN(void) */ -unsigned short __cdecl std_numeric_limits_unsigned_short_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@H@std@@SAHXZ -> public: static int __cdecl std::numeric_limits::signaling_NaN(void) */ -int __cdecl std_numeric_limits_int_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@I@std@@SAIXZ -> public: static unsigned int __cdecl std::numeric_limits::signaling_NaN(void) */ -unsigned int __cdecl std_numeric_limits_unsigned_int_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@J@std@@SAJXZ -> public: static long __cdecl std::numeric_limits::signaling_NaN(void) */ -LONG __cdecl std_numeric_limits_long_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@K@std@@SAKXZ -> public: static unsigned long __cdecl std::numeric_limits::signaling_NaN(void) */ -ULONG __cdecl std_numeric_limits_unsigned_long_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@M@std@@SAMXZ -> public: static float __cdecl std::numeric_limits::signaling_NaN(void) */ -float __cdecl std_numeric_limits_float_signaling_NaN(void) { return *(float *)&_FSnan; } - -/* ?signaling_NaN@?$numeric_limits@N@std@@SANXZ -> public: static double __cdecl std::numeric_limits::signaling_NaN(void) */ -double __cdecl std_numeric_limits_double_signaling_NaN(void) { return *(double *)&_Snan; } - -/* ?signaling_NaN@?$numeric_limits@O@std@@SAOXZ -> public: static long double __cdecl std::numeric_limits::signaling_NaN(void) */ -LDOUBLE __cdecl std_numeric_limits_long_double_signaling_NaN(void) { return *(LDOUBLE *)&_LSnan; } - -/* ?signaling_NaN@?$numeric_limits@_J@std@@SA_JXZ -> public: static __int64 __cdecl std::numeric_limits<__int64>::signaling_NaN(void) */ -__int64 __cdecl std_numeric_limits_int64_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@_K@std@@SA_KXZ -> public: static unsigned __int64 __cdecl std::numeric_limits::signaling_NaN(void) */ -unsigned __int64 __cdecl std_numeric_limits_unsigned_int64_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@_N@std@@SA_NXZ -> public: static bool __cdecl std::numeric_limits::signaling_NaN(void) */ -BOOLEAN __cdecl std_numeric_limits_bool_signaling_NaN(void) { return 0; } - -/* ?signaling_NaN@?$numeric_limits@_W@std@@SA_WXZ -> public: static wchar_t __cdecl std::numeric_limits::signaling_NaN(void) */ -WCHAR __cdecl std_numeric_limits_wchar_t_signaling_NaN(void) { return 0; } - -/* ??4?$_Ctraits@M@std@@QAEAAV01@ABV01@@Z -> public: class std::_Ctraits & __thiscall std::_Ctraits::operator=(class std::_Ctraits const &) */ -/* ??4?$_Ctraits@M@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::_Ctraits & __ptr64 __cdecl std::_Ctraits::operator=(class std::_Ctraits const & __ptr64) __ptr64 */ -/* ??4?$_Ctraits@N@std@@QAEAAV01@ABV01@@Z -> public: class std::_Ctraits & __thiscall std::_Ctraits::operator=(class std::_Ctraits const &) */ -/* ??4?$_Ctraits@N@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::_Ctraits & __ptr64 __cdecl std::_Ctraits::operator=(class std::_Ctraits const & __ptr64) __ptr64 */ -/* ??4?$_Ctraits@O@std@@QAEAAV01@ABV01@@Z -> public: class std::_Ctraits & __thiscall std::_Ctraits::operator=(class std::_Ctraits const &) */ -/* ??4?$_Ctraits@O@std@@QEAAAEAV01@AEBV01@@Z -> public: class std::_Ctraits & __ptr64 __cdecl std::_Ctraits::operator=(class std::_Ctraits const & __ptr64) __ptr64 */ -DEFINE_THISCALL_WRAPPER( std_Ctraits_op_assign, 8 ) -std_Ctraits * __thiscall std_Ctraits_op_assign( std_Ctraits *this, std_Ctraits *right ) -{ - return this; -} - -/* ?atan2@?$_Ctraits@M@std@@SAMMM@Z -> public: static float __cdecl std::_Ctraits::atan2(float,float) */ -float __cdecl std_Ctraits_float_atan2( float y, float x ) { return atan2f( y, x ); } - -/* ?atan2@?$_Ctraits@N@std@@SANNN@Z -> public: static double __cdecl std::_Ctraits::atan2(double,double) */ -double __cdecl std_Ctraits_double_atan2( double y, double x ) { return atan2( y, x ); } - -/* ?atan2@?$_Ctraits@O@std@@SAOOO@Z -> public: static long double __cdecl std::_Ctraits::atan2(long double,long double) */ -LDOUBLE __cdecl std_Ctraits_long_double_atan2( LDOUBLE y, LDOUBLE x ) { return atan2( y, x ); } - -/* ?cos@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits::cos(float) */ -float __cdecl std_Ctraits_float_cos( float x ) { return cosf( x ); } - -/* ?cos@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits::cos(double) */ -double __cdecl std_Ctraits_double_cos( double x ) { return cos( x ); } - -/* ?cos@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits::cos(long double) */ -LDOUBLE __cdecl std_Ctraits_long_double_cos( LDOUBLE x ) { return cos( x ); } - -/* ?exp@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits::exp(float) */ -float __cdecl std_Ctraits_float_exp( float x ) { return expf( x ); } - -/* ?exp@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits::exp(double) */ -double __cdecl std_Ctraits_double_exp( double x ) { return exp( x ); } - -/* ?exp@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits::exp(long double) */ -LDOUBLE __cdecl std_Ctraits_long_double_exp( LDOUBLE x ) { return exp( x ); } - -/* ?ldexp@?$_Ctraits@M@std@@SAMMH@Z -> public: static float __cdecl std::_Ctraits::ldexp(float,int) */ -float __cdecl std_Ctraits_float_ldexp( float x, int y ) { return ldexpf( x, y ); } - -/* ?ldexp@?$_Ctraits@N@std@@SANNH@Z -> public: static double __cdecl std::_Ctraits::ldexp(double,int) */ -double __cdecl std_Ctraits_double_ldexp( double x, int y ) { return ldexp( x, y ); } - -/* ?ldexp@?$_Ctraits@O@std@@SAOOH@Z -> public: static long double __cdecl std::_Ctraits::ldexp(long double,int) */ -LDOUBLE __cdecl std_Ctraits_long_double_ldexp( LDOUBLE x, int y ) { return ldexp( x, y ); } - -/* ?log@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits::log(float) */ -float __cdecl std_Ctraits_float_log( float x ) { return logf( x ); } - -/* ?log@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits::log(double) */ -double __cdecl std_Ctraits_double_log( double x ) { return log( x ); } - -/* ?log@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits::log(long double) */ -LDOUBLE __cdecl std_Ctraits_long_double_log( LDOUBLE x ) { return log( x ); } - -/* ?pow@?$_Ctraits@M@std@@SAMMM@Z -> public: static float __cdecl std::_Ctraits::pow(float,float) */ -float __cdecl std_Ctraits_float_pow( float x, float y ) { return powf( x, y ); } - -/* ?pow@?$_Ctraits@N@std@@SANNN@Z -> public: static double __cdecl std::_Ctraits::pow(double,double) */ -double __cdecl std_Ctraits_double_pow( double x, double y ) { return pow( x, y ); } - -/* ?pow@?$_Ctraits@O@std@@SAOOO@Z -> public: static long double __cdecl std::_Ctraits::pow(long double,long double) */ -LDOUBLE __cdecl std_Ctraits_long_double_pow( LDOUBLE x, LDOUBLE y ) { return pow( x, y ); } - -/* ?sin@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits::sin(float) */ -float __cdecl std_Ctraits_float_sin( float x ) { return sinf( x ); } - -/* ?sin@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits::sin(double) */ -double __cdecl std_Ctraits_double_sin( double x ) { return sin( x ); } - -/* ?sin@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits::sin(long double) */ -LDOUBLE __cdecl std_Ctraits_long_double_sin( LDOUBLE x ) { return sin( x ); } - -/* ?sqrt@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits::sqrt(float) */ -float __cdecl std_Ctraits_float_sqrt( float x ) { return sqrtf( x ); } - -/* ?sqrt@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits::sqrt(double) */ -double __cdecl std_Ctraits_double_sqrt( double x ) { return sqrt( x ); } - -/* ?sqrt@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits::sqrt(long double) */ -LDOUBLE __cdecl std_Ctraits_long_double_sqrt( LDOUBLE x ) { return sqrt( x ); } - -/* ?tan@?$_Ctraits@M@std@@SAMM@Z -> public: static float __cdecl std::_Ctraits::tan(float) */ -float __cdecl std_Ctraits_float_tan( float x ) { return tanf( x ); } - -/* ?tan@?$_Ctraits@N@std@@SANN@Z -> public: static double __cdecl std::_Ctraits::tan(double) */ -double __cdecl std_Ctraits_double_tan( double x ) { return tan( x ); } - -/* ?tan@?$_Ctraits@O@std@@SAOO@Z -> public: static long double __cdecl std::_Ctraits::tan(long double) */ -LDOUBLE __cdecl std_Ctraits_long_double_tan( LDOUBLE x ) { return tan( x ); } - -/* ??0?$_Complex_base@MU_C_float_complex@@@std@@QAE@ABM0@Z */ -/* ??0?$_Complex_base@MU_C_float_complex@@@std@@QEAA@AEBM0@Z */ -/* ??0?$complex@M@std@@QAE@ABM0@Z */ -/* ??0?$complex@M@std@@QEAA@AEBM0@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_ctor, 12) -complex_float* __thiscall complex_float_ctor(complex_float *this, const float *real, const float *imag) -{ - this->real = *real; - this->imag = *imag; - return this; -} - -/* ??0?$complex@M@std@@QAE@ABU_C_float_complex@@@Z */ -/* ??0?$complex@M@std@@QEAA@AEBU_C_float_complex@@@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_ctor_float, 8) -complex_float* __thiscall complex_float_ctor_float(complex_float *this, const complex_float *c) -{ - this->real = c->real; - this->imag = c->imag; - return this; -} - -/* ??0?$complex@M@std@@QAE@ABU_C_double_complex@@@Z */ -/* ??0?$complex@M@std@@QEAA@AEBU_C_double_complex@@@Z */ -/* ??0?$complex@M@std@@QAE@ABU_C_ldouble_complex@@@Z */ -/* ??0?$complex@M@std@@QEAA@AEBU_C_ldouble_complex@@@Z */ -/* ??0?$complex@M@std@@QAE@ABV?$complex@N@1@@Z */ -/* ??0?$complex@M@std@@QEAA@AEBV?$complex@N@1@@Z */ -/* ??0?$complex@M@std@@QAE@ABV?$complex@O@1@@Z */ -/* ??0?$complex@M@std@@QEAA@AEBV?$complex@O@1@@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_ctor_double, 8) -complex_float* __thiscall complex_float_ctor_double(complex_float *this, const complex_double *c) -{ - this->real = c->real; - this->imag = c->imag; - return this; -} - -/* ??_F?$complex@M@std@@QAEXXZ */ -/* ??_F?$complex@M@std@@QEAAXXZ */ -DEFINE_THISCALL_WRAPPER(complex_float_ctor_def, 4) -complex_float* __thiscall complex_float_ctor_def(complex_float *this) -{ - this->real = this->imag = 0; - return this; -} - -/* ??$?8M@std@@YA_NABMABV?$complex@M@0@@Z */ -/* ??$?8M@std@@YA_NAEBMAEBV?$complex@M@0@@Z */ -MSVCP_bool __cdecl complex_float_equal_fc(const float *l, const complex_float *r) -{ - return *l==r->real && r->imag==0; -} - -/* ??$?8M@std@@YA_NABV?$complex@M@0@0@Z */ -/* ??$?8M@std@@YA_NAEBV?$complex@M@0@0@Z */ -MSVCP_bool __cdecl complex_float_equal(const complex_float *l, const complex_float *r) -{ - return l->real==r->real && l->imag==r->imag; -} - -/* ??$?8M@std@@YA_NABV?$complex@M@0@ABM@Z */ -/* ??$?8M@std@@YA_NAEBV?$complex@M@0@AEBM@Z */ -MSVCP_bool __cdecl complex_float_equal_cf(const complex_float *l, const float *r) -{ - return l->real==*r && l->imag==0; -} - -/* ??$?9M@std@@YA_NABMABV?$complex@M@0@@Z */ -/* ??$?9M@std@@YA_NAEBMAEBV?$complex@M@0@@Z */ -MSVCP_bool __cdecl complex_float_not_equal_fc(const float *l, const complex_float *r) -{ - return !complex_float_equal_fc(l, r); -} - -/* ??$?9M@std@@YA_NABV?$complex@M@0@0@Z */ -/* ??$?9M@std@@YA_NAEBV?$complex@M@0@0@Z */ -MSVCP_bool __cdecl complex_float_not_equal(const complex_float *l, const complex_float *r) -{ - return !complex_float_equal(l, r); -} - -/* ??$?9M@std@@YA_NABV?$complex@M@0@ABM@Z */ -/* ??$?9M@std@@YA_NAEBV?$complex@M@0@AEBM@Z */ -MSVCP_bool __cdecl complex_float_not_equal_cf(const complex_float *l, const float *r) -{ - return !complex_float_equal_cf(l, r); -} - -/* ??$?DM@std@@YA?AV?$complex@M@0@ABMABV10@@Z */ -/* ??$?DM@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z */ -complex_float* __cdecl complex_float_mult_fc(complex_float *ret, const float *l, const complex_float *r) -{ - ret->real = *l * r->real; - ret->imag = *l * r->imag; - return ret; -} - -/* ??$?DM@std@@YA?AV?$complex@M@0@ABV10@0@Z */ -/* ??$?DM@std@@YA?AV?$complex@M@0@AEBV10@0@Z */ -complex_float* __cdecl complex_float_mult(complex_float *ret, const complex_float *l, const complex_float *r) -{ - ret->real = l->real*r->real - l->imag*r->imag; - ret->imag = l->imag*r->real + l->real*r->imag; - return ret; -} - -/* ??$?DM@std@@YA?AV?$complex@M@0@ABV10@ABM@Z */ -/* ??$?DM@std@@YA?AV?$complex@M@0@AEBV10@AEBM@Z */ -complex_float* __cdecl complex_float_mult_cf(complex_float *ret, const complex_float *l, const float *r) -{ - ret->real = l->real * *r; - ret->imag = l->imag * *r; - return ret; -} - -/* ??$?GM@std@@YA?AV?$complex@M@0@ABMABV10@@Z */ -/* ??$?GM@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z */ -complex_float* __cdecl complex_float_sub_fc(complex_float *ret, const float *l, const complex_float *r) -{ - ret->real = *l - r->real; - ret->imag = -r->imag; - return ret; -} - -/* ??$?GM@std@@YA?AV?$complex@M@0@ABV10@0@Z */ -/* ??$?GM@std@@YA?AV?$complex@M@0@AEBV10@0@Z */ -complex_float* __cdecl complex_float_sub(complex_float *ret, const complex_float *l, const complex_float *r) -{ - ret->real = l->real - r->real; - ret->imag = l->imag - r->imag; - return ret; -} - -/* ??$?GM@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$?GM@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_neg(complex_float *ret, const complex_float *c) -{ - ret->real = -c->real; - ret->imag = -c->imag; - return ret; -} - -/* ??$?GM@std@@YA?AV?$complex@M@0@ABV10@ABM@Z */ -/* ??$?GM@std@@YA?AV?$complex@M@0@AEBV10@AEBM@Z */ -complex_float* __cdecl complex_float_sub_cf(complex_float *ret, const complex_float *l, const float *r) -{ - ret->real = l->real - *r; - ret->imag = l->imag; - return ret; -} - -/* ??$?HM@std@@YA?AV?$complex@M@0@ABMABV10@@Z */ -/* ??$?HM@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z */ -complex_float* __cdecl complex_float_add_fc(complex_float *ret, const float *l, const complex_float *r) -{ - ret->real = *l + r->real; - ret->imag = r->imag; - return ret; -} - -/* ??$?HM@std@@YA?AV?$complex@M@0@ABV10@0@Z */ -/* ??$?HM@std@@YA?AV?$complex@M@0@AEBV10@0@Z */ -complex_float* __cdecl complex_float_add(complex_float *ret, const complex_float *l, const complex_float *r) -{ - ret->real = l->real + r->real; - ret->imag = l->imag + r->imag; - return ret; -} - -/* ??$?HM@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$?HM@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_plus(complex_float *ret, const complex_float *c) -{ - *ret = *c; - return ret; -} - -/* ??$?HM@std@@YA?AV?$complex@M@0@ABV10@ABM@Z */ -/* ??$?HM@std@@YA?AV?$complex@M@0@AEBV10@AEBM@Z */ -complex_float* __cdecl complex_float_add_cf(complex_float *ret, const complex_float *l, const float *r) -{ - ret->real = l->real + *r; - ret->imag = l->imag; - return ret; -} - -/* ??$?KM@std@@YA?AV?$complex@M@0@ABV10@0@Z */ -/* ??$?KM@std@@YA?AV?$complex@M@0@AEBV10@0@Z */ -complex_float* __cdecl complex_float_div(complex_float *ret, const complex_float *l, const complex_float *r) -{ - float tmp, den; - if((!r->real && !r->imag) || _isnan(l->real) || _isnan(l->imag) - || _isnan(r->real) || _isnan(r->imag)) { - ret->real = std_numeric_limits_float_quiet_NaN(); - ret->imag = ret->real; - return ret; - } - - if (fabsf(r->real) >= fabsf(r->imag)) { - tmp = r->imag / r->real; - den = r->real + r->imag*tmp; - ret->real = (l->real + l->imag*tmp) / den; - ret->imag = (l->imag - l->real*tmp) / den; - } else { - tmp = r->real / r->imag; - den = r->real*tmp + r->imag; - ret->real = (l->real*tmp + l->imag) / den; - ret->imag = (l->imag*tmp - l->real) / den; - } - return ret; -} - -/* ??$?KM@std@@YA?AV?$complex@M@0@ABMABV10@@Z */ -/* ??$?KM@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z */ -complex_float* __cdecl complex_float_div_fc(complex_float *ret, const float *l, const complex_float *r) -{ - complex_float c = {*l, 0}; - return complex_float_div(ret, &c, r); -} - -/* ??$?KM@std@@YA?AV?$complex@M@0@ABV10@ABM@Z */ -/* ??$?KM@std@@YA?AV?$complex@M@0@AEBV10@AEBM@Z */ -complex_float* __cdecl complex_float_div_cf(complex_float *ret, const complex_float *l, const float *r) -{ - ret->real = l->real / *r; - ret->imag = l->imag / *r; - return ret; -} - -/* ??4?$_Complex_base@MU_C_float_complex@@@std@@QAEAAV01@ABV01@@Z */ -/* ??4?$_Complex_base@MU_C_float_complex@@@std@@QEAAAEAV01@AEBV01@@Z */ -/* ??4?$complex@M@std@@QAEAAV01@ABV01@@Z */ -/* ??4?$complex@M@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_assign, 8) -complex_float* __thiscall complex_float_assign(complex_float *this, const complex_float *r) -{ - *this = *r; - return this; -} - -/* ??4?$complex@M@std@@QAEAAV01@ABM@Z */ -/* ??4?$complex@M@std@@QEAAAEAV01@AEBM@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_assign_float, 8) -complex_float* __thiscall complex_float_assign_float(complex_float *this, const float *r) -{ - this->real = *r; - this->imag = 0; - return this; -} - -/* ??X?$complex@M@std@@QAEAAV01@ABM@Z */ -/* ??X?$complex@M@std@@QEAAAEAV01@AEBM@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_mult_assign_float, 8) -complex_float* __thiscall complex_float_mult_assign_float(complex_float *this, const float *r) -{ - this->real *= *r; - this->imag *= *r; - return this; -} - -/* ??X?$complex@M@std@@QAEAAV01@ABV01@@Z */ -/* ??X?$complex@M@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_mult_assign, 8) -complex_float* __thiscall complex_float_mult_assign(complex_float *this, const complex_float *r) -{ - complex_float tmp = *this; - - this->real = tmp.real*r->real - tmp.imag*r->imag; - this->imag = tmp.real*r->imag + tmp.imag*r->real; - return this; -} - -/* ??Y?$complex@M@std@@QAEAAV01@ABM@Z */ -/* ??Y?$complex@M@std@@QEAAAEAV01@AEBM@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_add_assign_float, 8) -complex_float* __thiscall complex_float_add_assign_float(complex_float *this, const float *r) -{ - this->real += *r; - return this; -} - -/* ??Y?$complex@M@std@@QAEAAV01@ABV01@@Z */ -/* ??Y?$complex@M@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_add_assign, 8) -complex_float* __thiscall complex_float_add_assign(complex_float *this, const complex_float *r) -{ - this->real += r->real; - this->imag += r->imag; - return this; -} - -/* ??Z?$complex@M@std@@QAEAAV01@ABM@Z */ -/* ??Z?$complex@M@std@@QEAAAEAV01@AEBM@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_sub_assign_float, 8) -complex_float* __thiscall complex_float_sub_assign_float(complex_float *this, const float *r) -{ - this->real -= *r; - return this; -} - -/* ??Z?$complex@M@std@@QAEAAV01@ABV01@@Z */ -/* ??Z?$complex@M@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_sub_assign, 8) -complex_float* __thiscall complex_float_sub_assign(complex_float *this, const complex_float *r) -{ - this->real -= r->real; - this->imag -= r->imag; - return this; -} - -/* ??_0?$complex@M@std@@QAEAAV01@ABM@Z */ -/* ??_0?$complex@M@std@@QEAAAEAV01@AEBM@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_div_assign_float, 8) -complex_float* __thiscall complex_float_div_assign_float(complex_float *this, const float *r) -{ - this->real /= *r; - this->imag /= *r; - return this; -} - -/* ??_0?$complex@M@std@@QAEAAV01@ABV01@@Z */ -/* ??_0?$complex@M@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_div_assign, 8) -complex_float* __thiscall complex_float_div_assign(complex_float *this, const complex_float *r) -{ - complex_float tmp = *this; - return complex_float_div(this, &tmp, r); -} - -/* ??$arg@M@std@@YAMABV?$complex@M@0@@Z */ -/* ??$arg@M@std@@YAMAEBV?$complex@M@0@@Z */ -float __cdecl complex_float_arg(const complex_float *c) -{ - return atan2(c->imag, c->real); -} - -/* ??$imag@M@std@@YAMABV?$complex@M@0@@Z */ -/* ??$imag@M@std@@YAMAEBV?$complex@M@0@@Z */ -float __cdecl complex_float_imag(const complex_float *c) -{ - return c->imag; -} - -/* ?imag@?$_Complex_base@MU_C_float_complex@@@std@@QAEMABM@Z */ -/* ?imag@?$_Complex_base@MU_C_float_complex@@@std@@QEAAMAEBM@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_imag_set, 8) -float __thiscall complex_float_imag_set(complex_float *this, const float *f) -{ - return (this->imag = *f); -} - -/* ?imag@?$_Complex_base@MU_C_float_complex@@@std@@QBEMXZ */ -/* ?imag@?$_Complex_base@MU_C_float_complex@@@std@@QEBAMXZ */ -DEFINE_THISCALL_WRAPPER(complex_float_imag_get, 4) -float __thiscall complex_float_imag_get(const complex_float *this) -{ - return this->imag; -} - -/* ??$real@M@std@@YAMABV?$complex@M@0@@Z */ -/* ??$real@M@std@@YAMAEBV?$complex@M@0@@Z */ -float __cdecl complex_float_real(const complex_float *c) -{ - return c->real; -} - -/* ?real@?$_Complex_base@MU_C_float_complex@@@std@@QAEMABM@Z */ -/* ?real@?$_Complex_base@MU_C_float_complex@@@std@@QEAAMAEBM@Z */ -DEFINE_THISCALL_WRAPPER(complex_float_real_set, 8) -float __thiscall complex_float_real_set(complex_float *this, const float *f) -{ - return (this->real = *f); -} - -/* ?real@?$_Complex_base@MU_C_float_complex@@@std@@QBEMXZ */ -/* ?real@?$_Complex_base@MU_C_float_complex@@@std@@QEBAMXZ */ -DEFINE_THISCALL_WRAPPER(complex_float_real_get, 4) -float __thiscall complex_float_real_get(const complex_float *this) -{ - return this->real; -} - -/* ??$_Fabs@M@std@@YAMABV?$complex@M@0@PAH@Z */ -/* ??$_Fabs@M@std@@YAMAEBV?$complex@M@0@PEAH@Z */ -float __cdecl complex_float__Fabs(const complex_float *c, int *scale) -{ - float ret; - - ret = hypotf(c->real, c->imag); - if(_isnan(ret) || ret==0) { - *scale = 0; - }else if(ret >= 1) { - *scale = 2; - ret /= 4; - }else { - *scale = -2; - ret *= 4; - } - - return ret; -} - -/* ??$abs@M@std@@YAMABV?$complex@M@0@@Z */ -/* ??$abs@M@std@@YAMAEBV?$complex@M@0@@Z */ -float __cdecl complex_float_abs(const complex_float *c) -{ - return hypotf(c->real, c->imag); -} - -/* ??$conj@M@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$conj@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_conj(complex_float *ret, const complex_float *c) -{ - ret->real = c->real; - ret->imag = -c->imag; - return ret; -} - -/* ??$cos@M@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$cos@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_cos(complex_float *ret, const complex_float *c) -{ - ret->real = cos(c->real)*cosh(c->imag); - ret->imag = -sin(c->real)*sinh(c->imag); - return ret; -} - -/* ??$sin@M@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$sin@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_sin(complex_float *ret, const complex_float *c) -{ - ret->real = sin(c->real)*cosh(c->imag); - ret->imag = cos(c->real)*sinh(c->imag); - return ret; -} - -/* ??$tan@M@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$tan@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_tan(complex_float *ret, const complex_float *c) -{ - double denom = cos(2*c->real) + cosh(2*c->imag); - ret->real = sin(2*c->real) / denom; - ret->imag = sinh(2*c->imag) / denom; - return ret; -} - -/* ??$cosh@M@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$cosh@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_cosh(complex_float *ret, const complex_float *c) -{ - ret->real = cosh(c->real)*cos(c->imag); - ret->imag = sinh(c->real)*sin(c->imag); - return ret; -} - -/* ??$sinh@M@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$sinh@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_sinh(complex_float *ret, const complex_float *c) -{ - ret->real = sinh(c->real)*cos(c->imag); - ret->imag = cosh(c->real)*sin(c->imag); - return ret; -} - -/* ??$tanh@M@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$tanh@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_tanh(complex_float *ret, const complex_float *c) -{ - complex_float tmp; - - ret->real = -c->imag; - ret->imag = c->real; - complex_float_tan(&tmp, ret); - ret->real = tmp.imag; - ret->imag = -tmp.real; - return ret; -} - -/* ??$exp@M@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$exp@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_exp(complex_float *ret, const complex_float *c) -{ - ret->real = ret->imag = exp(c->real); - ret->real *= cos(c->imag); - ret->imag *= sin(c->imag); - return ret; -} - -/* ??$log@M@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$log@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_log(complex_float *ret, const complex_float *c) -{ - ret->real = log(complex_float_abs(c)); - ret->imag = complex_float_arg(c); - return ret; -} - -/* ??$log10@M@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$log10@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_log10(complex_float *ret, const complex_float *c) -{ - complex_float_log(ret, c); - ret->real *= M_LOG10E; - ret->imag *= M_LOG10E; - return ret; -} - -/* ??$norm@M@std@@YAMABV?$complex@M@0@@Z */ -/* ??$norm@M@std@@YAMAEBV?$complex@M@0@@Z */ -float __cdecl complex_float_norm(const complex_float *c) -{ - return c->real*c->real + c->imag*c->imag; -} - -/* ??$polar@M@std@@YA?AV?$complex@M@0@ABM0@Z */ -/* ??$polar@M@std@@YA?AV?$complex@M@0@AEBM0@Z */ -complex_float* __cdecl complex_float_polar_theta(complex_float *ret, const float *mod, const float *theta) -{ - ret->real = *mod * cos(*theta); - ret->imag = *mod * sin(*theta); - return ret; -} - -/* ??$polar@M@std@@YA?AV?$complex@M@0@ABM@Z */ -/* ??$polar@M@std@@YA?AV?$complex@M@0@AEBM@Z */ -complex_float* __cdecl complex_float_polar(complex_float *ret, const float *mod) -{ - ret->real = *mod; - ret->imag = 0; - return ret; -} - -/* ??$pow@M@std@@YA?AV?$complex@M@0@ABV10@0@Z */ -/* ??$pow@M@std@@YA?AV?$complex@M@0@AEBV10@0@Z */ -complex_float* __cdecl complex_float_pow(complex_float *ret, const complex_float *l, const complex_float *r) -{ - float abs = complex_float_abs(l), arg = complex_float_arg(l); - float rad = pow(abs, r->real), theta = r->real*arg; - - if(r->imag) { - rad *= exp(-r->imag * arg); - theta += r->imag * log(abs); - } - - ret->real = rad * cos(theta); - ret->imag = rad * sin(theta); - return ret; -} - -/* ??$pow@M@std@@YA?AV?$complex@M@0@ABMABV10@@Z */ -/* ??$pow@M@std@@YA?AV?$complex@M@0@AEBMAEBV10@@Z */ -complex_float* __cdecl complex_float_pow_fc(complex_float *ret, const float *l, const complex_float *r) -{ - complex_float c = { *l, 0 }; - return complex_float_pow(ret, &c, r); -} - -/* ??$pow@M@std@@YA?AV?$complex@M@0@ABV10@ABM@Z */ -/* ??$pow@M@std@@YA?AV?$complex@M@0@AEBV10@AEBM@Z */ -complex_float* __cdecl complex_float_pow_cf(complex_float *ret, const complex_float *l, const float *r) -{ - complex_float c = { *r, 0 }; - return complex_float_pow(ret, l, &c); -} - -/* ??$sqrt@M@std@@YA?AV?$complex@M@0@ABV10@@Z */ -/* ??$sqrt@M@std@@YA?AV?$complex@M@0@AEBV10@@Z */ -complex_float* __cdecl complex_float_sqrt(complex_float *ret, const complex_float *l) -{ - complex_float c = { 0.5, 0 }; - return complex_float_pow(ret, l, &c); -} - -/* ??0?$_Complex_base@NU_C_double_complex@@@std@@QAE@ABN0@Z */ -/* ??0?$_Complex_base@NU_C_double_complex@@@std@@QEAA@AEBN0@Z */ -/* ??0?$_Complex_base@OU_C_ldouble_complex@@@std@@QAE@ABO0@Z */ -/* ??0?$_Complex_base@OU_C_ldouble_complex@@@std@@QEAA@AEBO0@Z */ -/* ??0?$complex@N@std@@QAE@ABN0@Z */ -/* ??0?$complex@N@std@@QEAA@AEBN0@Z */ -/* ??0?$complex@O@std@@QAE@ABO0@Z */ -/* ??0?$complex@O@std@@QEAA@AEBO0@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_ctor, 12) -complex_double* __thiscall complex_double_ctor(complex_double *this, const double *real, const double *imag) -{ - this->real = *real; - this->imag = *imag; - return this; -} - -/* ??0?$complex@N@std@@QAE@ABU_C_double_complex@@@Z */ -/* ??0?$complex@N@std@@QEAA@AEBU_C_double_complex@@@Z */ -/* ??0?$complex@N@std@@QAE@ABU_C_ldouble_complex@@@Z */ -/* ??0?$complex@N@std@@QEAA@AEBU_C_ldouble_complex@@@Z */ -/* ??0?$complex@N@std@@QAE@ABV?$complex@O@1@@Z */ -/* ??0?$complex@N@std@@QEAA@AEBV?$complex@O@1@@Z */ -/* ??0?$complex@O@std@@QAE@ABU_C_ldouble_complex@@@Z */ -/* ??0?$complex@O@std@@QEAA@AEBU_C_ldouble_complex@@@Z */ -/* ??0?$complex@O@std@@QAE@ABV?$complex@N@1@@Z */ -/* ??0?$complex@O@std@@QEAA@AEBV?$complex@N@1@@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_ctor_double, 8) -complex_double* __thiscall complex_double_ctor_double(complex_double *this, const complex_double *c) -{ - this->real = c->real; - this->imag = c->imag; - return this; -} - -/* ??0?$complex@N@std@@QAE@ABV?$complex@M@1@@Z */ -/* ??0?$complex@N@std@@QEAA@AEBV?$complex@M@1@@Z */ -/* ??0?$complex@O@std@@QAE@ABV?$complex@M@1@@Z */ -/* ??0?$complex@O@std@@QEAA@AEBV?$complex@M@1@@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_ctor_float, 8) -complex_double* __thiscall complex_double_ctor_float(complex_double *this, const complex_float *c) -{ - this->real = c->real; - this->imag = c->imag; - return this; -} - -/* ??_F?$complex@N@std@@QAEXXZ */ -/* ??_F?$complex@N@std@@QEAAXXZ */ -/* ??_F?$complex@O@std@@QAEXXZ */ -/* ??_F?$complex@O@std@@QEAAXXZ */ -DEFINE_THISCALL_WRAPPER(complex_double_ctor_def, 4) -complex_double* __thiscall complex_double_ctor_def(complex_double *this) -{ - this->real = this->imag = 0; - return this; -} - -/* ??$?8N@std@@YA_NABNABV?$complex@N@0@@Z */ -/* ??$?8N@std@@YA_NAEBNAEBV?$complex@N@0@@Z */ -/* ??$?8O@std@@YA_NABOABV?$complex@O@0@@Z */ -/* ??$?8O@std@@YA_NAEBOAEBV?$complex@O@0@@Z */ -MSVCP_bool __cdecl complex_double_equal_dc(const double *l, const complex_double *r) -{ - return *l==r->real && r->imag==0; -} - -/* ??$?8N@std@@YA_NABV?$complex@N@0@0@Z */ -/* ??$?8N@std@@YA_NAEBV?$complex@N@0@0@Z */ -/* ??$?8O@std@@YA_NABV?$complex@O@0@0@Z */ -/* ??$?8O@std@@YA_NAEBV?$complex@O@0@0@Z */ -MSVCP_bool __cdecl complex_double_equal(const complex_double *l, const complex_double *r) -{ - return l->real==r->real && l->imag==r->imag; -} - -/* ??$?8N@std@@YA_NABV?$complex@N@0@ABN@Z */ -/* ??$?8N@std@@YA_NAEBV?$complex@N@0@AEBN@Z */ -/* ??$?8O@std@@YA_NABV?$complex@O@0@ABO@Z */ -/* ??$?8O@std@@YA_NAEBV?$complex@O@0@AEBO@Z */ -MSVCP_bool __cdecl complex_double_equal_cd(const complex_double *l, double *r) -{ - return l->real==*r && l->imag==0; -} - -/* ??$?9N@std@@YA_NABNABV?$complex@N@0@@Z */ -/* ??$?9N@std@@YA_NAEBNAEBV?$complex@N@0@@Z */ -/* ??$?9O@std@@YA_NABOABV?$complex@O@0@@Z */ -/* ??$?9O@std@@YA_NAEBOAEBV?$complex@O@0@@Z */ -MSVCP_bool __cdecl complex_double_not_equal_dc(const double *l, const complex_double *r) -{ - return !complex_double_equal_dc(l, r); -} - -/* ??$?9N@std@@YA_NABV?$complex@N@0@0@Z */ -/* ??$?9N@std@@YA_NAEBV?$complex@N@0@0@Z */ -/* ??$?9O@std@@YA_NABV?$complex@O@0@0@Z */ -/* ??$?9O@std@@YA_NAEBV?$complex@O@0@0@Z */ -MSVCP_bool __cdecl complex_double_not_equal(const complex_double *l, const complex_double *r) -{ - return !complex_double_equal(l, r); -} - -/* ??$?9N@std@@YA_NABV?$complex@N@0@ABN@Z */ -/* ??$?9N@std@@YA_NAEBV?$complex@N@0@AEBN@Z */ -/* ??$?9O@std@@YA_NABV?$complex@O@0@ABO@Z */ -/* ??$?9O@std@@YA_NAEBV?$complex@O@0@AEBO@Z */ -MSVCP_bool __cdecl complex_double_not_equal_cd(const complex_double *l, double *r) -{ - return !complex_double_equal_cd(l, r); -} - -/* ??$?DN@std@@YA?AV?$complex@N@0@ABNABV10@@Z */ -/* ??$?DN@std@@YA?AV?$complex@N@0@AEBNAEBV10@@Z */ -/* ??$?DO@std@@YA?AV?$complex@O@0@ABOABV10@@Z */ -/* ??$?DO@std@@YA?AV?$complex@O@0@AEBOAEBV10@@Z */ -complex_double* __cdecl complex_double_mult_dc(complex_double *ret, const double *l, const complex_double *r) -{ - ret->real = *l * r->real; - ret->imag = *l * r->imag; - return ret; -} - -/* ??$?DN@std@@YA?AV?$complex@N@0@ABV10@0@Z */ -/* ??$?DN@std@@YA?AV?$complex@N@0@AEBV10@0@Z */ -/* ??$?DO@std@@YA?AV?$complex@O@0@ABV10@0@Z */ -/* ??$?DO@std@@YA?AV?$complex@O@0@AEBV10@0@Z */ -complex_double* __cdecl complex_double_mult(complex_double *ret, const complex_double *l, const complex_double *r) -{ - ret->real = l->real*r->real - l->imag*r->imag; - ret->imag = l->imag*r->real + l->real*r->imag; - return ret; -} - -/* ??$?DN@std@@YA?AV?$complex@N@0@ABV10@ABN@Z */ -/* ??$?DN@std@@YA?AV?$complex@N@0@AEBV10@AEBN@Z */ -/* ??$?DO@std@@YA?AV?$complex@O@0@ABV10@ABO@Z */ -/* ??$?DO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z */ -complex_double* __cdecl complex_double_mult_cd(complex_double *ret, const complex_double *l, double *r) -{ - ret->real = l->real * *r; - ret->imag = l->imag * *r; - return ret; -} - -/* ??$?GN@std@@YA?AV?$complex@N@0@ABNABV10@@Z */ -/* ??$?GN@std@@YA?AV?$complex@N@0@AEBNAEBV10@@Z */ -/* ??$?GO@std@@YA?AV?$complex@O@0@ABOABV10@@Z */ -/* ??$?GO@std@@YA?AV?$complex@O@0@AEBOAEBV10@@Z */ -complex_double* __cdecl complex_double_sub_dc(complex_double *ret, const double *l, const complex_double *r) -{ - ret->real = *l - r->real; - ret->imag = -r->imag; - return ret; -} - -/* ??$?GN@std@@YA?AV?$complex@N@0@ABV10@0@Z */ -/* ??$?GN@std@@YA?AV?$complex@N@0@AEBV10@0@Z */ -/* ??$?GO@std@@YA?AV?$complex@O@0@ABV10@0@Z */ -/* ??$?GO@std@@YA?AV?$complex@O@0@AEBV10@0@Z */ -complex_double* __cdecl complex_double_sub(complex_double *ret, const complex_double *l, const complex_double *r) -{ - ret->real = l->real - r->real; - ret->imag = l->imag - r->imag; - return ret; -} - -/* ??$?GN@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$?GN@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$?GO@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$?GO@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_neg(complex_double *ret, const complex_double *c) -{ - ret->real = -c->real; - ret->imag = -c->imag; - return ret; -} - -/* ??$?GN@std@@YA?AV?$complex@N@0@ABV10@ABN@Z */ -/* ??$?GN@std@@YA?AV?$complex@N@0@AEBV10@AEBN@Z */ -/* ??$?GO@std@@YA?AV?$complex@O@0@ABV10@ABO@Z */ -/* ??$?GO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z */ -complex_double* __cdecl complex_double_sub_cd(complex_double *ret, const complex_double *l, double *r) -{ - ret->real = l->real - *r; - ret->imag = l->imag; - return ret; -} - -/* ??$?HN@std@@YA?AV?$complex@N@0@ABNABV10@@Z */ -/* ??$?HN@std@@YA?AV?$complex@N@0@AEBNAEBV10@@Z */ -/* ??$?HO@std@@YA?AV?$complex@O@0@ABOABV10@@Z */ -/* ??$?HO@std@@YA?AV?$complex@O@0@AEBOAEBV10@@Z */ -complex_double* __cdecl complex_double_add_dc(complex_double *ret, const double *l, const complex_double *r) -{ - ret->real = *l + r->real; - ret->imag = r->imag; - return ret; -} - -/* ??$?HN@std@@YA?AV?$complex@N@0@ABV10@0@Z */ -/* ??$?HN@std@@YA?AV?$complex@N@0@AEBV10@0@Z */ -/* ??$?HO@std@@YA?AV?$complex@O@0@ABV10@0@Z */ -/* ??$?HO@std@@YA?AV?$complex@O@0@AEBV10@0@Z */ -complex_double* __cdecl complex_double_add(complex_double *ret, const complex_double *l, const complex_double *r) -{ - ret->real = l->real + r->real; - ret->imag = l->imag + r->imag; - return ret; -} - -/* ??$?HN@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$?HN@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$?HO@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$?HO@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_plus(complex_double *ret, const complex_double *c) -{ - *ret = *c; - return ret; -} - -/* ??$?HN@std@@YA?AV?$complex@N@0@ABV10@ABN@Z */ -/* ??$?HN@std@@YA?AV?$complex@N@0@AEBV10@AEBN@Z */ -/* ??$?HO@std@@YA?AV?$complex@O@0@ABV10@ABO@Z */ -/* ??$?HO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z */ -complex_double* __cdecl complex_double_add_cd(complex_double *ret, const complex_double *l, double *r) -{ - ret->real = l->real + *r; - ret->imag = l->imag; - return ret; -} - -/* ??$?KN@std@@YA?AV?$complex@N@0@ABV10@0@Z */ -/* ??$?KN@std@@YA?AV?$complex@N@0@AEBV10@0@Z */ -/* ??$?KO@std@@YA?AV?$complex@O@0@ABV10@0@Z */ -/* ??$?KO@std@@YA?AV?$complex@O@0@AEBV10@0@Z */ -complex_double* __cdecl complex_double_div(complex_double *ret, const complex_double *l, const complex_double *r) -{ - double tmp, den; - if((!r->real && !r->imag) || _isnan(l->real) || _isnan(l->imag) - || _isnan(r->real) || _isnan(r->imag)) { - ret->real = std_numeric_limits_double_quiet_NaN(); - ret->imag = ret->real; - return ret; - } - - if (fabs(r->real) >= fabs(r->imag)) { - tmp = r->imag / r->real; - den = r->real + r->imag*tmp; - ret->real = (l->real + l->imag*tmp) / den; - ret->imag = (l->imag - l->real*tmp) / den; - } else { - tmp = r->real / r->imag; - den = r->real*tmp + r->imag; - ret->real = (l->real*tmp + l->imag) / den; - ret->imag = (l->imag*tmp - l->real) / den; - } - return ret; -} - -/* ??$?KN@std@@YA?AV?$complex@N@0@ABNABV10@@Z */ -/* ??$?KN@std@@YA?AV?$complex@N@0@AEBNAEBV10@@Z */ -/* ??$?KO@std@@YA?AV?$complex@O@0@ABOABV10@@Z */ -/* ??$?KO@std@@YA?AV?$complex@O@0@AEBOAEBV10@@Z */ -complex_double* __cdecl complex_double_div_dc(complex_double *ret, const double *l, const complex_double *r) -{ - complex_double c = {*l, 0}; - return complex_double_div(ret, &c, r); -} - -/* ??$?KN@std@@YA?AV?$complex@N@0@ABV10@ABN@Z */ -/* ??$?KN@std@@YA?AV?$complex@N@0@AEBV10@AEBN@Z */ -/* ??$?KO@std@@YA?AV?$complex@O@0@ABV10@ABO@Z */ -/* ??$?KO@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z */ -complex_double* __cdecl complex_double_div_cd(complex_double *ret, const complex_double *l, double *r) -{ - ret->real = l->real / *r; - ret->imag = l->imag / *r; - return ret; -} - -/* ??4?$_Complex_base@NU_C_double_complex@@@std@@QAEAAV01@ABV01@@Z */ -/* ??4?$_Complex_base@NU_C_double_complex@@@std@@QEAAAEAV01@AEBV01@@Z */ -/* ??4?$_Complex_base@OU_C_ldouble_complex@@@std@@QAEAAV01@ABV01@@Z */ -/* ??4?$_Complex_base@OU_C_ldouble_complex@@@std@@QEAAAEAV01@AEBV01@@Z */ -/* ??4?$complex@N@std@@QAEAAV01@ABV01@@Z */ -/* ??4?$complex@N@std@@QEAAAEAV01@AEBV01@@Z */ -/* ??4?$complex@O@std@@QAEAAV01@ABV01@@Z */ -/* ??4?$complex@O@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_assign, 8) -complex_double* __thiscall complex_double_assign(complex_double *this, const complex_double *r) -{ - *this = *r; - return this; -} - -/* ??4?$complex@N@std@@QAEAAV01@ABN@Z */ -/* ??4?$complex@N@std@@QEAAAEAV01@AEBN@Z */ -/* ??4?$complex@O@std@@QAEAAV01@ABO@Z */ -/* ??4?$complex@O@std@@QEAAAEAV01@AEBO@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_assign_double, 8) -complex_double* __thiscall complex_double_assign_double(complex_double *this, double *r) -{ - this->real = *r; - this->imag = 0; - return this; -} - -/* ??X?$complex@N@std@@QAEAAV01@ABN@Z */ -/* ??X?$complex@N@std@@QEAAAEAV01@AEBN@Z */ -/* ??X?$complex@O@std@@QAEAAV01@ABO@Z */ -/* ??X?$complex@O@std@@QEAAAEAV01@AEBO@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_mult_assign_double, 8) -complex_double* __thiscall complex_double_mult_assign_double(complex_double *this, const double *r) -{ - this->real *= *r; - this->imag *= *r; - return this; -} - -/* ??X?$complex@N@std@@QAEAAV01@ABV01@@Z */ -/* ??X?$complex@N@std@@QEAAAEAV01@AEBV01@@Z */ -/* ??X?$complex@O@std@@QAEAAV01@ABV01@@Z */ -/* ??X?$complex@O@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_mult_assign, 8) -complex_double* __thiscall complex_double_mult_assign(complex_double *this, const complex_double *r) -{ - complex_double tmp = *this; - - this->real = tmp.real*r->real - tmp.imag*r->imag; - this->imag = tmp.real*r->imag + tmp.imag*r->real; - return this; -} - -/* ??Y?$complex@N@std@@QAEAAV01@ABN@Z */ -/* ??Y?$complex@N@std@@QEAAAEAV01@AEBN@Z */ -/* ??Y?$complex@O@std@@QAEAAV01@ABO@Z */ -/* ??Y?$complex@O@std@@QEAAAEAV01@AEBO@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_add_assign_double, 8) -complex_double* __thiscall complex_double_add_assign_double(complex_double *this, const double *r) -{ - this->real += *r; - return this; -} - -/* ??Y?$complex@N@std@@QAEAAV01@ABV01@@Z */ -/* ??Y?$complex@N@std@@QEAAAEAV01@AEBV01@@Z */ -/* ??Y?$complex@O@std@@QAEAAV01@ABV01@@Z */ -/* ??Y?$complex@O@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_add_assign, 8) -complex_double* __thiscall complex_double_add_assign(complex_double *this, const complex_double *r) -{ - this->real += r->real; - this->imag += r->imag; - return this; -} - -/* ??Z?$complex@N@std@@QAEAAV01@ABN@Z */ -/* ??Z?$complex@N@std@@QEAAAEAV01@AEBN@Z */ -/* ??Z?$complex@O@std@@QAEAAV01@ABO@Z */ -/* ??Z?$complex@O@std@@QEAAAEAV01@AEBO@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_sub_assign_double, 8) -complex_double* __thiscall complex_double_sub_assign_double(complex_double *this, const double *r) -{ - this->real -= *r; - return this; -} - -/* ??Z?$complex@N@std@@QAEAAV01@ABV01@@Z */ -/* ??Z?$complex@N@std@@QEAAAEAV01@AEBV01@@Z */ -/* ??Z?$complex@O@std@@QAEAAV01@ABV01@@Z */ -/* ??Z?$complex@O@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_sub_assign, 8) -complex_double* __thiscall complex_double_sub_assign(complex_double *this, const complex_double *r) -{ - this->real -= r->real; - this->imag -= r->imag; - return this; -} - -/* ??_0?$complex@N@std@@QAEAAV01@ABN@Z */ -/* ??_0?$complex@N@std@@QEAAAEAV01@AEBN@Z */ -/* ??_0?$complex@O@std@@QAEAAV01@ABO@Z */ -/* ??_0?$complex@O@std@@QEAAAEAV01@AEBO@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_div_assign_double, 8) -complex_double* __thiscall complex_double_div_assign_double(complex_double *this, const double *r) -{ - this->real /= *r; - this->imag /= *r; - return this; -} - -/* ??_0?$complex@N@std@@QAEAAV01@ABV01@@Z */ -/* ??_0?$complex@N@std@@QEAAAEAV01@AEBV01@@Z */ -/* ??_0?$complex@O@std@@QAEAAV01@ABV01@@Z */ -/* ??_0?$complex@O@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_div_assign, 8) -complex_double* __thiscall complex_double_div_assign(complex_double *this, const complex_double *r) -{ - complex_double tmp = *this; - return complex_double_div(this, &tmp, r); -} - -/* ??$arg@N@std@@YANABV?$complex@N@0@@Z */ -/* ??$arg@N@std@@YANAEBV?$complex@N@0@@Z */ -/* ??$arg@O@std@@YAOABV?$complex@O@0@@Z */ -/* ??$arg@O@std@@YAOAEBV?$complex@O@0@@Z */ -double __cdecl complex_double_arg(const complex_double *c) -{ - return atan2(c->imag, c->real); -} - -/* ??$imag@N@std@@YANABV?$complex@N@0@@Z */ -/* ??$imag@N@std@@YANAEBV?$complex@N@0@@Z */ -/* ??$imag@O@std@@YAOABV?$complex@O@0@@Z */ -/* ??$imag@O@std@@YAOAEBV?$complex@O@0@@Z */ -double __cdecl complex_double_imag(const complex_double *c) -{ - return c->imag; -} - -/* ?imag@?$_Complex_base@NU_C_double_complex@@@std@@QAENABN@Z */ -/* ?imag@?$_Complex_base@NU_C_double_complex@@@std@@QEAANAEBN@Z */ -/* ?imag@?$_Complex_base@OU_C_ldouble_complex@@@std@@QAEOABO@Z */ -/* ?imag@?$_Complex_base@OU_C_ldouble_complex@@@std@@QEAAOAEBO@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_imag_set, 8) -double __thiscall complex_double_imag_set(complex_double *this, const double *d) -{ - return (this->imag = *d); -} - -/* ?imag@?$_Complex_base@NU_C_double_complex@@@std@@QBENXZ */ -/* ?imag@?$_Complex_base@NU_C_double_complex@@@std@@QEBANXZ */ -/* ?imag@?$_Complex_base@OU_C_ldouble_complex@@@std@@QBEOXZ */ -/* ?imag@?$_Complex_base@OU_C_ldouble_complex@@@std@@QEBAOXZ */ -DEFINE_THISCALL_WRAPPER(complex_double_imag_get, 4) -double __thiscall complex_double_imag_get(const complex_double *this) -{ - return this->imag; -} - -/* ??$real@N@std@@YANABV?$complex@N@0@@Z */ -/* ??$real@N@std@@YANAEBV?$complex@N@0@@Z */ -/* ??$real@O@std@@YAOABV?$complex@O@0@@Z */ -/* ??$real@O@std@@YAOAEBV?$complex@O@0@@Z */ -double __cdecl complex_double_real(const complex_double *c) -{ - return c->real; -} - -/* ?real@?$_Complex_base@NU_C_double_complex@@@std@@QAENABN@Z */ -/* ?real@?$_Complex_base@NU_C_double_complex@@@std@@QEAANAEBN@Z */ -/* ?real@?$_Complex_base@OU_C_ldouble_complex@@@std@@QAEOABO@Z */ -/* ?real@?$_Complex_base@OU_C_ldouble_complex@@@std@@QEAAOAEBO@Z */ -DEFINE_THISCALL_WRAPPER(complex_double_real_set, 8) -double __thiscall complex_double_real_set(complex_double *this, const double *d) -{ - return (this->real = *d); -} - -/* ?real@?$_Complex_base@NU_C_double_complex@@@std@@QBENXZ */ -/* ?real@?$_Complex_base@NU_C_double_complex@@@std@@QEBANXZ */ -/* ?real@?$_Complex_base@OU_C_ldouble_complex@@@std@@QBEOXZ */ -/* ?real@?$_Complex_base@OU_C_ldouble_complex@@@std@@QEBAOXZ */ -DEFINE_THISCALL_WRAPPER(complex_double_real_get, 4) -double __thiscall complex_double_real_get(const complex_double *this) -{ - return this->real; -} - -/* ??$_Fabs@N@std@@YANABV?$complex@N@0@PAH@Z */ -/* ??$_Fabs@N@std@@YANAEBV?$complex@N@0@PEAH@Z */ -/* ??$_Fabs@O@std@@YAOABV?$complex@O@0@PAH@Z */ -/* ??$_Fabs@O@std@@YAOAEBV?$complex@O@0@PEAH@Z */ -double __cdecl complex_double__Fabs(const complex_double *c, int *scale) -{ - double ret; - - ret = hypot(c->real, c->imag); - if(_isnan(ret) || ret==0) { - *scale = 0; - }else if(ret >= 1) { - *scale = 2; - ret /= 4; - }else { - *scale = -2; - ret *= 4; - } - - return ret; -} - -/* ??$abs@N@std@@YANABV?$complex@N@0@@Z */ -/* ??$abs@N@std@@YANAEBV?$complex@N@0@@Z */ -/* ??$abs@O@std@@YAOABV?$complex@O@0@@Z */ -/* ??$abs@O@std@@YAOAEBV?$complex@O@0@@Z */ -double __cdecl complex_double_abs(const complex_double *c) -{ - return hypot(c->real, c->imag); -} - -/* ??$conj@N@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$conj@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$conj@O@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$conj@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_conj(complex_double *ret, const complex_double *c) -{ - ret->real = c->real; - ret->imag = -c->imag; - return ret; -} - -/* ??$cos@N@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$cos@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$cos@O@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$cos@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_cos(complex_double *ret, const complex_double *c) -{ - ret->real = cos(c->real)*cosh(c->imag); - ret->imag = -sin(c->real)*sinh(c->imag); - return ret; -} - -/* ??$sin@N@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$sin@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$sin@O@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$sin@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_sin(complex_double *ret, const complex_double *c) -{ - ret->real = sin(c->real)*cosh(c->imag); - ret->imag = cos(c->real)*sinh(c->imag); - return ret; -} - -/* ??$tan@N@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$tan@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$tan@O@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$tan@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_tan(complex_double *ret, const complex_double *c) -{ - double denom = cos(2*c->real) + cosh(2*c->imag); - ret->real = sin(2*c->real) / denom; - ret->imag = sinh(2*c->imag) / denom; - return ret; -} - -/* ??$cosh@N@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$cosh@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$cosh@O@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$cosh@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_cosh(complex_double *ret, const complex_double *c) -{ - ret->real = cosh(c->real)*cos(c->imag); - ret->imag = sinh(c->real)*sin(c->imag); - return ret; -} - -/* ??$sinh@N@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$sinh@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$sinh@O@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$sinh@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_sinh(complex_double *ret, const complex_double *c) -{ - ret->real = sinh(c->real)*cos(c->imag); - ret->imag = cosh(c->real)*sin(c->imag); - return ret; -} - -/* ??$tanh@N@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$tanh@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$tanh@O@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$tanh@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_tanh(complex_double *ret, const complex_double *c) -{ - complex_double tmp; - - ret->real = -c->imag; - ret->imag = c->real; - complex_double_tan(&tmp, ret); - ret->real = tmp.imag; - ret->imag = -tmp.real; - return ret; -} - -/* ??$exp@N@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$exp@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$exp@O@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$exp@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_exp(complex_double *ret, const complex_double *c) -{ - ret->real = ret->imag = exp(c->real); - ret->real *= cos(c->imag); - ret->imag *= sin(c->imag); - return ret; -} - -/* ??$log@N@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$log@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$log@O@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$log@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_log(complex_double *ret, const complex_double *c) -{ - ret->real = log(complex_double_abs(c)); - ret->imag = complex_double_arg(c); - return ret; -} - -/* ??$log10@N@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$log10@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$log10@O@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$log10@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_log10(complex_double *ret, const complex_double *c) -{ - complex_double_log(ret, c); - ret->real *= M_LOG10E; - ret->imag *= M_LOG10E; - return ret; -} - -/* ??$norm@N@std@@YANABV?$complex@N@0@@Z */ -/* ??$norm@N@std@@YANAEBV?$complex@N@0@@Z */ -/* ??$norm@O@std@@YAOABV?$complex@O@0@@Z */ -/* ??$norm@O@std@@YAOAEBV?$complex@O@0@@Z */ -double __cdecl complex_double_norm(const complex_double *c) -{ - return c->real*c->real + c->imag*c->imag; -} - -/* ??$polar@N@std@@YA?AV?$complex@N@0@ABN0@Z */ -/* ??$polar@N@std@@YA?AV?$complex@N@0@AEBN0@Z */ -/* ??$polar@O@std@@YA?AV?$complex@O@0@ABO0@Z */ -/* ??$polar@O@std@@YA?AV?$complex@O@0@AEBO0@Z */ -complex_double* __cdecl complex_double_polar_theta(complex_double *ret, const double *mod, const double *theta) -{ - ret->real = *mod * cos(*theta); - ret->imag = *mod * sin(*theta); - return ret; -} - -/* ??$polar@N@std@@YA?AV?$complex@N@0@ABN@Z */ -/* ??$polar@N@std@@YA?AV?$complex@N@0@AEBN@Z */ -/* ??$polar@O@std@@YA?AV?$complex@O@0@ABO@Z */ -/* ??$polar@O@std@@YA?AV?$complex@O@0@AEBO@Z */ -complex_double* __cdecl complex_double_polar(complex_double *ret, const double *mod) -{ - ret->real = *mod; - ret->imag = 0; - return ret; -} - -/* ??$pow@N@std@@YA?AV?$complex@N@0@ABV10@0@Z */ -/* ??$pow@N@std@@YA?AV?$complex@N@0@AEBV10@0@Z */ -/* ??$pow@O@std@@YA?AV?$complex@O@0@ABV10@0@Z */ -/* ??$pow@O@std@@YA?AV?$complex@O@0@AEBV10@0@Z */ -complex_double* __cdecl complex_double_pow(complex_double *ret, const complex_double *l, const complex_double *r) -{ - double abs = complex_double_abs(l), arg = complex_double_arg(l); - double rad = pow(abs, r->real), theta = r->real*arg; - - if(r->imag) { - rad *= exp(-r->imag * arg); - theta += r->imag * log(abs); - } - - ret->real = rad * cos(theta); - ret->imag = rad * sin(theta); - return ret; -} - -/* ??$pow@N@std@@YA?AV?$complex@N@0@ABNABV10@@Z */ -/* ??$pow@N@std@@YA?AV?$complex@N@0@AEBNAEBV10@@Z */ -/* ??$pow@O@std@@YA?AV?$complex@O@0@ABOABV10@@Z */ -/* ??$pow@O@std@@YA?AV?$complex@O@0@AEBOAEBV10@@Z */ -complex_double* __cdecl complex_double_pow_dc(complex_double *ret, const double *l, const complex_double *r) -{ - complex_double c = { *l, 0 }; - return complex_double_pow(ret, &c, r); -} - -/* ??$pow@N@std@@YA?AV?$complex@N@0@ABV10@ABN@Z */ -/* ??$pow@N@std@@YA?AV?$complex@N@0@AEBV10@AEBN@Z */ -/* ??$pow@O@std@@YA?AV?$complex@O@0@ABV10@ABO@Z */ -/* ??$pow@O@std@@YA?AV?$complex@O@0@AEBV10@AEBO@Z */ -complex_double* __cdecl complex_double_pow_cd(complex_double *ret, const complex_double *l, const double *r) -{ - complex_double c = { *r, 0 }; - return complex_double_pow(ret, l, &c); -} - -/* ??$sqrt@N@std@@YA?AV?$complex@N@0@ABV10@@Z */ -/* ??$sqrt@N@std@@YA?AV?$complex@N@0@AEBV10@@Z */ -/* ??$sqrt@O@std@@YA?AV?$complex@O@0@ABV10@@Z */ -/* ??$sqrt@O@std@@YA?AV?$complex@O@0@AEBV10@@Z */ -complex_double* __cdecl complex_double_sqrt(complex_double *ret, const complex_double *l) -{ - complex_double c = { 0.5, 0 }; - return complex_double_pow(ret, l, &c); -} diff --git a/dlls/msvcp71/memory.c b/dlls/msvcp71/memory.c deleted file mode 100644 index 405669c5a58..00000000000 --- a/dlls/msvcp71/memory.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2010 Piotr Caban for CodeWeavers - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "config.h" - -#include -#include - -#include "msvcp.h" - -#include "windef.h" -#include "winbase.h" - -/* ?deallocate@?$allocator@D@std@@QAEXPADI@Z */ -/* ?deallocate@?$allocator@D@std@@QEAAXPEAD_K@Z */ -void MSVCP_allocator_char_deallocate(void *this, char *ptr, MSVCP_size_t size) -{ - MSVCRT_operator_delete(ptr); -} - -/* ?allocate@?$allocator@D@std@@QAEPADI@Z */ -/* ?allocate@?$allocator@D@std@@QEAAPEAD_K@Z */ -char* MSVCP_allocator_char_allocate(void *this, MSVCP_size_t count) -{ - return MSVCRT_operator_new(count); -} - -/* ?max_size@?$allocator@D@std@@QBEIXZ */ -/* ?max_size@?$allocator@D@std@@QEBA_KXZ */ -MSVCP_size_t MSVCP_allocator_char_max_size(void *this) -{ - return UINT_MAX/sizeof(char); -} - - -/* allocator */ -/* ?deallocate@?$allocator@_W@std@@QAEXPA_WI@Z */ -/* ?deallocate@?$allocator@_W@std@@QEAAXPEA_W_K@Z */ -void MSVCP_allocator_wchar_deallocate(void *this, - wchar_t *ptr, MSVCP_size_t size) -{ - MSVCRT_operator_delete(ptr); -} - -/* ?allocate@?$allocator@_W@std@@QAEPA_WI@Z */ -/* ?allocate@?$allocator@_W@std@@QEAAPEA_W_K@Z */ -wchar_t* MSVCP_allocator_wchar_allocate(void *this, MSVCP_size_t count) -{ - if(UINT_MAX/count < sizeof(wchar_t)) { - throw_exception(EXCEPTION_BAD_ALLOC, NULL); - return NULL; - } - - return MSVCRT_operator_new(count * sizeof(wchar_t)); -} - -/* ?max_size@?$allocator@_W@std@@QBEIXZ */ -/* ?max_size@?$allocator@_W@std@@QEBA_KXZ */ -MSVCP_size_t MSVCP_allocator_wchar_max_size(void *this) -{ - return UINT_MAX/sizeof(wchar_t); -} - -/* allocator */ -/* ??0?$allocator@X@std@@QAE@XZ */ -/* ??0?$allocator@X@std@@QEAA@XZ */ -DEFINE_THISCALL_WRAPPER(MSVCP_allocator_void_ctor, 4) -void* __thiscall MSVCP_allocator_void_ctor(void *this) -{ - return this; -} - -/* ??0?$allocator@X@std@@QAE@ABV01@@Z */ -/* ??0?$allocator@X@std@@QEAA@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(MSVCP_allocator_void_copy_ctor, 8) -void* __thiscall MSVCP_allocator_void_copy_ctor(void *this, void *copy) -{ - return this; -} - -/* ??4?$allocator@X@std@@QAEAAV01@ABV01@@Z */ -/* ??4?$allocator@X@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(MSVCP_allocator_void_assign, 8) -void* __thiscall MSVCP_allocator_void_assign(void *this, void *assign) -{ - return this; -} diff --git a/dlls/msvcp71/misc.c b/dlls/msvcp71/misc.c deleted file mode 100644 index 227c1b84b21..00000000000 --- a/dlls/msvcp71/misc.c +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2010 Piotr Caban for CodeWeavers - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "config.h" - -#include -#include - -#include "msvcp.h" - -#include "windef.h" -#include "winbase.h" -#include "wine/debug.h" -WINE_DEFAULT_DEBUG_CHANNEL(msvcp); - -/* ??0_Mutex@std@@QAE@XZ */ -/* ??0_Mutex@std@@QEAA@XZ */ -DEFINE_THISCALL_WRAPPER(mutex_ctor, 4) -mutex* __thiscall mutex_ctor(mutex *this) -{ - CRITICAL_SECTION *cs = MSVCRT_operator_new(sizeof(*cs)); - if(!cs) { - ERR("Out of memory\n"); - throw_exception(EXCEPTION_BAD_ALLOC, NULL); - } - - InitializeCriticalSection(cs); - cs->DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": _Mutex critical section"); - this->mutex = cs; - return this; -} - -/* ??1_Mutex@std@@QAE@XZ */ -/* ??1_Mutex@std@@QEAA@XZ */ -DEFINE_THISCALL_WRAPPER(mutex_dtor, 4) -void __thiscall mutex_dtor(mutex *this) -{ - ((CRITICAL_SECTION*)this->mutex)->DebugInfo->Spare[0] = 0; - DeleteCriticalSection(this->mutex); - MSVCRT_operator_delete(this->mutex); -} - -/* ?_Lock@_Mutex@std@@QAEXXZ */ -/* ?_Lock@_Mutex@std@@QEAAXXZ */ -DEFINE_THISCALL_WRAPPER(mutex_lock, 4) -void __thiscall mutex_lock(mutex *this) -{ - EnterCriticalSection(this->mutex); -} - -/* ?_Unlock@_Mutex@std@@QAEXXZ */ -/* ?_Unlock@_Mutex@std@@QEAAXXZ */ -DEFINE_THISCALL_WRAPPER(mutex_unlock, 4) -void __thiscall mutex_unlock(mutex *this) -{ - LeaveCriticalSection(this->mutex); -} - -static CRITICAL_SECTION lockit_cs[_MAX_LOCK]; - -/* ?_Lockit_ctor@_Lockit@std@@SAXH@Z */ -static void _Lockit_init(int locktype) { - InitializeCriticalSection(&lockit_cs[locktype]); - lockit_cs[locktype].DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": _Lockit critical section"); -} - -/* ?_Lockit_dtor@_Lockit@std@@SAXH@Z */ -static void _Lockit_free(int locktype) -{ - lockit_cs[locktype].DebugInfo->Spare[0] = 0; - DeleteCriticalSection(&lockit_cs[locktype]); -} - -void init_lockit(void) { - int i; - - for(i=0; i<_MAX_LOCK; i++) - _Lockit_init(i); -} - -void free_lockit(void) { - int i; - - for(i=0; i<_MAX_LOCK; i++) - _Lockit_free(i); -} - -/* ?_Lockit_ctor@_Lockit@std@@CAXPAV12@H@Z */ -/* ?_Lockit_ctor@_Lockit@std@@CAXPEAV12@H@Z */ -static void _Lockit__Lockit_ctor_locktype(_Lockit *lockit, int locktype) -{ - lockit->locktype = locktype; - EnterCriticalSection(&lockit_cs[locktype]); -} - -/* ??0_Lockit@std@@QAE@H@Z */ -/* ??0_Lockit@std@@QEAA@H@Z */ -DEFINE_THISCALL_WRAPPER(_Lockit_ctor_locktype, 8) -_Lockit* __thiscall _Lockit_ctor_locktype(_Lockit *this, int locktype) -{ - _Lockit__Lockit_ctor_locktype(this, locktype); - return this; -} - -/* ??0_Lockit@std@@QAE@XZ */ -/* ??0_Lockit@std@@QEAA@XZ */ -DEFINE_THISCALL_WRAPPER(_Lockit_ctor, 4) -_Lockit* __thiscall _Lockit_ctor(_Lockit *this) -{ - _Lockit__Lockit_ctor_locktype(this, 0); - return this; -} - -/* ?_Lockit_dtor@_Lockit@std@@CAXPAV12@@Z */ -/* ?_Lockit_dtor@_Lockit@std@@CAXPEAV12@@Z */ -static void _Lockit__Lockit_dtor(_Lockit *lockit) -{ - LeaveCriticalSection(&lockit_cs[lockit->locktype]); -} - -/* ??1_Lockit@std@@QAE@XZ */ -/* ??1_Lockit@std@@QEAA@XZ */ -DEFINE_THISCALL_WRAPPER(_Lockit_dtor, 4) -void __thiscall _Lockit_dtor(_Lockit *this) -{ - _Lockit__Lockit_dtor(this); -} - -/* wctype */ -unsigned short __cdecl wctype(const char *property) -{ - static const struct { - const char *name; - unsigned short mask; - } properties[] = { - { "alnum", _DIGIT|_ALPHA }, - { "alpha", _ALPHA }, - { "cntrl", _CONTROL }, - { "digit", _DIGIT }, - { "graph", _DIGIT|_PUNCT|_ALPHA }, - { "lower", _LOWER }, - { "print", _DIGIT|_PUNCT|_BLANK|_ALPHA }, - { "punct", _PUNCT }, - { "space", _SPACE }, - { "upper", _UPPER }, - { "xdigit", _HEX } - }; - unsigned int i; - - for(i=0; i - -#include "msvcp.h" - -#include "windef.h" -#include "winbase.h" -#include "wine/debug.h" - -#ifdef __i386__ - -#define DEFINE_VTBL_WRAPPER(off) \ - __ASM_GLOBAL_FUNC(vtbl_wrapper_ ## off, \ - "popl %eax\n\t" \ - "popl %ecx\n\t" \ - "pushl %eax\n\t" \ - "movl 0(%ecx), %eax\n\t" \ - "jmp *" #off "(%eax)\n\t") - -DEFINE_VTBL_WRAPPER(0); -DEFINE_VTBL_WRAPPER(4); -DEFINE_VTBL_WRAPPER(8); -DEFINE_VTBL_WRAPPER(12); -DEFINE_VTBL_WRAPPER(16); -DEFINE_VTBL_WRAPPER(20); -DEFINE_VTBL_WRAPPER(24); -DEFINE_VTBL_WRAPPER(28); -DEFINE_VTBL_WRAPPER(32); -DEFINE_VTBL_WRAPPER(36); -DEFINE_VTBL_WRAPPER(40); -DEFINE_VTBL_WRAPPER(44); -DEFINE_VTBL_WRAPPER(48); - -#endif - -void* (__cdecl *MSVCRT_operator_new)(MSVCP_size_t); -void (__cdecl *MSVCRT_operator_delete)(void*); -void* (__cdecl *MSVCRT_set_new_handler)(void*); - -static void init_cxx_funcs(void) -{ - HMODULE hmod = GetModuleHandleA("msvcrt.dll"); - - if (sizeof(void *) > sizeof(int)) /* 64-bit has different names */ - { - MSVCRT_operator_new = (void*)GetProcAddress(hmod, "??2@YAPEAX_K@Z"); - MSVCRT_operator_delete = (void*)GetProcAddress(hmod, "??3@YAXPEAX@Z"); - MSVCRT_set_new_handler = (void*)GetProcAddress(hmod, "?_set_new_handler@@YAP6AH_K@ZP6AH0@Z@Z"); - } - else - { - MSVCRT_operator_new = (void*)GetProcAddress(hmod, "??2@YAPAXI@Z"); - MSVCRT_operator_delete = (void*)GetProcAddress(hmod, "??3@YAXPAX@Z"); - MSVCRT_set_new_handler = (void*)GetProcAddress(hmod, "?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z"); - } -} - -BOOL WINAPI DllMain(HINSTANCE hdll, DWORD reason, LPVOID reserved) -{ - switch (reason) - { - case DLL_WINE_PREATTACH: - return FALSE; /* prefer native version */ - case DLL_PROCESS_ATTACH: - init_cxx_funcs(); - init_lockit(); - init_exception(hdll); - init_locale(hdll); - init_io(hdll); - break; - case DLL_PROCESS_DETACH: - if (reserved) break; - free_io(); - free_locale(); - free_lockit(); - break; - } - return TRUE; -} - -/* ?_BADOFF@std@@3JB -> long const std::_BADOFF */ -/* ?_BADOFF@std@@3_JB -> __int64 const std::_BADOFF */ -const streamoff std_BADOFF = -1; - -/* ?_Fpz@std@@3_JA __int64 std::_Fpz */ -__int64 std_Fpz = 0;