commit ab964ad7c64d0ff355b061ec045a27126b34aa29
parent ef789d4161b6f2b6c28c28c71268a591e9ec6d42
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Sat, 12 Apr 2014 11:51:28 -0300
new macro LUA_MAXUNSIGNED + support for 'short' integers (for tests only)
Diffstat:
M | luaconf.h | | | 48 | ++++++++++++++++++++++++++++++++++++------------ |
1 file changed, 36 insertions(+), 12 deletions(-)
diff --git a/luaconf.h b/luaconf.h
@@ -1,5 +1,5 @@
/*
-** $Id: luaconf.h,v 1.195 2014/04/09 17:05:11 roberto Exp roberto $
+** $Id: luaconf.h,v 1.196 2014/04/11 19:53:45 roberto Exp roberto $
** Configuration file for Lua
** See Copyright Notice in lua.h
*/
@@ -536,9 +536,32 @@
@@ LUA_INTEGER_FMT is the format for writing integers.
@@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER.
@@ LUA_MININTEGER is the minimum value for a LUA_INTEGER.
+@@ LUA_MAXUNSIGNED is the maximum value for a LUA_UNSIGNED.
@@ lua_integer2str converts an integer to a string.
*/
+
+/* The following definitions are good for most cases here */
+
+#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))
+
+#define LUA_MAXUNSIGNED (~(LUA_UNSIGNED)0)
+#define LUA_MAXINTEGER ((LUA_INTEGER)(LUA_MAXUNSIGNED >> 1))
+#define LUA_MININTEGER ((LUA_INTEGER)~(LUA_MAXUNSIGNED >> 1))
+
+#define LUAI_UACINT LUA_INTEGER
+
+/*
+** use LUAI_UACINT here to avoid problems with promotions (which can change
+** an unsigned back to a signed type)
+*/
+#define LUA_UNSIGNED unsigned LUAI_UACINT
+
+
+/* now the variable definitions */
+
#if defined(LUA_INT_INT) /* { int */
#define LUA_INTEGER int
@@ -559,23 +582,24 @@
#define LUA_INTEGER_FRMLEN "ll"
#endif
-#else /* }{ */
+#elif defined(LUA_INT_SHORT) /* }{ short int; for tests */
-#error "numeric integer type not defined"
+#define LUA_INTEGER short int
+#define LUA_INTEGER_FRMLEN ""
-#endif /* } */
+#undef LUA_MAXUNSIGNED
+#undef LUAI_UACINT
+#undef LUA_INTEGER_SCAN
+#define LUA_MAXUNSIGNED 0xffffu
+#define LUAI_UACINT int
+#define LUA_INTEGER_SCAN "%hd"
-#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))
-
-#define LUA_UNSIGNED unsigned LUA_INTEGER
+#else /* }{ */
-#define LUA_MAXINTEGER ((LUA_INTEGER)(~(LUA_UNSIGNED)0 >> 1))
-#define LUA_MININTEGER ((LUA_INTEGER)~(~(LUA_UNSIGNED)0 >> 1))
+#error "numeric integer type not defined"
-#define LUAI_UACINT LUA_INTEGER
+#endif /* } */
/* }================================================================== */