configuration of number sizes goes "mainstream"
This commit is contained in:
140
luaconf.h
140
luaconf.h
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** $Id: luaconf.h,v 1.179 2013/04/29 17:12:12 roberto Exp roberto $
|
** $Id: luaconf.h,v 1.181 2013/05/26 13:35:52 roberto Exp roberto $
|
||||||
** Configuration file for Lua
|
** Configuration file for Lua
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
@@ -376,44 +376,34 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
** {==================================================================
|
** {==================================================================
|
||||||
@@ LUA_NUMBER is the type of numbers in Lua.
|
** The following definitions set the numeric types for Lua.
|
||||||
** CHANGE the following definitions only if you want to build Lua
|
** Lua should work fine with 32-bit or 64-bit integers mixed with
|
||||||
** with a number type different from double. You may also need to
|
** 32-bit or 64-bit floats. The usual configurations are 64-bit
|
||||||
** change lua_number2int & lua_number2integer.
|
** integers and floats (the default) and 32-bit integers and floats.
|
||||||
** ===================================================================
|
** ===================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define LUA_NUMBER_DOUBLE
|
|
||||||
#define LUA_NUMBER double
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ LUAI_UACNUMBER is the result of an 'usual argument conversion'
|
@@ LUA_SMALL_INT true makes Lua use a 32-bit integer type
|
||||||
@* over a number.
|
@@ LUA_SMALL_FLOAT true makes Lua use a 32-bit float type
|
||||||
*/
|
*/
|
||||||
#define LUAI_UACNUMBER double
|
#define LUA_SMALL_FLOAT 0
|
||||||
|
#define LUA_SMALL_INT 0
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ LUA_NUMBER is the floating-point type used by Lua.
|
||||||
|
**
|
||||||
|
@@ LUAI_UACNUMBER is the result of an 'usual argument conversion'
|
||||||
|
@* over a floating number.
|
||||||
|
**
|
||||||
@@ LUA_NUMBER_FRMLEN is the length modifier for writing floats.
|
@@ LUA_NUMBER_FRMLEN is the length modifier for writing floats.
|
||||||
@@ LUA_NUMBER_SCAN is the format for reading floats.
|
@@ LUA_NUMBER_SCAN is the format for reading floats.
|
||||||
@@ LUA_NUMBER_FMT is the format for writing floats.
|
@@ LUA_NUMBER_FMT is the format for writing floats.
|
||||||
@@ lua_number2str converts a floats to a string.
|
@@ lua_number2str converts a floats to a string.
|
||||||
@@ LUAI_MAXNUMBER2STR is maximum size of previous conversion.
|
**
|
||||||
*/
|
|
||||||
#define LUA_NUMBER_FRMLEN ""
|
|
||||||
#define LUA_NUMBER_SCAN "%lf"
|
|
||||||
#define LUA_NUMBER_FMT "%.14" LUA_NUMBER_FRMLEN "g"
|
|
||||||
#define lua_number2str(s,n) sprintf((s), LUA_NUMBER_FMT, (n))
|
|
||||||
#define LUAI_MAXNUMBER2STR 32 /* 16 digits, sign, point, and \0 */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ l_mathop allows the addition of an 'l' or 'f' to all math operations
|
@@ l_mathop allows the addition of an 'l' or 'f' to all math operations
|
||||||
*/
|
**
|
||||||
#define l_mathop(x) x
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ lua_str2number converts a decimal numeric string to a number.
|
@@ lua_str2number converts a decimal numeric string to a number.
|
||||||
@@ lua_strx2number converts an hexadecimal numeric string to a number.
|
@@ lua_strx2number converts an hexadecimal numeric string to a number.
|
||||||
** In C99, 'strtod' does both conversions. C89, however, has no function
|
** In C99, 'strtod' does both conversions. C89, however, has no function
|
||||||
@@ -421,15 +411,51 @@
|
|||||||
** systems, you can leave 'lua_strx2number' undefined and Lua will
|
** systems, you can leave 'lua_strx2number' undefined and Lua will
|
||||||
** provide its own implementation.
|
** provide its own implementation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if LUA_SMALL_FLOAT /* { */
|
||||||
|
|
||||||
|
#define LUA_NUMBER float
|
||||||
|
|
||||||
|
#define LUAI_UACNUMBER double
|
||||||
|
|
||||||
|
#define LUA_NUMBER_FRMLEN ""
|
||||||
|
#define LUA_NUMBER_SCAN "%f"
|
||||||
|
#define LUA_NUMBER_FMT "%.7g"
|
||||||
|
|
||||||
|
#define l_mathop(op) op##f
|
||||||
|
|
||||||
|
#define lua_str2number(s,p) strtof((s), (p))
|
||||||
|
|
||||||
|
#else /* }{ */
|
||||||
|
|
||||||
|
#define LUA_NUMBER_DOUBLE
|
||||||
|
#define LUA_NUMBER double
|
||||||
|
|
||||||
|
#define LUAI_UACNUMBER double
|
||||||
|
|
||||||
|
#define LUA_NUMBER_FRMLEN ""
|
||||||
|
#define LUA_NUMBER_SCAN "%lf"
|
||||||
|
#define LUA_NUMBER_FMT "%.14g"
|
||||||
|
|
||||||
|
#define l_mathop(op) op
|
||||||
|
|
||||||
#define lua_str2number(s,p) strtod((s), (p))
|
#define lua_str2number(s,p) strtod((s), (p))
|
||||||
|
|
||||||
|
#endif /* } */
|
||||||
|
|
||||||
|
|
||||||
#if defined(LUA_USE_STRTODHEX)
|
#if defined(LUA_USE_STRTODHEX)
|
||||||
#define lua_strx2number(s,p) strtod((s), (p))
|
#define lua_strx2number(s,p) lua_str2number(s,p)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define lua_number2str(s,n) sprintf((s), LUA_NUMBER_FMT, (n))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ The luai_num* macros define the primitive operations over numbers.
|
@@ The luai_num* macros define the primitive operations over numbers.
|
||||||
|
@* They should work for any size of floating numbers.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* the following operations need the math library */
|
/* the following operations need the math library */
|
||||||
@@ -455,30 +481,35 @@
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ LUA_INTEGER is the integral type used by lua_pushinteger/lua_tointeger.
|
@@ LUA_INTEGER is the integer type used by Lua.
|
||||||
** CHANGE that if ptrdiff_t is not adequate on your machine. (On most
|
**
|
||||||
** machines, ptrdiff_t gives a good choice between int or long.)
|
|
||||||
*/
|
|
||||||
#define LUA_INTEGER long long
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER.
|
@@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER.
|
||||||
*/
|
**
|
||||||
#define LUA_UNSIGNED unsigned LUA_INTEGER
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers.
|
@@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers.
|
||||||
@@ LUA_INTEGER_SCAN is the format for reading integers.
|
@@ LUA_INTEGER_SCAN is the format for reading integers.
|
||||||
@@ LUA_INTEGER_FMT is the format for writing integers.
|
@@ LUA_INTEGER_FMT is the format for writing integers.
|
||||||
@@ lua_integer2str converts an integer to a string.
|
@@ lua_integer2str converts an integer to a string.
|
||||||
@@ LUAI_MAXINTEGER2STR is maximum size of previous conversion.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if LUA_SMALL_INT /* { */
|
||||||
|
|
||||||
|
#define LUA_INTEGER long
|
||||||
|
|
||||||
|
#define LUA_INTEGER_FRMLEN "l"
|
||||||
|
|
||||||
|
#else /* }{ */
|
||||||
|
|
||||||
|
#define LUA_INTEGER long long
|
||||||
|
|
||||||
#define LUA_INTEGER_FRMLEN "ll"
|
#define LUA_INTEGER_FRMLEN "ll"
|
||||||
|
|
||||||
|
#endif /* } */
|
||||||
|
|
||||||
#define LUA_INTEGER_SCAN "%" LUA_INTEGER_FRMLEN "d"
|
#define LUA_INTEGER_SCAN "%" LUA_INTEGER_FRMLEN "d"
|
||||||
#define LUA_INTEGER_FMT "%" LUA_INTEGER_FRMLEN "d"
|
#define LUA_INTEGER_FMT "%" LUA_INTEGER_FRMLEN "d"
|
||||||
#define lua_integer2str(s,n) sprintf((s), LUA_INTEGER_FMT, (n))
|
#define lua_integer2str(s,n) sprintf((s), LUA_INTEGER_FMT, (n))
|
||||||
#define LUA_MAXINTEGER2STR 32
|
|
||||||
|
|
||||||
|
#define LUA_UNSIGNED unsigned LUA_INTEGER
|
||||||
|
|
||||||
/* }================================================================== */
|
/* }================================================================== */
|
||||||
|
|
||||||
@@ -492,38 +523,9 @@
|
|||||||
** without modifying the main part of the file.
|
** without modifying the main part of the file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define LUA_SMALL_INT
|
|
||||||
#define LUA_SMALL_FLOAT
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(LUA_SMALL_FLOAT) /* { */
|
|
||||||
|
|
||||||
#undef LUA_NUMBER_DOUBLE
|
|
||||||
|
|
||||||
#undef LUA_NUMBER
|
|
||||||
#define LUA_NUMBER float
|
|
||||||
|
|
||||||
#undef LUA_NUMBER_SCAN
|
|
||||||
#define LUA_NUMBER_SCAN "%f"
|
|
||||||
|
|
||||||
#undef LUA_NUMBER_FMT
|
|
||||||
#define LUA_NUMBER_FMT "%.7g"
|
|
||||||
|
|
||||||
#undef l_mathop
|
|
||||||
#define l_mathop(x) x##f
|
|
||||||
|
|
||||||
#endif /* } */
|
|
||||||
|
|
||||||
|
|
||||||
#if defined (LUA_SMALL_INT) /* { */
|
|
||||||
|
|
||||||
#undef LUA_INTEGER
|
|
||||||
#define LUA_INTEGER long
|
|
||||||
|
|
||||||
#undef LUA_INTEGER_FRMLEN
|
|
||||||
#define LUA_INTEGER_FRMLEN "l"
|
|
||||||
|
|
||||||
#endif /* } */
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user