Index: tcl.h
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tcl.h,v
retrieving revision 1.124
diff -c -r1.124 tcl.h
*** tcl.h	24 May 2002 21:19:05 -0000	1.124
--- tcl.h	8 Jun 2002 01:25:18 -0000
***************
*** 79,98 ****
  #   endif
  #endif
  
  #ifdef __WIN32__
  #   ifndef STRICT
  #	define STRICT
  #   endif
- #   ifndef USE_PROTOTYPE
- #	define USE_PROTOTYPE 1
- #   endif
- #   ifndef HAS_STDARG
- #	define HAS_STDARG 1
- #   endif
- #   ifndef USE_PROTOTYPE
- #	define USE_PROTOTYPE 1
- #   endif
- 
  #endif /* __WIN32__ */
  
  /*
--- 79,91 ----
  #   endif
  #endif
  
+ /*
+  * STRICT: See MSDN Article Q83456
+  */
  #ifdef __WIN32__
  #   ifndef STRICT
  #	define STRICT
  #   endif
  #endif /* __WIN32__ */
  
  /*
***************
*** 102,110 ****
  
  #ifdef MAC_TCL
  #include <ConditionalMacros.h>
- #   ifndef HAS_STDARG
- #	define HAS_STDARG 1
- #   endif
  #   ifndef USE_TCLALLOC
  #	define USE_TCLALLOC 1
  #   endif
--- 95,100 ----
***************
*** 114,145 ****
  #   define INLINE 
  #endif
  
  /*
   * Utility macros: STRINGIFY takes an argument and wraps it in "" (double
   * quotation marks), JOIN joins two arguments.
   */
! 
! #define VERBATIM(x) x
! #ifdef _MSC_VER
! # define STRINGIFY(x) STRINGIFY1(x)
! # define STRINGIFY1(x) #x
! # define JOIN(a,b) JOIN1(a,b)
! # define JOIN1(a,b) a##b
! #else
! # ifdef RESOURCE_INCLUDED
  #  define STRINGIFY(x) STRINGIFY1(x)
  #  define STRINGIFY1(x) #x
  #  define JOIN(a,b) JOIN1(a,b)
  #  define JOIN1(a,b) a##b
- # else
- #  ifdef __STDC__
- #   define STRINGIFY(x) #x
- #   define JOIN(a,b) a##b
- #  else
- #   define STRINGIFY(x) "x"
- #   define JOIN(a,b) VERBATIM(a)VERBATIM(b)
- #  endif
- # endif
  #endif
  
  /*
--- 104,121 ----
  #   define INLINE 
  #endif
  
+ 
  /*
   * Utility macros: STRINGIFY takes an argument and wraps it in "" (double
   * quotation marks), JOIN joins two arguments.
   */
! #ifndef STRINGIFY
  #  define STRINGIFY(x) STRINGIFY1(x)
  #  define STRINGIFY1(x) #x
+ #endif
+ #ifndef JOIN
  #  define JOIN(a,b) JOIN1(a,b)
  #  define JOIN1(a,b) a##b
  #endif
  
  /*
***************
*** 190,214 ****
   * string for use in the function definition.  TCL_VARARGS_START
   * initializes the va_list data structure and returns the first argument.
   */
! #if defined(__STDC__) || defined(HAS_STDARG)
  #   include <stdarg.h>
  #   define TCL_VARARGS(type, name) (type name, ...)
  #   define TCL_VARARGS_DEF(type, name) (type name, ...)
  #   define TCL_VARARGS_START(type, name, list) (va_start(list, name), name)
  #else
  #   include <varargs.h>
- #   ifdef __cplusplus
- #      define TCL_VARARGS(type, name) (type name, ...)
- #      define TCL_VARARGS_DEF(type, name) (type va_alist, ...)
- #   else
  #      define TCL_VARARGS(type, name) ()
  #      define TCL_VARARGS_DEF(type, name) (va_alist)
- #   endif
  #   define TCL_VARARGS_START(type, name, list) \
  	(va_start(list), va_arg(list, type))
  #endif
  
- 
  /*
   * Macros used to declare a function to be exported by a DLL.
   * Used by Windows, maps to no-op declarations on non-Windows systems.
--- 166,184 ----
   * string for use in the function definition.  TCL_VARARGS_START
   * initializes the va_list data structure and returns the first argument.
   */
! #if !defined(NO_STDARG)
  #   include <stdarg.h>
  #   define TCL_VARARGS(type, name) (type name, ...)
  #   define TCL_VARARGS_DEF(type, name) (type name, ...)
  #   define TCL_VARARGS_START(type, name, list) (va_start(list, name), name)
  #else
  #   include <varargs.h>
  #      define TCL_VARARGS(type, name) ()
  #      define TCL_VARARGS_DEF(type, name) (va_alist)
  #   define TCL_VARARGS_START(type, name, list) \
  	(va_start(list), va_arg(list, type))
  #endif
  
  /*
   * Macros used to declare a function to be exported by a DLL.
   * Used by Windows, maps to no-op declarations on non-Windows systems.
***************
*** 267,281 ****
  #   define INLINE
  #endif
  
! #if ((defined(__STDC__) || defined(SABER)) && !defined(NO_PROTOTYPE)) || defined(__cplusplus) || defined(USE_PROTOTYPE)
! #   define _USING_PROTOTYPES_ 1
! #   define _ANSI_ARGS_(x)	x
  #   define CONST const
  #else
- #   define _ANSI_ARGS_(x)	()
  #   define CONST
  #endif
  
  #ifdef USE_NON_CONST
  #   define CONST84
  #else
--- 237,254 ----
  #   define INLINE
  #endif
  
! #ifndef NO_CONST
  #   define CONST const
  #else
  #   define CONST
  #endif
  
+ #ifndef NO_PROTOTYPES
+ #   define _ANSI_ARGS_(x)	x
+ #else
+ #   define _ANSI_ARGS_(x)	()
+ #endif
+ 
  #ifdef USE_NON_CONST
  #   define CONST84
  #else
***************
*** 298,327 ****
  
  
  /*
!  * Macro to use instead of "void" for arguments that must have
!  * type "void *" in ANSI C;  maps them to type "char *" in
!  * non-ANSI systems.
!  */
! #ifndef __WIN32__
! #   ifndef VOID
! #      ifdef __STDC__
! #         define VOID void
! #      else
! #         define VOID char
! #      endif
! #   endif
! #else /* __WIN32__ */
! /*
!  * The following code is copied from winnt.h
   */
! #   ifndef VOID
! #      define VOID void
  typedef char CHAR;
  typedef short SHORT;
  typedef long LONG;
! #   endif
  #endif /* __WIN32__ */
  
  
  /*
   * Miscellaneous declarations.
--- 271,300 ----
  
  
  /*
!  * The following code is copied from winnt.h.
!  * If we don't replicate it here, then <windows.h> can't be included 
!  * after tcl.h, since tcl.h also defines VOID.
   */
! #ifdef __WIN32__
! #ifndef VOID
! #define VOID void
  typedef char CHAR;
  typedef short SHORT;
  typedef long LONG;
! #endif
  #endif /* __WIN32__ */
  
+ /*
+  * Macro to use instead of "void" for arguments that must have
+  * type "void *" in ANSI C;  maps them to type "char *" in
+  * non-ANSI systems.
+  */
+ 
+ #ifndef NO_VOID
+ #         define VOID void
+ #else
+ #         define VOID char
+ #endif
  
  /*
   * Miscellaneous declarations.
***************
*** 331,345 ****
  #endif
  
  #ifndef _CLIENTDATA
! #   if defined(__STDC__) || defined(__cplusplus) || defined(__BORLANDC__)
! typedef void *ClientData;
  #   else
! typedef int *ClientData;
! #   endif /* __STDC__ */
  #   define _CLIENTDATA
  #endif
  
- 
  /*
   * Define Tcl_WideInt to be a type that is (at least) 64-bits wide,
   * and define Tcl_WideUInt to be the unsigned variant of that type
--- 304,317 ----
  #endif
  
  #ifndef _CLIENTDATA
! #   ifndef NO_VOID
! 	typedef void *ClientData;
  #   else
! 	typedef int *ClientData;
! #   endif
  #   define _CLIENTDATA
  #endif
  
  /*
   * Define Tcl_WideInt to be a type that is (at least) 64-bits wide,
   * and define Tcl_WideUInt to be the unsigned variant of that type
***************
*** 366,371 ****
--- 338,344 ----
   * backwards) so any changes you make will need to be done
   * cautiously...
   */
+ 
  #if !defined(TCL_WIDE_INT_TYPE)&&!defined(TCL_WIDE_INT_IS_LONG)
  #   ifdef __WIN32__
  #      define TCL_WIDE_INT_TYPE __int64
***************
*** 404,412 ****
  typedef unsigned TCL_WIDE_INT_TYPE	Tcl_WideUInt;
  
  #ifdef TCL_WIDE_INT_IS_LONG
- #   ifndef MAC_TCL
- #   include <sys/types.h>
- #   endif
  typedef struct stat	Tcl_StatBuf;
  #   define Tcl_WideAsLong(val)		((long)(val))
  #   define Tcl_LongAsWide(val)		((long)(val))
--- 377,382 ----
***************
*** 414,422 ****
  #   define Tcl_DoubleAsWide(val)	((long)((double)(val)))
  #else /* TCL_WIDE_INT_IS_LONG */
  #   ifndef __WIN32__
- #      ifndef MAC_TCL
- #      include <sys/types.h>
- #      endif
  #      ifdef HAVE_STRUCT_STAT64
  typedef struct stat64	Tcl_StatBuf;
  #      else
--- 384,389 ----
