msvcrt: Added _wtol_l implementation.
[wine] / dlls / msvcrt / msvcrt.h
index da8e0a8..69ad7a7 100644 (file)
 #include "winbase.h"
 
 #define MSVCRT_LONG_MAX    0x7fffffffL
+#define MSVCRT_LONG_MIN    (-MSVCRT_LONG_MAX-1)
 #define MSVCRT_ULONG_MAX   0xffffffffUL
 #define MSVCRT_I64_MAX    (((__int64)0x7fffffff << 32) | 0xffffffff)
 #define MSVCRT_I64_MIN    (-MSVCRT_I64_MAX-1)
 #define MSVCRT_UI64_MAX   (((unsigned __int64)0xffffffff << 32) | 0xffffffff)
+#define MSVCRT_MB_LEN_MAX 2
 
 #define MSVCRT__MAX_DRIVE  3
 #define MSVCRT__MAX_DIR    256
@@ -199,7 +201,8 @@ struct __thread_data {
     struct MSVCRT_tm               *time_buffer;        /* buffer for localtime/gmtime */
     char                           *efcvt_buffer;       /* buffer for ecvt/fcvt */
     int                             unk3[2];
-    void                           *unk4[4];
+    void                           *unk4[3];
+    EXCEPTION_POINTERS             *xcptinfo;
     int                             fpecode;
     MSVCRT_pthreadmbcinfo           mbcinfo;
     MSVCRT_pthreadlocinfo           locinfo;
@@ -218,7 +221,7 @@ typedef struct __thread_data thread_data_t;
 
 extern thread_data_t *msvcrt_get_thread_data(void) DECLSPEC_HIDDEN;
 
-LCID MSVCRT_locale_to_LCID(const char *) DECLSPEC_HIDDEN;
+LCID MSVCRT_locale_to_LCID(const char*, unsigned short*) DECLSPEC_HIDDEN;
 extern MSVCRT__locale_t MSVCRT_locale DECLSPEC_HIDDEN;
 extern unsigned int MSVCRT___lc_codepage;
 extern int MSVCRT___lc_collate_cp;
@@ -237,6 +240,8 @@ extern MSVCRT_wchar_t ** msvcrt_SnapshotOfEnvironmentW(MSVCRT_wchar_t **) DECLSP
 
 MSVCRT_wchar_t *msvcrt_wstrdupa(const char *) DECLSPEC_HIDDEN;
 
+extern unsigned int MSVCRT__commode;
+
 /* FIXME: This should be declared in new.h but it's not an extern "C" so
  * it would not be much use anyway. Even for Winelib applications.
  */
@@ -248,9 +253,6 @@ void __cdecl MSVCRT_operator_delete(void*);
 typedef void* (__cdecl *malloc_func_t)(MSVCRT_size_t);
 typedef void  (__cdecl *free_func_t)(void*);
 
-extern char* __cdecl __unDName(char *,const char*,int,malloc_func_t,free_func_t,unsigned short int);
-extern char* __cdecl __unDNameEx(char *,const char*,int,malloc_func_t,free_func_t,void *,unsigned short int);
-
 /* Setup and teardown multi threaded locks */
 extern void msvcrt_init_mt_locks(void) DECLSPEC_HIDDEN;
 extern void msvcrt_free_mt_locks(void) DECLSPEC_HIDDEN;
@@ -266,6 +268,7 @@ extern void msvcrt_init_args(void) DECLSPEC_HIDDEN;
 extern void msvcrt_free_args(void) DECLSPEC_HIDDEN;
 extern void msvcrt_init_signals(void) DECLSPEC_HIDDEN;
 extern void msvcrt_free_signals(void) DECLSPEC_HIDDEN;
+extern void msvcrt_free_popen_data(void) DECLSPEC_HIDDEN;
 
 extern unsigned msvcrt_create_io_inherit_block(WORD*, BYTE**) DECLSPEC_HIDDEN;
 
@@ -427,6 +430,23 @@ struct MSVCRT___JUMP_BUFFER
     struct MSVCRT__SETJMP_FLOAT128 Xmm14;
     struct MSVCRT__SETJMP_FLOAT128 Xmm15;
 };
+#elif defined(__arm__)
+struct MSVCRT___JUMP_BUFFER
+{
+    unsigned long Frame;
+    unsigned long R4;
+    unsigned long R5;
+    unsigned long R6;
+    unsigned long R7;
+    unsigned long R8;
+    unsigned long R9;
+    unsigned long R10;
+    unsigned long R11;
+    unsigned long Sp;
+    unsigned long Pc;
+    unsigned long Fpscr;
+    unsigned long long D[8];
+};
 #endif /* __i386__ */
 
 struct MSVCRT__diskfree_t {
@@ -712,6 +732,7 @@ struct MSVCRT__stat64 {
 #define MSVCRT__IOERR    0x0020
 #define MSVCRT__IOSTRG   0x0040
 #define MSVCRT__IORW     0x0080
+#define MSVCRT__IOCOMMIT 0x4000
 
 #define MSVCRT__S_IEXEC  0x0040
 #define MSVCRT__S_IWRITE 0x0080
@@ -750,6 +771,9 @@ struct MSVCRT__stat64 {
 #define MSVCRT__O_TEXT          0x4000
 #define MSVCRT__O_BINARY        0x8000
 #define MSVCRT__O_RAW           MSVCRT__O_BINARY
+#define MSVCRT__O_WTEXT         0x10000
+#define MSVCRT__O_U16TEXT       0x20000
+#define MSVCRT__O_U8TEXT        0x40000
 
 /* _statusfp bit flags */
 #define MSVCRT__SW_INEXACT      0x00000001 /* inexact (precision) */
@@ -863,6 +887,8 @@ typedef void (__cdecl *MSVCRT___sighandler_t)(int);
 /* _get_output_format return code */
 #define MSVCRT__TWO_DIGIT_EXPONENT 0x1
 
+#define MSVCRT__NLSCMPERROR ((unsigned int)0x7fffffff)
+
 void  __cdecl    MSVCRT_free(void*);
 void* __cdecl    MSVCRT_malloc(MSVCRT_size_t);
 void* __cdecl    MSVCRT_calloc(MSVCRT_size_t,MSVCRT_size_t);
@@ -880,6 +906,7 @@ int __cdecl      MSVCRT_fgetc(MSVCRT_FILE*);
 int __cdecl      MSVCRT_ungetc(int,MSVCRT_FILE*);
 MSVCRT_wint_t __cdecl MSVCRT_fgetwc(MSVCRT_FILE*);
 MSVCRT_wint_t __cdecl MSVCRT_ungetwc(MSVCRT_wint_t,MSVCRT_FILE*);
+__int64 __cdecl  MSVCRT__ftelli64(MSVCRT_FILE* file);
 void __cdecl     MSVCRT__exit(int);
 void __cdecl     MSVCRT_abort(void);
 MSVCRT_ulong* __cdecl MSVCRT___doserrno(void);
@@ -919,6 +946,7 @@ int            __cdecl _getch(void);
 int            __cdecl _ismbblead(unsigned int);
 int            __cdecl _ismbclegal(unsigned int c);
 int            __cdecl _ismbstrail(const unsigned char* start, const unsigned char* str);
+int            __cdecl MSVCRT_mbtowc(MSVCRT_wchar_t*,const char*,MSVCRT_size_t);
 MSVCRT_size_t  __cdecl MSVCRT_mbstowcs(MSVCRT_wchar_t*,const char*,MSVCRT_size_t);
 MSVCRT_intptr_t __cdecl MSVCRT__spawnve(int,const char*,const char* const *,const char* const *);
 MSVCRT_intptr_t __cdecl MSVRT__spawnvpe(int,const char*,const char* const *,const char* const *);
@@ -938,6 +966,7 @@ int*    __cdecl  __p___mb_cur_max(void);
 unsigned int*  __cdecl __p__fmode(void);
 MSVCRT_wchar_t* __cdecl MSVCRT__wcsdup(const MSVCRT_wchar_t*);
 MSVCRT_wchar_t*** __cdecl MSVCRT___p__wenviron(void);
+INT     __cdecl MSVCRT_wctomb(char*,MSVCRT_wchar_t);
 char*   __cdecl MSVCRT__strdate(char* date);
 char*   __cdecl MSVCRT__strtime(char* date);
 int     __cdecl _setmbcp(int);
@@ -952,6 +981,9 @@ void __cdecl MSVCRT__invalid_parameter(const MSVCRT_wchar_t *expr, const MSVCRT_
                                        const MSVCRT_wchar_t *file, unsigned int line, MSVCRT_uintptr_t arg);
 int __cdecl      MSVCRT__toupper_l(int,MSVCRT__locale_t);
 int __cdecl      MSVCRT__tolower_l(int,MSVCRT__locale_t);
+int __cdecl      MSVCRT__strnicoll_l(const char*, const char*, MSVCRT_size_t, MSVCRT__locale_t);
+int __cdecl      MSVCRT_strncoll_l(const char*, const char*, MSVCRT_size_t, MSVCRT__locale_t);
+unsigned int __cdecl _get_output_format(void);
 
 /* Maybe one day we'll enable the invalid parameter handlers with the full set of information (msvcrXXd)
  *      #define MSVCRT_INVALID_PMT(x) MSVCRT_call_invalid_parameter_handler(x, __FUNCTION__, __FILE__, __LINE__, 0)
@@ -984,6 +1016,7 @@ int pf_printf_w(puts_clbk_w, void*, const MSVCRT_wchar_t*, MSVCRT__locale_t,
 printf_arg arg_clbk_valist(void*, int, int, __ms_va_list*) DECLSPEC_HIDDEN;
 
 #define MSVCRT_FLT_MIN 1.175494351e-38F
+#define MSVCRT_DBL_MIN 2.2250738585072014e-308
 #define MSVCRT__OVERFLOW  3
 #define MSVCRT__UNDERFLOW 4
 
@@ -992,4 +1025,31 @@ typedef struct
     float f;
 } MSVCRT__CRT_FLOAT;
 
+typedef struct
+{
+    double x;
+} MSVCRT__CRT_DOUBLE;
+
+extern char* __cdecl __unDName(char *,const char*,int,malloc_func_t,free_func_t,unsigned short int);
+
+/* __unDName/__unDNameEx flags */
+#define UNDNAME_COMPLETE                 (0x0000)
+#define UNDNAME_NO_LEADING_UNDERSCORES   (0x0001) /* Don't show __ in calling convention */
+#define UNDNAME_NO_MS_KEYWORDS           (0x0002) /* Don't show calling convention at all */
+#define UNDNAME_NO_FUNCTION_RETURNS      (0x0004) /* Don't show function/method return value */
+#define UNDNAME_NO_ALLOCATION_MODEL      (0x0008)
+#define UNDNAME_NO_ALLOCATION_LANGUAGE   (0x0010)
+#define UNDNAME_NO_MS_THISTYPE           (0x0020)
+#define UNDNAME_NO_CV_THISTYPE           (0x0040)
+#define UNDNAME_NO_THISTYPE              (0x0060)
+#define UNDNAME_NO_ACCESS_SPECIFIERS     (0x0080) /* Don't show access specifier (public/protected/private) */
+#define UNDNAME_NO_THROW_SIGNATURES      (0x0100)
+#define UNDNAME_NO_MEMBER_TYPE           (0x0200) /* Don't show static/virtual specifier */
+#define UNDNAME_NO_RETURN_UDT_MODEL      (0x0400)
+#define UNDNAME_32_BIT_DECODE            (0x0800)
+#define UNDNAME_NAME_ONLY                (0x1000) /* Only report the variable/method name */
+#define UNDNAME_NO_ARGUMENTS             (0x2000) /* Don't show method arguments */
+#define UNDNAME_NO_SPECIAL_SYMS          (0x4000)
+#define UNDNAME_NO_COMPLEX_TYPE          (0x8000)
+
 #endif /* __WINE_MSVCRT_H */