OSDN Git Service

Updated to tcl 8.4.1
[pf3gnuchains/sourceware.git] / tcl / win / tclWinInt.h
1 /*
2  * tclWinInt.h --
3  *
4  *      Declarations of Windows-specific shared variables and procedures.
5  *
6  * Copyright (c) 1994-1996 Sun Microsystems, Inc.
7  *
8  * See the file "license.terms" for information on usage and redistribution
9  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
10  *
11  * RCS: @(#) $Id$
12  */
13
14 #ifndef _TCLWININT
15 #define _TCLWININT
16
17 #ifndef _TCLINT
18 #include "tclInt.h"
19 #endif
20 #ifndef _TCLPORT
21 #include "tclPort.h"
22 #endif
23
24 /*
25  * The following specifies how much stack space TclpCheckStackSpace()
26  * ensures is available.  TclpCheckStackSpace() is called by Tcl_EvalObj()
27  * to help avoid overflowing the stack in the case of infinite recursion.
28  */
29
30 #define TCL_WIN_STACK_THRESHOLD 0x2000
31
32 #ifdef BUILD_tcl
33 # undef TCL_STORAGE_CLASS
34 # define TCL_STORAGE_CLASS DLLEXPORT
35 #endif
36
37 /*
38  * Some versions of Borland C have a define for the OSVERSIONINFO for
39  * Win32s and for NT, but not for Windows 95.
40  */
41
42 #ifndef VER_PLATFORM_WIN32_WINDOWS
43 #define VER_PLATFORM_WIN32_WINDOWS 1
44 #endif
45
46 /*
47  * The following structure keeps track of whether we are using the 
48  * multi-byte or the wide-character interfaces to the operating system.
49  * System calls should be made through the following function table.
50  */
51
52 typedef union {
53     WIN32_FIND_DATAA a;
54     WIN32_FIND_DATAW w;
55 } WIN32_FIND_DATAT;
56
57 typedef struct TclWinProcs {
58     int useWide;
59
60     BOOL (WINAPI *buildCommDCBProc)(CONST TCHAR *, LPDCB);
61     TCHAR *(WINAPI *charLowerProc)(TCHAR *);
62     BOOL (WINAPI *copyFileProc)(CONST TCHAR *, CONST TCHAR *, BOOL);
63     BOOL (WINAPI *createDirectoryProc)(CONST TCHAR *, LPSECURITY_ATTRIBUTES);
64     HANDLE (WINAPI *createFileProc)(CONST TCHAR *, DWORD, DWORD, 
65             LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE);
66     BOOL (WINAPI *createProcessProc)(CONST TCHAR *, TCHAR *, 
67             LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, 
68             LPVOID, CONST TCHAR *, LPSTARTUPINFOA, LPPROCESS_INFORMATION);
69     BOOL (WINAPI *deleteFileProc)(CONST TCHAR *);
70     HANDLE (WINAPI *findFirstFileProc)(CONST TCHAR *, WIN32_FIND_DATAT *);
71     BOOL (WINAPI *findNextFileProc)(HANDLE, WIN32_FIND_DATAT *);
72     BOOL (WINAPI *getComputerNameProc)(WCHAR *, LPDWORD);
73     DWORD (WINAPI *getCurrentDirectoryProc)(DWORD, WCHAR *);
74     DWORD (WINAPI *getFileAttributesProc)(CONST TCHAR *);
75     DWORD (WINAPI *getFullPathNameProc)(CONST TCHAR *, DWORD nBufferLength, 
76             WCHAR *, TCHAR **);
77     DWORD (WINAPI *getModuleFileNameProc)(HMODULE, WCHAR *, int);
78     DWORD (WINAPI *getShortPathNameProc)(CONST TCHAR *, WCHAR *, DWORD); 
79     UINT (WINAPI *getTempFileNameProc)(CONST TCHAR *, CONST TCHAR *, UINT, 
80             WCHAR *);
81     DWORD (WINAPI *getTempPathProc)(DWORD, WCHAR *);
82     BOOL (WINAPI *getVolumeInformationProc)(CONST TCHAR *, WCHAR *, DWORD, 
83             LPDWORD, LPDWORD, LPDWORD, WCHAR *, DWORD);
84     HINSTANCE (WINAPI *loadLibraryProc)(CONST TCHAR *);
85     TCHAR (WINAPI *lstrcpyProc)(WCHAR *, CONST TCHAR *);
86     BOOL (WINAPI *moveFileProc)(CONST TCHAR *, CONST TCHAR *);
87     BOOL (WINAPI *removeDirectoryProc)(CONST TCHAR *);
88     DWORD (WINAPI *searchPathProc)(CONST TCHAR *, CONST TCHAR *, 
89             CONST TCHAR *, DWORD, WCHAR *, TCHAR **);
90     BOOL (WINAPI *setCurrentDirectoryProc)(CONST TCHAR *);
91     BOOL (WINAPI *setFileAttributesProc)(CONST TCHAR *, DWORD);
92     BOOL (WINAPI *getFileAttributesExProc)(CONST TCHAR *, 
93             GET_FILEEX_INFO_LEVELS, LPVOID);
94     BOOL (WINAPI *createHardLinkProc)(CONST TCHAR*, CONST TCHAR*, 
95                                       LPSECURITY_ATTRIBUTES);
96 } TclWinProcs;
97
98 EXTERN TclWinProcs *tclWinProcs;
99
100 /*
101  * Declarations of functions that are not accessible by way of the
102  * stubs table.
103  */
104
105 EXTERN void             TclWinInit(HINSTANCE hInst);
106 EXTERN int              TclWinSymLinkCopyDirectory(CONST TCHAR* LinkOriginal,
107                                                    CONST TCHAR* LinkCopy);
108 EXTERN int              TclWinSymLinkDelete(CONST TCHAR* LinkOriginal, 
109                                             int linkOnly);
110 #if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC)
111 EXTERN void             TclWinFreeAllocCache(void);
112 EXTERN void             TclFreeAllocCache(void *);
113 EXTERN Tcl_Mutex        *TclpNewAllocMutex(void);
114 EXTERN void             *TclpGetAllocCache(void);
115 EXTERN void             TclpSetAllocCache(void *);
116 #endif /* TCL_THREADS */
117
118 /* Needed by tclWinFile.c and tclWinFCmd.c */
119 #ifndef FILE_ATTRIBUTE_REPARSE_POINT
120 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
121 #endif
122
123 #include "tclIntPlatDecls.h"
124
125 # undef TCL_STORAGE_CLASS
126 # define TCL_STORAGE_CLASS DLLIMPORT
127
128 #endif  /* _TCLWININT */