1/*
2 * tclPlatDecls.h --
3 *
4 *	Declarations of platform specific Tcl APIs.
5 *
6 * Copyright (c) 1998-1999 by Scriptics Corporation.
7 * All rights reserved.
8 *
9 * RCS: @(#) $Id: tclPlatDecls.h,v 1.18.2.5 2004/06/10 17:17:45 andreas_kupries Exp $
10 */
11
12#ifndef _TCLPLATDECLS
13#define _TCLPLATDECLS
14
15/*
16 *  Pull in the typedef of TCHAR for windows.
17 */
18#if defined(__CYGWIN__)
19    typedef char TCHAR;
20#elif defined(__WIN32__) && !defined(_TCHAR_DEFINED)
21#   include <tchar.h>
22#   ifndef _TCHAR_DEFINED
23	/* Borland seems to forget to set this. */
24        typedef _TCHAR TCHAR;
25#	define _TCHAR_DEFINED
26#   endif
27#   if defined(_MSC_VER) && defined(__STDC__)
28	/* MSVC++ misses this. */
29	typedef _TCHAR TCHAR;
30#   endif
31#endif
32
33/* !BEGIN!: Do not edit below this line. */
34
35/*
36 * Exported function declarations:
37 */
38
39#ifdef __WIN32__
40/* 0 */
41EXTERN TCHAR *		Tcl_WinUtfToTChar _ANSI_ARGS_((CONST char * str,
42				int len, Tcl_DString * dsPtr));
43/* 1 */
44EXTERN char *		Tcl_WinTCharToUtf _ANSI_ARGS_((CONST TCHAR * str,
45				int len, Tcl_DString * dsPtr));
46#endif /* __WIN32__ */
47#ifdef MAC_TCL
48/* 0 */
49EXTERN void		Tcl_MacSetEventProc _ANSI_ARGS_((
50				Tcl_MacConvertEventPtr procPtr));
51/* 1 */
52EXTERN char *		Tcl_MacConvertTextResource _ANSI_ARGS_((
53				Handle resource));
54/* 2 */
55EXTERN int		Tcl_MacEvalResource _ANSI_ARGS_((Tcl_Interp * interp,
56				CONST char * resourceName,
57				int resourceNumber, CONST char * fileName));
58/* 3 */
59EXTERN Handle		Tcl_MacFindResource _ANSI_ARGS_((Tcl_Interp * interp,
60				long resourceType, CONST char * resourceName,
61				int resourceNumber, CONST char * resFileRef,
62				int * releaseIt));
63/* 4 */
64EXTERN int		Tcl_GetOSTypeFromObj _ANSI_ARGS_((
65				Tcl_Interp * interp, Tcl_Obj * objPtr,
66				OSType * osTypePtr));
67/* 5 */
68EXTERN void		Tcl_SetOSTypeObj _ANSI_ARGS_((Tcl_Obj * objPtr,
69				OSType osType));
70/* 6 */
71EXTERN Tcl_Obj *	Tcl_NewOSTypeObj _ANSI_ARGS_((OSType osType));
72/* 7 */
73EXTERN int		strncasecmp _ANSI_ARGS_((CONST char * s1,
74				CONST char * s2, size_t n));
75/* 8 */
76EXTERN int		strcasecmp _ANSI_ARGS_((CONST char * s1,
77				CONST char * s2));
78#endif /* MAC_TCL */
79#ifdef MAC_OSX_TCL
80/* 0 */
81EXTERN int		Tcl_MacOSXOpenBundleResources _ANSI_ARGS_((
82				Tcl_Interp * interp, CONST char * bundleName,
83				int hasResourceFile, int maxPathLen,
84				char * libraryPath));
85/* 1 */
86EXTERN int		Tcl_MacOSXOpenVersionedBundleResources _ANSI_ARGS_((
87				Tcl_Interp * interp, CONST char * bundleName,
88				CONST char * bundleVersion,
89				int hasResourceFile, int maxPathLen,
90				char * libraryPath));
91#endif /* MAC_OSX_TCL */
92
93typedef struct TclPlatStubs {
94    int magic;
95    struct TclPlatStubHooks *hooks;
96
97#ifdef __WIN32__
98    TCHAR * (*tcl_WinUtfToTChar) _ANSI_ARGS_((CONST char * str, int len, Tcl_DString * dsPtr)); /* 0 */
99    char * (*tcl_WinTCharToUtf) _ANSI_ARGS_((CONST TCHAR * str, int len, Tcl_DString * dsPtr)); /* 1 */
100#endif /* __WIN32__ */
101#ifdef MAC_TCL
102    void (*tcl_MacSetEventProc) _ANSI_ARGS_((Tcl_MacConvertEventPtr procPtr)); /* 0 */
103    char * (*tcl_MacConvertTextResource) _ANSI_ARGS_((Handle resource)); /* 1 */
104    int (*tcl_MacEvalResource) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * resourceName, int resourceNumber, CONST char * fileName)); /* 2 */
105    Handle (*tcl_MacFindResource) _ANSI_ARGS_((Tcl_Interp * interp, long resourceType, CONST char * resourceName, int resourceNumber, CONST char * resFileRef, int * releaseIt)); /* 3 */
106    int (*tcl_GetOSTypeFromObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, OSType * osTypePtr)); /* 4 */
107    void (*tcl_SetOSTypeObj) _ANSI_ARGS_((Tcl_Obj * objPtr, OSType osType)); /* 5 */
108    Tcl_Obj * (*tcl_NewOSTypeObj) _ANSI_ARGS_((OSType osType)); /* 6 */
109    int (*strncasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2, size_t n)); /* 7 */
110    int (*strcasecmp) _ANSI_ARGS_((CONST char * s1, CONST char * s2)); /* 8 */
111#endif /* MAC_TCL */
112#ifdef MAC_OSX_TCL
113    int (*tcl_MacOSXOpenBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 0 */
114    int (*tcl_MacOSXOpenVersionedBundleResources) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * bundleName, CONST char * bundleVersion, int hasResourceFile, int maxPathLen, char * libraryPath)); /* 1 */
115#endif /* MAC_OSX_TCL */
116} TclPlatStubs;
117
118#ifdef __cplusplus
119extern "C" {
120#endif
121extern TclPlatStubs *tclPlatStubsPtr;
122#ifdef __cplusplus
123}
124#endif
125
126#if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
127
128/*
129 * Inline function declarations:
130 */
131
132#ifdef __WIN32__
133#ifndef Tcl_WinUtfToTChar
134#define Tcl_WinUtfToTChar \
135	(tclPlatStubsPtr->tcl_WinUtfToTChar) /* 0 */
136#endif
137#ifndef Tcl_WinTCharToUtf
138#define Tcl_WinTCharToUtf \
139	(tclPlatStubsPtr->tcl_WinTCharToUtf) /* 1 */
140#endif
141#endif /* __WIN32__ */
142#ifdef MAC_TCL
143#ifndef Tcl_MacSetEventProc
144#define Tcl_MacSetEventProc \
145	(tclPlatStubsPtr->tcl_MacSetEventProc) /* 0 */
146#endif
147#ifndef Tcl_MacConvertTextResource
148#define Tcl_MacConvertTextResource \
149	(tclPlatStubsPtr->tcl_MacConvertTextResource) /* 1 */
150#endif
151#ifndef Tcl_MacEvalResource
152#define Tcl_MacEvalResource \
153	(tclPlatStubsPtr->tcl_MacEvalResource) /* 2 */
154#endif
155#ifndef Tcl_MacFindResource
156#define Tcl_MacFindResource \
157	(tclPlatStubsPtr->tcl_MacFindResource) /* 3 */
158#endif
159#ifndef Tcl_GetOSTypeFromObj
160#define Tcl_GetOSTypeFromObj \
161	(tclPlatStubsPtr->tcl_GetOSTypeFromObj) /* 4 */
162#endif
163#ifndef Tcl_SetOSTypeObj
164#define Tcl_SetOSTypeObj \
165	(tclPlatStubsPtr->tcl_SetOSTypeObj) /* 5 */
166#endif
167#ifndef Tcl_NewOSTypeObj
168#define Tcl_NewOSTypeObj \
169	(tclPlatStubsPtr->tcl_NewOSTypeObj) /* 6 */
170#endif
171#ifndef strncasecmp
172#define strncasecmp \
173	(tclPlatStubsPtr->strncasecmp) /* 7 */
174#endif
175#ifndef strcasecmp
176#define strcasecmp \
177	(tclPlatStubsPtr->strcasecmp) /* 8 */
178#endif
179#endif /* MAC_TCL */
180#ifdef MAC_OSX_TCL
181#ifndef Tcl_MacOSXOpenBundleResources
182#define Tcl_MacOSXOpenBundleResources \
183	(tclPlatStubsPtr->tcl_MacOSXOpenBundleResources) /* 0 */
184#endif
185#ifndef Tcl_MacOSXOpenVersionedBundleResources
186#define Tcl_MacOSXOpenVersionedBundleResources \
187	(tclPlatStubsPtr->tcl_MacOSXOpenVersionedBundleResources) /* 1 */
188#endif
189#endif /* MAC_OSX_TCL */
190
191#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */
192
193/* !END!: Do not edit above this line. */
194
195#endif /* _TCLPLATDECLS */
196
197
198