home *** CD-ROM | disk | FTP | other *** search
/ Netrunner 2004 October / NETRUNNER0410.ISO / regular / ActivePerl-5.8.4.810-MSWin32-x86.msi / _6feee1df9b7c9ba4884d20eee41c08e5 < prev    next >
Text File  |  2004-06-01  |  5KB  |  146 lines

  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: tclWinInt.h,v 1.20.2.1 2003/04/14 15:46:01 vincentdarley Exp $
  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.     /*
  93.      * These two function pointers will only be set when
  94.      * Tcl_FindExecutable is called.  If you don't ever call that
  95.      * function, the application will crash whenever WinTcl tries to call
  96.      * functions through these null pointers.  That is not a bug in Tcl
  97.      * -- Tcl_FindExecutable is obligatory in recent Tcl releases.
  98.      */
  99.     BOOL (WINAPI *getFileAttributesExProc)(CONST TCHAR *,
  100.         GET_FILEEX_INFO_LEVELS, LPVOID);
  101.     BOOL (WINAPI *createHardLinkProc)(CONST TCHAR*, CONST TCHAR*,
  102.                       LPSECURITY_ATTRIBUTES);
  103.  
  104.     INT (__cdecl *utimeProc)(CONST TCHAR*, struct _utimbuf *);
  105.     /* These two are also NULL at start; see comment above */
  106.     HANDLE (WINAPI *findFirstFileExProc)(CONST TCHAR*, UINT,
  107.                      LPVOID, UINT,
  108.                      LPVOID, DWORD);
  109.     BOOL (WINAPI *getVolumeNameForVMPProc)(CONST TCHAR*, TCHAR*, DWORD);
  110. } TclWinProcs;
  111.  
  112. EXTERN TclWinProcs *tclWinProcs;
  113.  
  114. /*
  115.  * Declarations of functions that are not accessible by way of the
  116.  * stubs table.
  117.  */
  118.  
  119. EXTERN void        TclWinEncodingsCleanup();
  120. EXTERN void        TclWinResetInterfaceEncodings();
  121. EXTERN void        TclWinInit(HINSTANCE hInst);
  122. EXTERN int              TclWinSymLinkCopyDirectory(CONST TCHAR* LinkOriginal,
  123.                            CONST TCHAR* LinkCopy);
  124. EXTERN int              TclWinSymLinkDelete(CONST TCHAR* LinkOriginal,
  125.                         int linkOnly);
  126. EXTERN char TclWinDriveLetterForVolMountPoint(CONST WCHAR *mountPoint);
  127. #if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC)
  128. EXTERN void        TclWinFreeAllocCache(void);
  129. EXTERN void        TclFreeAllocCache(void *);
  130. EXTERN Tcl_Mutex    *TclpNewAllocMutex(void);
  131. EXTERN void        *TclpGetAllocCache(void);
  132. EXTERN void        TclpSetAllocCache(void *);
  133. #endif /* TCL_THREADS */
  134.  
  135. /* Needed by tclWinFile.c and tclWinFCmd.c */
  136. #ifndef FILE_ATTRIBUTE_REPARSE_POINT
  137. #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
  138. #endif
  139.  
  140. #include "tclIntPlatDecls.h"
  141.  
  142. # undef TCL_STORAGE_CLASS
  143. # define TCL_STORAGE_CLASS DLLIMPORT
  144.  
  145. #endif    /* _TCLWININT */
  146.