From 2b4975dca710510a7b94f1f9bef97814d1349f95 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Tue, 25 Jun 2013 16:04:40 -0300 Subject: LUA_SMALL_* changed to LUA_*SIZE + added support for long double + better support for ANSI systems --- luaconf.h | 64 +++++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/luaconf.h b/luaconf.h index fe9fcd25..4ed6280a 100644 --- a/luaconf.h +++ b/luaconf.h @@ -1,5 +1,5 @@ /* -** $Id: luaconf.h,v 1.183 2013/06/20 15:02:49 roberto Exp roberto $ +** $Id: luaconf.h,v 1.184 2013/06/21 17:42:28 roberto Exp roberto $ ** Configuration file for Lua ** See Copyright Notice in lua.h */ @@ -384,11 +384,12 @@ */ /* -@@ LUA_SMALL_INT true makes Lua use a 32-bit integer type -@@ LUA_SMALL_FLOAT true makes Lua use a 32-bit float type +@@ LUA_INTSIZE defines size for Lua integer: 1=int, 2=long, 3=long long +@@ LUA_FLOATSIZE defines size for Lua float: 1=float, 2=double, 3=long double +** Default is long long + double */ -#define LUA_SMALL_FLOAT 0 -#define LUA_SMALL_INT 0 +#define LUA_INTSIZE 3 +#define LUA_FLOATSIZE 2 /* @@ -405,14 +406,9 @@ @@ l_mathop allows the addition of an 'l' or 'f' to all math operations ** @@ lua_str2number converts a decimal 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 -** to convert floating hexadecimal strings to numbers. For these -** systems, you can leave 'lua_strx2number' undefined and Lua will -** provide its own implementation. */ -#if LUA_SMALL_FLOAT /* { */ +#if LUA_FLOATSIZE == 1 /* { single float */ #define LUA_NUMBER float @@ -423,13 +419,26 @@ #define LUA_NUMBER_FMT "%.7g" #define l_mathop(op) op##f -#define l_floor(x) (floorf(x)) #define lua_str2number(s,p) strtof((s), (p)) -#else /* }{ */ -#define LUA_NUMBER_DOUBLE +#elif LUA_FLOATSIZE == 3 /* }{ long double */ + +#define LUA_NUMBER long double + +#define LUAI_UACNUMBER long double + +#define LUA_NUMBER_FRMLEN "L" +#define LUA_NUMBER_SCAN "%Lf" +#define LUA_NUMBER_FMT "%.19Lg" + +#define l_mathop(op) op##l + +#define lua_str2number(s,p) strtold((s), (p)) + +#else /* }{ default: double */ + #define LUA_NUMBER double #define LUAI_UACNUMBER double @@ -439,18 +448,28 @@ #define LUA_NUMBER_FMT "%.14g" #define l_mathop(op) op -#define l_floor(x) (floor(x)) #define lua_str2number(s,p) strtod((s), (p)) #endif /* } */ -#if defined(LUA_USE_STRTODHEX) -#define lua_strx2number(s,p) lua_str2number(s,p) +#if defined(LUA_ANSI) +/* C89 does not support 'opf' variants for math functions */ +#undef l_mathop +#define l_mathop(op) (lua_Number)op #endif +#if defined(LUA_ANSI) || defined(_WIN32) +/* C89 and Windows do not support 'strtof'... */ +#undef lua_str2number +#define lua_str2number(s,p) ((lua_Number)strtod((s), (p))) +#endif + + +#define l_floor(x) (l_mathop(floor)(x)) + #define lua_number2str(s,n) sprintf((s), LUA_NUMBER_FMT, (n)) @@ -492,27 +511,24 @@ @@ lua_integer2str converts an integer to a string. */ -#if LUA_SMALL_INT /* { */ - -#if LUAI_BITSINT >= 32 +#if LUA_INTSIZE == 1 /* { int */ #define LUA_INTEGER int #define LUA_INTEGER_FRMLEN "" -#else +#elif LUA_INTSIZE == 2 /* }{ long */ #define LUA_INTEGER long #define LUA_INTEGER_FRMLEN "l" -#endif - -#else /* }{ */ +#else /* }{ default: long long */ #define LUA_INTEGER long long #define LUA_INTEGER_FRMLEN "ll" #endif /* } */ + #define LUA_INTEGER_SCAN "%" LUA_INTEGER_FRMLEN "d" #define LUA_INTEGER_FMT "%" LUA_INTEGER_FRMLEN "d" #define lua_integer2str(s,n) sprintf((s), LUA_INTEGER_FMT, (n)) -- cgit v1.2.3-55-g6feb