diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2009-06-17 14:48:34 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2009-06-17 14:48:34 -0300 |
commit | 6a024df44053c18b9504a004f10e53debae1c270 (patch) | |
tree | 8b147b96905cb277c30876ede9a27d2b3bf5df40 | |
parent | 77fd93188e7ba15f489ca5cf353d270627d93681 (diff) | |
download | lua-6a024df44053c18b9504a004f10e53debae1c270.tar.gz lua-6a024df44053c18b9504a004f10e53debae1c270.tar.bz2 lua-6a024df44053c18b9504a004f10e53debae1c270.zip |
new function 'luaO_arith' to perform basic arithmetic operations
-rw-r--r-- | lobject.c | 16 | ||||
-rw-r--r-- | lobject.h | 3 |
2 files changed, 17 insertions, 2 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lobject.c,v 2.29 2009/02/19 17:18:25 roberto Exp $ | 2 | ** $Id: lobject.c,v 2.30 2009/05/27 17:11:27 roberto Exp roberto $ |
3 | ** Some generic functions over Lua objects | 3 | ** Some generic functions over Lua objects |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -88,6 +88,20 @@ int luaO_rawequalObj (const TValue *t1, const TValue *t2) { | |||
88 | } | 88 | } |
89 | 89 | ||
90 | 90 | ||
91 | lua_Number luaO_arith (int op, lua_Number v1, lua_Number v2) { | ||
92 | switch (op) { | ||
93 | case LUA_OPADD: return luai_numadd(NULL, v1, v2); | ||
94 | case LUA_OPSUB: return luai_numsub(NULL, v1, v2); | ||
95 | case LUA_OPMUL: return luai_nummul(NULL, v1, v2); | ||
96 | case LUA_OPDIV: return luai_numdiv(NULL, v1, v2); | ||
97 | case LUA_OPMOD: return luai_nummod(NULL, v1, v2); | ||
98 | case LUA_OPPOW: return luai_numpow(NULL, v1, v2); | ||
99 | case LUA_OPUNM: return luai_numunm(N, v1); | ||
100 | default: lua_assert(0); return 0; | ||
101 | } | ||
102 | } | ||
103 | |||
104 | |||
91 | int luaO_str2d (const char *s, lua_Number *result) { | 105 | int luaO_str2d (const char *s, lua_Number *result) { |
92 | char *endptr; | 106 | char *endptr; |
93 | *result = lua_str2number(s, &endptr); | 107 | *result = lua_str2number(s, &endptr); |
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lobject.h,v 2.24 2008/08/05 19:26:23 roberto Exp roberto $ | 2 | ** $Id: lobject.h,v 2.25 2009/03/26 12:56:38 roberto Exp roberto $ |
3 | ** Type definitions for Lua objects | 3 | ** Type definitions for Lua objects |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -361,6 +361,7 @@ LUAI_DATA const TValue luaO_nilobject_; | |||
361 | LUAI_FUNC int luaO_int2fb (unsigned int x); | 361 | LUAI_FUNC int luaO_int2fb (unsigned int x); |
362 | LUAI_FUNC int luaO_fb2int (int x); | 362 | LUAI_FUNC int luaO_fb2int (int x); |
363 | LUAI_FUNC int luaO_ceillog2 (lu_int32 x); | 363 | LUAI_FUNC int luaO_ceillog2 (lu_int32 x); |
364 | LUAI_FUNC lua_Number luaO_arith (int op, lua_Number v1, lua_Number v2); | ||
364 | LUAI_FUNC int luaO_rawequalObj (const TValue *t1, const TValue *t2); | 365 | LUAI_FUNC int luaO_rawequalObj (const TValue *t1, const TValue *t2); |
365 | LUAI_FUNC int luaO_str2d (const char *s, lua_Number *result); | 366 | LUAI_FUNC int luaO_str2d (const char *s, lua_Number *result); |
366 | LUAI_FUNC const char *luaO_pushvfstring (lua_State *L, const char *fmt, | 367 | LUAI_FUNC const char *luaO_pushvfstring (lua_State *L, const char *fmt, |