commit 1088cde03c5551bab90e211e979b11278d666cd5
parent 6759f3ec5e845db6d2637f401d82d707411e41ed
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Tue, 3 Oct 2000 11:02:59 -0300
easier way to change type Number
Diffstat:
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/llimits.h b/llimits.h
@@ -1,5 +1,5 @@
/*
-** $Id: llimits.h,v 1.14 2000/08/29 14:48:16 roberto Exp roberto $
+** $Id: llimits.h,v 1.15 2000/09/29 12:42:13 roberto Exp roberto $
** Limits, basic types, and some other "installation-dependent" definitions
** See Copyright Notice in lua.h
*/
@@ -41,6 +41,13 @@
typedef LUA_NUM_TYPE Number;
+/* function to convert a Number to a string */
+#define lua_number2str(s,n) sprintf((s), "%.16g", (n))
+
+/* function to convert a string to a Number */
+#define lua_str2number(s,p) strtod((s), (p))
+
+
typedef unsigned long lint32; /* unsigned int with at least 32 bits */
diff --git a/lvm.c b/lvm.c
@@ -1,5 +1,5 @@
/*
-** $Id: lvm.c,v 1.138 2000/10/02 14:47:43 roberto Exp roberto $
+** $Id: lvm.c,v 1.139 2000/10/02 20:10:55 roberto Exp roberto $
** Lua virtual machine
** See Copyright Notice in lua.h
*/
@@ -39,7 +39,7 @@
-int luaV_tonumber (TObject *obj) { /* LUA_NUMBER */
+int luaV_tonumber (TObject *obj) {
if (ttype(obj) != TAG_STRING)
return 1;
else {
@@ -56,7 +56,7 @@ int luaV_tostring (lua_State *L, TObject *obj) { /* LUA_NUMBER */
return 1;
else {
char s[32]; /* 16 digits, sign, point and \0 (+ some extra...) */
- sprintf(s, "%.16g", (double)nvalue(obj));
+ lua_number2str(s, nvalue(obj)); /* convert `s' to number */
tsvalue(obj) = luaS_new(L, s);
ttype(obj) = TAG_STRING;
return 0;