|
@@ -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))
|