/* *---------------------------------------------------------------------- * * tclDToA.c -- * File defining external procedures 'Tcl_DToA', 'Tcl_StrToD', * and 'Tcl_FreeDToA' for conversion between floating point and * decimal. * * Copyright (c) 2003 by Kevin B. Kenny. All rights reserved. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * RCS: @(#) $Id: tclListObj.c,v 1.13 2002/01/07 23:09:13 dgp Exp $ * *---------------------------------------------------------------------- * */ #include #include #include /* *---------------------------------------------------------------------- * * localMalloc -- * * Alias function for Tcl_Alloc with the type signature of * 'malloc', used as a macro substituent for MALLOC in Gay's * 'dtoa.c'. * * Results: * Returns a pointer to a newly allocated block of memory. * * Side effects: * Manipulates the heap to allocate memory. * *---------------------------------------------------------------------- */ static void* localMalloc (size_t n) /* n - size of block to allocate */ { return (void*) Tcl_Alloc( n ); } /* * Define endian-ness of the target machine for dtoa.c */ #ifdef WORDS_BIGENDIAN #define IEEE_MC68k 1 #else #define IEEE_8087 1 #endif /* * Define 32-bit integer types for dtoa.c */ #ifdef TCL_WIDE_INT_IS_LONG #define Long int #define ULong unsigned int #endif /* * Define 64-bit integer types for dtoa.c */ #define Llong Tcl_WideInt #define ULLong Tcl_WideUInt /* * Define memory allocator for dtoa.c */ #define MALLOC localMalloc /* * dtoa.c should check for Infinity and Nan on output. */ #define INFNAN_CHECK 1 /* * Define synchronization primitives for dtoa.c */ #define MULTIPLE_THREADS TCL_THREADED #ifdef TCL_THREADED TCL_DECLARE_MUTEX(dtoaMutex0) TCL_DECLARE_MUTEX(dtoaMutex1) #define ACQUIRE_DTOA_LOCK(n) Tcl_MutexLock( JOIN(dtoaMutex,n) ) #define FREE_DTOA_LOCK(n) Tcl_MutexUnlock( JOIN(dtoaMutex,n) ) #else #define ACQUIRE_DTOA_LOCK(n) /* empty */ #define FREE_DTOA_LOCK(n) /* empty */ #endif /* * Rename the supplied functions dtoa, strtod, and freedtoa to * appropriate names in the Tcl internal Stubs table. */ #define dtoa TclDToA #define strtod TclStrToD #define freedtoa TclFreeDToA /* * Bring in Gay's double-to-ASCII code. */ #include "dtoa.c"