|
@@ -1,5 +1,5 @@
|
|
|
/*
|
|
|
-** $Id: lapi.c,v 2.183 2013/06/20 15:02:49 roberto Exp roberto $
|
|
|
+** $Id: lapi.c,v 2.184 2013/06/20 15:12:43 roberto Exp roberto $
|
|
|
** Lua API
|
|
|
** See Copyright Notice in lua.h
|
|
|
*/
|
|
@@ -332,25 +332,18 @@ LUA_API int lua_compare (lua_State *L, int index1, int index2, int op) {
|
|
|
}
|
|
|
|
|
|
|
|
|
-LUA_API int lua_cvtonum (lua_State *L, int idx) {
|
|
|
- TValue *o = index2addr(L, idx);
|
|
|
- if (ttisnumber(o)) return 1; /* already a number? */
|
|
|
- else if (!ttisstring(o)) return 0; /* only strings can be converted */
|
|
|
- else {
|
|
|
- lua_Integer i; lua_Number n;
|
|
|
- const char *s = svalue(o);
|
|
|
- size_t len = tsvalue(o)->len;
|
|
|
- if (luaO_str2int(s, len, &i)) {
|
|
|
- setivalue(o, i);
|
|
|
- return 1;
|
|
|
- }
|
|
|
- else if (luaO_str2d(s, len, &n)) {
|
|
|
- setivalue(o, i);
|
|
|
- setnvalue(o, n);
|
|
|
- return 1;
|
|
|
- }
|
|
|
- else return 0;
|
|
|
+LUA_API int lua_strtonum (lua_State *L, const char *s, size_t len) {
|
|
|
+ lua_Integer i; lua_Number n;
|
|
|
+ if (luaO_str2int(s, len, &i)) { /* try as an integer */
|
|
|
+ setivalue(L->top, i);
|
|
|
+ }
|
|
|
+ else if (luaO_str2d(s, len, &n)) { /* else try as a float */
|
|
|
+ setnvalue(L->top, n);
|
|
|
}
|
|
|
+ else
|
|
|
+ return 0; /* conversion failed */
|
|
|
+ api_incr_top(L);
|
|
|
+ return 1;
|
|
|
}
|
|
|
|
|
|
|