monotone-commits-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Monotone-commits-diffs] net.venge.monotone.lua-5.2: ec13e709d23196f0d51


From: code
Subject: [Monotone-commits-diffs] net.venge.monotone.lua-5.2: ec13e709d23196f0d51dc4e588ac86efe88c8219
Date: Wed, 25 Apr 2012 14:54:56 +0200 (CEST)

revision:            ec13e709d23196f0d51dc4e588ac86efe88c8219
date:                2012-04-25T11:08:35
author:              Richard Levitte <address@hidden>
branch:              net.venge.monotone.lua-5.2
changelog:
* src/lua.hh: With Lua 5.2, the pseudoindex `LUA_GLOBALSINDEX' is
  removed, and you have to use `lua_getglobal' instead.  For the sake of
  simplicity, we use 0 to mean globals.  That should be safe, since in
  Lua, index 0 is invalid, and therefore not used.

* src/lua.cc (Lua::get): Reworked to use `lua_getglobal' when idx is 0.

manifest:
format_version "1"

new_manifest [7d232537152886f54148571168b54d346a452357]

old_revision [8a08d01a6fa7af676d5ce14acc81428f437ccaf1]

patch "src/lua.cc"
 from [bd639c79e1f8227e0f50461e27530bef41ce7cbb]
   to [52eed5f74bd6a2e6ba8e431ceeb230b49971d1c7]

patch "src/lua.hh"
 from [146872f14cc23c6179c37bcda8667a0ecd178826]
   to [4396421e2bb335241ce33c29a53aeffd3ebf7380]
============================================================
--- src/lua.cc	bd639c79e1f8227e0f50461e27530bef41ce7cbb
+++ src/lua.cc	52eed5f74bd6a2e6ba8e431ceeb230b49971d1c7
@@ -119,17 +119,27 @@ Lua::get(int idx)
 Lua::get(int idx)
 {
   if (failed) return *this;
-  if (!lua_istable (st, idx))
+  if (lua_gettop (st) < 1)
     {
-      fail("istable() in get");
+      fail("stack top > 0 in get");
       return *this;
     }
-  if (lua_gettop (st) < 1)
+  if (idx)
     {
-      fail("stack top > 0 in get");
-      return *this;
+      if (!lua_istable (st, idx))
+        {
+          fail("istable() in get");
+          return *this;
+        }
+      lua_gettable(st, idx);
     }
-  lua_gettable(st, idx);
+  else
+    {
+      string name;
+      extract_str(name);
+      pop();
+      lua_getglobal(st, name.c_str);
+    }
   return *this;
 }
 
============================================================
--- src/lua.hh	146872f14cc23c6179c37bcda8667a0ecd178826
+++ src/lua.hh	4396421e2bb335241ce33c29a53aeffd3ebf7380
@@ -37,13 +37,13 @@ Lua
   void report_error();
   bool check_stack(int count);
 
-  // getters
-  Lua & get(int idx = LUA_GLOBALSINDEX);
-  Lua & get_fn(int idx = LUA_GLOBALSINDEX);
-  Lua & get_tab(int idx = LUA_GLOBALSINDEX);
-  Lua & get_str(int idx = LUA_GLOBALSINDEX);
-  Lua & get_num(int idx = LUA_GLOBALSINDEX);
-  Lua & get_bool(int idx = LUA_GLOBALSINDEX);
+  // getters (0 is an invalid index in lua, and is used here to represent the global table)
+  Lua & get(int idx = 0);
+  Lua & get_fn(int idx = 0);
+  Lua & get_tab(int idx = 0);
+  Lua & get_str(int idx = 0);
+  Lua & get_num(int idx = 0);
+  Lua & get_bool(int idx = 0);
 
   // extractors
   Lua & extract_str_nolog(std::string & str);

reply via email to

[Prev in Thread] Current Thread [Next in Thread]