diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-06-12 11:56:22 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-06-12 11:56:22 -0300 |
| commit | eeab473fc8fdce39c3a0a495a6a790d7906c7bdc (patch) | |
| tree | f260370b15d8a196f4168d3e64dafb35c8083282 | |
| parent | 6b8cdc9cdd545508af85d1de2013ea0fc64792b0 (diff) | |
| download | lua-eeab473fc8fdce39c3a0a495a6a790d7906c7bdc.tar.gz lua-eeab473fc8fdce39c3a0a495a6a790d7906c7bdc.tar.bz2 lua-eeab473fc8fdce39c3a0a495a6a790d7906c7bdc.zip | |
new fallback __le (less equal), for partial order
| -rw-r--r-- | lapi.c | 4 | ||||
| -rw-r--r-- | lcode.c | 35 | ||||
| -rw-r--r-- | lobject.h | 10 | ||||
| -rw-r--r-- | lopcodes.c | 12 | ||||
| -rw-r--r-- | lopcodes.h | 7 | ||||
| -rw-r--r-- | ltm.c | 7 | ||||
| -rw-r--r-- | ltm.h | 5 | ||||
| -rw-r--r-- | lvm.c | 62 | ||||
| -rw-r--r-- | lvm.h | 4 |
9 files changed, 77 insertions, 69 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lapi.c,v 1.195 2002/06/03 20:11:07 roberto Exp roberto $ | 2 | ** $Id: lapi.c,v 1.196 2002/06/06 12:40:22 roberto Exp roberto $ |
| 3 | ** Lua API | 3 | ** Lua API |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -226,7 +226,7 @@ LUA_API int lua_lessthan (lua_State *L, int index1, int index2) { | |||
| 226 | o1 = luaA_indexAcceptable(L, index1); | 226 | o1 = luaA_indexAcceptable(L, index1); |
| 227 | o2 = luaA_indexAcceptable(L, index2); | 227 | o2 = luaA_indexAcceptable(L, index2); |
| 228 | i = (o1 == NULL || o2 == NULL) ? 0 /* index out-of-range */ | 228 | i = (o1 == NULL || o2 == NULL) ? 0 /* index out-of-range */ |
| 229 | : luaV_cmp(L, o1, o2, CMP_LT); | 229 | : luaV_lessthan(L, o1, o2); |
| 230 | lua_unlock(L); | 230 | lua_unlock(L); |
| 231 | return i; | 231 | return i; |
| 232 | } | 232 | } |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lcode.c,v 1.105 2002/05/27 20:35:40 roberto Exp roberto $ | 2 | ** $Id: lcode.c,v 1.106 2002/06/03 12:59:26 roberto Exp roberto $ |
| 3 | ** Code generator for Lua | 3 | ** Code generator for Lua |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -460,19 +460,8 @@ void luaK_self (FuncState *fs, expdesc *e, expdesc *key) { | |||
| 460 | 460 | ||
| 461 | static void invertjump (FuncState *fs, expdesc *e) { | 461 | static void invertjump (FuncState *fs, expdesc *e) { |
| 462 | Instruction *pc = getjumpcontrol(fs, e->info); | 462 | Instruction *pc = getjumpcontrol(fs, e->info); |
| 463 | OpCode op = GET_OPCODE(*pc); | 463 | lua_assert(testOpMode(GET_OPCODE(*pc), OpModeT)); |
| 464 | switch (op) { | 464 | SETARG_B(*pc, !(GETARG_B(*pc))); |
| 465 | case OP_EQ: { | ||
| 466 | SETARG_B(*pc, !(GETARG_B(*pc))); | ||
| 467 | return; | ||
| 468 | } | ||
| 469 | case OP_CMP: { | ||
| 470 | SETARG_B(*pc, ~(GETARG_B(*pc))); | ||
| 471 | return; | ||
| 472 | } | ||
| 473 | default: lua_assert(0); /* invalid jump instruction */ | ||
| 474 | } | ||
| 475 | SET_OPCODE(*pc, op); | ||
| 476 | } | 465 | } |
| 477 | 466 | ||
| 478 | 467 | ||
| @@ -629,12 +618,6 @@ void luaK_infix (FuncState *fs, BinOpr op, expdesc *v) { | |||
| 629 | } | 618 | } |
| 630 | 619 | ||
| 631 | 620 | ||
| 632 | |||
| 633 | static const int cmp_masks[] = { /* ORDER OPR */ | ||
| 634 | CMP_LT, (CMP_LT | CMP_EQ), CMP_GT, (CMP_GT | CMP_EQ) | ||
| 635 | }; | ||
| 636 | |||
| 637 | |||
| 638 | static void codebinop (FuncState *fs, expdesc *res, BinOpr op, | 621 | static void codebinop (FuncState *fs, expdesc *res, BinOpr op, |
| 639 | int o1, int o2, int ic) { | 622 | int o1, int o2, int ic) { |
| 640 | switch (op) { | 623 | switch (op) { |
| @@ -644,7 +627,7 @@ static void codebinop (FuncState *fs, expdesc *res, BinOpr op, | |||
| 644 | lua_assert(!ic); | 627 | lua_assert(!ic); |
| 645 | /* go through */ | 628 | /* go through */ |
| 646 | case OPR_ADD: | 629 | case OPR_ADD: |
| 647 | case OPR_MULT: { | 630 | case OPR_MULT: { /* ORDER OPR */ |
| 648 | OpCode opc = cast(OpCode, (op - OPR_ADD) + OP_ADD); | 631 | OpCode opc = cast(OpCode, (op - OPR_ADD) + OP_ADD); |
| 649 | res->info = luaK_codeABC(fs, opc, 0, o1, o2); | 632 | res->info = luaK_codeABC(fs, opc, 0, o1, o2); |
| 650 | res->k = VRELOCABLE; | 633 | res->k = VRELOCABLE; |
| @@ -659,11 +642,13 @@ static void codebinop (FuncState *fs, expdesc *res, BinOpr op, | |||
| 659 | case OPR_LT: | 642 | case OPR_LT: |
| 660 | case OPR_LE: | 643 | case OPR_LE: |
| 661 | case OPR_GT: | 644 | case OPR_GT: |
| 662 | case OPR_GE: { | 645 | case OPR_GE: { /* ORDER OPR */ |
| 663 | int mask = cmp_masks[op - OPR_LT]; | 646 | OpCode opc; |
| 647 | int i = op - OPR_LT; | ||
| 664 | if (ic) /* operands were interchanged? */ | 648 | if (ic) /* operands were interchanged? */ |
| 665 | mask ^= (CMP_LT | CMP_GT); /* correct condition */ | 649 | i = (i+2)&3; /* correct operator */ |
| 666 | res->info = luaK_condjump(fs, OP_CMP, o1, mask, o2); | 650 | opc = cast(OpCode, i + OP_LT); |
| 651 | res->info = luaK_condjump(fs, opc, o1, 1, o2); | ||
| 667 | res->k = VJMP; | 652 | res->k = VJMP; |
| 668 | break; | 653 | break; |
| 669 | } | 654 | } |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lobject.h,v 1.132 2002/05/15 18:57:44 roberto Exp roberto $ | 2 | ** $Id: lobject.h,v 1.133 2002/05/16 18:39:46 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 | */ |
| @@ -230,14 +230,6 @@ typedef struct Table { | |||
| 230 | #define sizearray(t) ((t)->sizearray) | 230 | #define sizearray(t) ((t)->sizearray) |
| 231 | 231 | ||
| 232 | 232 | ||
| 233 | /* | ||
| 234 | ** masks for comparison results | ||
| 235 | */ | ||
| 236 | #define CMP_EQ 1 | ||
| 237 | #define CMP_LT 2 | ||
| 238 | #define CMP_GT 4 | ||
| 239 | #define CMP_N 8 /* not comparable values (e.g. NaN) */ | ||
| 240 | |||
| 241 | 233 | ||
| 242 | extern const TObject luaO_nilobject; | 234 | extern const TObject luaO_nilobject; |
| 243 | 235 | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lopcodes.c,v 1.18 2002/05/06 15:51:41 roberto Exp roberto $ | 2 | ** $Id: lopcodes.c,v 1.19 2002/05/13 13:09:00 roberto Exp roberto $ |
| 3 | ** extracted automatically from lopcodes.h by mkprint.lua | 3 | ** extracted automatically from lopcodes.h by mkprint.lua |
| 4 | ** DO NOT EDIT | 4 | ** DO NOT EDIT |
| 5 | ** See Copyright Notice in lua.h | 5 | ** See Copyright Notice in lua.h |
| @@ -37,7 +37,10 @@ const char *const luaP_opnames[] = { | |||
| 37 | "CONCAT", | 37 | "CONCAT", |
| 38 | "JMP", | 38 | "JMP", |
| 39 | "EQ", | 39 | "EQ", |
| 40 | "CMP", | 40 | "LT", |
| 41 | "LE", | ||
| 42 | "GT", | ||
| 43 | "GE", | ||
| 41 | "TEST", | 44 | "TEST", |
| 42 | "CALL", | 45 | "CALL", |
| 43 | "TAILCALL", | 46 | "TAILCALL", |
| @@ -82,7 +85,10 @@ const lu_byte luaP_opmodes[NUM_OPCODES] = { | |||
| 82 | ,opmode(0,0,1,1, 1,0,iABC) /* OP_CONCAT */ | 85 | ,opmode(0,0,1,1, 1,0,iABC) /* OP_CONCAT */ |
| 83 | ,opmode(0,0,0,0, 0,0,iAsBx) /* OP_JMP */ | 86 | ,opmode(0,0,0,0, 0,0,iAsBx) /* OP_JMP */ |
| 84 | ,opmode(1,0,0,1, 0,0,iABC) /* OP_EQ */ | 87 | ,opmode(1,0,0,1, 0,0,iABC) /* OP_EQ */ |
| 85 | ,opmode(1,0,0,1, 0,0,iABC) /* OP_CMP */ | 88 | ,opmode(1,0,0,1, 0,0,iABC) /* OP_LT */ |
| 89 | ,opmode(1,0,0,1, 0,0,iABC) /* OP_LE */ | ||
| 90 | ,opmode(1,0,0,1, 0,0,iABC) /* OP_GT */ | ||
| 91 | ,opmode(1,0,0,1, 0,0,iABC) /* OP_GE */ | ||
| 86 | ,opmode(1,0,0,1, 1,0,iABC) /* OP_TEST */ | 92 | ,opmode(1,0,0,1, 1,0,iABC) /* OP_TEST */ |
| 87 | ,opmode(0,0,0,0, 0,0,iABC) /* OP_CALL */ | 93 | ,opmode(0,0,0,0, 0,0,iABC) /* OP_CALL */ |
| 88 | ,opmode(0,0,0,0, 0,0,iABC) /* OP_TAILCALL */ | 94 | ,opmode(0,0,0,0, 0,0,iABC) /* OP_TAILCALL */ |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lopcodes.h,v 1.97 2002/05/13 13:09:00 roberto Exp roberto $ | 2 | ** $Id: lopcodes.h,v 1.98 2002/06/06 18:17:33 roberto Exp roberto $ |
| 3 | ** Opcodes for Lua virtual machine | 3 | ** Opcodes for Lua virtual machine |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -158,7 +158,10 @@ OP_CONCAT,/* A B C R(A) := R(B).. ... ..R(C) */ | |||
| 158 | OP_JMP,/* sBx PC += sBx */ | 158 | OP_JMP,/* sBx PC += sBx */ |
| 159 | 159 | ||
| 160 | OP_EQ,/* A B C if ((R(A) == R/K(C)) ~= B) then pc++ */ | 160 | OP_EQ,/* A B C if ((R(A) == R/K(C)) ~= B) then pc++ */ |
| 161 | OP_CMP,/* A B C if not (R(A) <B> R/K(C)) then pc++ (see note) */ | 161 | OP_LT,/* A B C if ((R(A) < R/K(C)) ~= B) then pc++ */ |
| 162 | OP_LE,/* A B C if ((R(A) <= R/K(C)) ~= B) then pc++ */ | ||
| 163 | OP_GT,/* A B C if ((R(A) > R/K(C)) ~= B) then pc++ */ | ||
| 164 | OP_GE,/* A B C if ((R(A) >= R/K(C)) ~= B) then pc++ */ | ||
| 162 | 165 | ||
| 163 | OP_TEST,/* A B C if (R(C) <=> B) then R(A) := R(C) else pc++ */ | 166 | OP_TEST,/* A B C if (R(C) <=> B) then R(A) := R(C) else pc++ */ |
| 164 | 167 | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ltm.c,v 1.92 2002/05/27 20:35:40 roberto Exp roberto $ | 2 | ** $Id: ltm.c,v 1.93 2002/06/03 14:09:57 roberto Exp roberto $ |
| 3 | ** Tag methods | 3 | ** Tag methods |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -28,8 +28,8 @@ void luaT_init (lua_State *L) { | |||
| 28 | "__gettable", "__settable", "__index", "__newindex", | 28 | "__gettable", "__settable", "__index", "__newindex", |
| 29 | "__gc", "__weakmode", | 29 | "__gc", "__weakmode", |
| 30 | "__add", "__sub", "__mul", "__div", | 30 | "__add", "__sub", "__mul", "__div", |
| 31 | "__pow", "__unm", "__lt", "__concat", | 31 | "__pow", "__unm", "__lt", "__le", |
| 32 | "__call" | 32 | "__concat", "__call" |
| 33 | }; | 33 | }; |
| 34 | int i; | 34 | int i; |
| 35 | for (i=0; i<TM_N; i++) { | 35 | for (i=0; i<TM_N; i++) { |
| @@ -45,6 +45,7 @@ void luaT_init (lua_State *L) { | |||
| 45 | */ | 45 | */ |
| 46 | const TObject *luaT_gettm (Table *events, TMS event, TString *ename) { | 46 | const TObject *luaT_gettm (Table *events, TMS event, TString *ename) { |
| 47 | const TObject *tm = luaH_getstr(events, ename); | 47 | const TObject *tm = luaH_getstr(events, ename); |
| 48 | lua_assert(event <= TM_WEAKMODE); | ||
| 48 | if (ttype(tm) == LUA_TNIL) { /* no tag method? */ | 49 | if (ttype(tm) == LUA_TNIL) { /* no tag method? */ |
| 49 | events->flags |= (1u<<event); /* cache this fact */ | 50 | events->flags |= (1u<<event); /* cache this fact */ |
| 50 | return NULL; | 51 | return NULL; |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ltm.h,v 1.32 2002/05/20 19:51:06 roberto Exp roberto $ | 2 | ** $Id: ltm.h,v 1.33 2002/05/27 20:35:40 roberto Exp roberto $ |
| 3 | ** Tag methods | 3 | ** Tag methods |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -20,7 +20,7 @@ typedef enum { | |||
| 20 | TM_INDEX, | 20 | TM_INDEX, |
| 21 | TM_NEWINDEX, | 21 | TM_NEWINDEX, |
| 22 | TM_GC, | 22 | TM_GC, |
| 23 | TM_WEAKMODE, | 23 | TM_WEAKMODE, /* last tag method with `fast' access */ |
| 24 | TM_ADD, | 24 | TM_ADD, |
| 25 | TM_SUB, | 25 | TM_SUB, |
| 26 | TM_MUL, | 26 | TM_MUL, |
| @@ -28,6 +28,7 @@ typedef enum { | |||
| 28 | TM_POW, | 28 | TM_POW, |
| 29 | TM_UNM, | 29 | TM_UNM, |
| 30 | TM_LT, | 30 | TM_LT, |
| 31 | TM_LE, | ||
| 31 | TM_CONCAT, | 32 | TM_CONCAT, |
| 32 | TM_CALL, | 33 | TM_CALL, |
| 33 | TM_N /* number of elements in the enum */ | 34 | TM_N /* number of elements in the enum */ |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lvm.c,v 1.235 2002/06/05 12:34:19 roberto Exp roberto $ | 2 | ** $Id: lvm.c,v 1.236 2002/06/06 18:17:33 roberto Exp roberto $ |
| 3 | ** Lua virtual machine | 3 | ** Lua virtual machine |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -207,14 +207,13 @@ static int luaV_strcmp (const TString *ls, const TString *rs) { | |||
| 207 | size_t lr = rs->tsv.len; | 207 | size_t lr = rs->tsv.len; |
| 208 | for (;;) { | 208 | for (;;) { |
| 209 | int temp = strcoll(l, r); | 209 | int temp = strcoll(l, r); |
| 210 | if (temp < 0) return CMP_LT; | 210 | if (temp != 0) return temp; |
| 211 | else if (temp > 0) return CMP_GT; | ||
| 212 | else { /* strings are equal up to a `\0' */ | 211 | else { /* strings are equal up to a `\0' */ |
| 213 | size_t len = strlen(l); /* index of first `\0' in both strings */ | 212 | size_t len = strlen(l); /* index of first `\0' in both strings */ |
| 214 | if (len == lr) /* r is finished? */ | 213 | if (len == lr) /* r is finished? */ |
| 215 | return (len == ll) ? CMP_EQ : CMP_GT; /* l is eq. or gt. than r */ | 214 | return (len == ll) ? 0 : 1; |
| 216 | else if (len == ll) /* l is finished? */ | 215 | else if (len == ll) /* l is finished? */ |
| 217 | return CMP_LT; /* l is smaller than r (because r is not finished) */ | 216 | return -1; /* l is smaller than r (because r is not finished) */ |
| 218 | /* both strings longer than `len'; go on comparing (after the `\0') */ | 217 | /* both strings longer than `len'; go on comparing (after the `\0') */ |
| 219 | len++; | 218 | len++; |
| 220 | l += len; ll -= len; r += len; lr -= len; | 219 | l += len; ll -= len; r += len; lr -= len; |
| @@ -223,24 +222,30 @@ static int luaV_strcmp (const TString *ls, const TString *rs) { | |||
| 223 | } | 222 | } |
| 224 | 223 | ||
| 225 | 224 | ||
| 226 | int luaV_cmp (lua_State *L, const TObject *l, const TObject *r, int cond) { | 225 | int luaV_lessthan (lua_State *L, const TObject *l, const TObject *r) { |
| 227 | if (ttype(l) == LUA_TNUMBER && ttype(r) == LUA_TNUMBER) { | 226 | if (ttype(l) == LUA_TNUMBER && ttype(r) == LUA_TNUMBER) |
| 228 | lua_Number n1 = nvalue(l); | 227 | return nvalue(l) < nvalue(r); |
| 229 | lua_Number n2 = nvalue(r); | ||
| 230 | if (n1 < n2) return (cond & CMP_LT); | ||
| 231 | else if (n1 > n2) return (cond & CMP_GT); | ||
| 232 | else if (n1 == n2) return (cond & CMP_EQ); | ||
| 233 | else return (cond & CMP_N); | ||
| 234 | } | ||
| 235 | else if (ttype(l) == LUA_TSTRING && ttype(r) == LUA_TSTRING) | 228 | else if (ttype(l) == LUA_TSTRING && ttype(r) == LUA_TSTRING) |
| 236 | return luaV_strcmp(tsvalue(l), tsvalue(r)) & cond; | 229 | return luaV_strcmp(tsvalue(l), tsvalue(r)) < 0; |
| 237 | else { /* try TM */ | 230 | else { /* try TM */ |
| 238 | if (cond & CMP_EQ ? cond & CMP_LT : cond & CMP_GT) { /* `<=' or `>' ? */ | ||
| 239 | const TObject *temp = l; l = r; r = temp; /* exchange terms */ | ||
| 240 | } | ||
| 241 | if (!call_binTM(L, l, r, L->top, TM_LT)) | 231 | if (!call_binTM(L, l, r, L->top, TM_LT)) |
| 242 | luaG_ordererror(L, l, r); | 232 | luaG_ordererror(L, l, r); |
| 243 | return (cond & CMP_EQ) ? l_isfalse(L->top) : !l_isfalse(L->top); | 233 | return !l_isfalse(L->top); |
| 234 | } | ||
| 235 | } | ||
| 236 | |||
| 237 | |||
| 238 | static int luaV_lessequal (lua_State *L, const TObject *l, const TObject *r) { | ||
| 239 | if (ttype(l) == LUA_TNUMBER && ttype(r) == LUA_TNUMBER) | ||
| 240 | return nvalue(l) <= nvalue(r); | ||
| 241 | else if (ttype(l) == LUA_TSTRING && ttype(r) == LUA_TSTRING) | ||
| 242 | return luaV_strcmp(tsvalue(l), tsvalue(r)) <= 0; | ||
| 243 | else { /* try TM */ | ||
| 244 | if (call_binTM(L, l, r, L->top, TM_LE)) /* first try `le' */ | ||
| 245 | return !l_isfalse(L->top); | ||
| 246 | else if (!call_binTM(L, r, l, L->top, TM_LT)) /* else try `lt' */ | ||
| 247 | luaG_ordererror(L, l, r); | ||
| 248 | return l_isfalse(L->top); | ||
| 244 | } | 249 | } |
| 245 | } | 250 | } |
| 246 | 251 | ||
| @@ -463,8 +468,23 @@ StkId luaV_execute (lua_State *L) { | |||
| 463 | else dojump(pc, GETARG_sBx(*pc) + 1); | 468 | else dojump(pc, GETARG_sBx(*pc) + 1); |
| 464 | break; | 469 | break; |
| 465 | } | 470 | } |
| 466 | case OP_CMP: { | 471 | case OP_LT: { |
| 467 | if (!(luaV_cmp(L, ra, RKC(i), GETARG_B(i)))) pc++; | 472 | if (luaV_lessthan(L, ra, RKC(i)) != GETARG_B(i)) pc++; |
| 473 | else dojump(pc, GETARG_sBx(*pc) + 1); | ||
| 474 | break; | ||
| 475 | } | ||
| 476 | case OP_LE: { | ||
| 477 | if (luaV_lessequal(L, ra, RKC(i)) != GETARG_B(i)) pc++; | ||
| 478 | else dojump(pc, GETARG_sBx(*pc) + 1); | ||
| 479 | break; | ||
| 480 | } | ||
| 481 | case OP_GT: { | ||
| 482 | if (luaV_lessthan(L, RKC(i), ra) != GETARG_B(i)) pc++; | ||
| 483 | else dojump(pc, GETARG_sBx(*pc) + 1); | ||
| 484 | break; | ||
| 485 | } | ||
| 486 | case OP_GE: { | ||
| 487 | if (luaV_lessequal(L, RKC(i), ra) != GETARG_B(i)) pc++; | ||
| 468 | else dojump(pc, GETARG_sBx(*pc) + 1); | 488 | else dojump(pc, GETARG_sBx(*pc) + 1); |
| 469 | break; | 489 | break; |
| 470 | } | 490 | } |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lvm.h,v 1.39 2002/05/06 15:51:41 roberto Exp roberto $ | 2 | ** $Id: lvm.h,v 1.40 2002/06/03 14:08:43 roberto Exp roberto $ |
| 3 | ** Lua virtual machine | 3 | ** Lua virtual machine |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -19,7 +19,7 @@ | |||
| 19 | (((o) = luaV_tonumber(o,n)) != NULL)) | 19 | (((o) = luaV_tonumber(o,n)) != NULL)) |
| 20 | 20 | ||
| 21 | 21 | ||
| 22 | int luaV_cmp (lua_State *L, const TObject *l, const TObject *r, int cond); | 22 | int luaV_lessthan (lua_State *L, const TObject *l, const TObject *r); |
| 23 | const TObject *luaV_tonumber (const TObject *obj, TObject *n); | 23 | const TObject *luaV_tonumber (const TObject *obj, TObject *n); |
| 24 | int luaV_tostring (lua_State *L, TObject *obj); | 24 | int luaV_tostring (lua_State *L, TObject *obj); |
| 25 | void luaV_gettable (lua_State *L, const TObject *t, TObject *key, StkId res); | 25 | void luaV_gettable (lua_State *L, const TObject *t, TObject *key, StkId res); |
