summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2024-07-02 10:35:34 -0400
committerNat Goodspeed <nat@lindenlab.com>2024-07-02 10:35:34 -0400
commit212868a8c3f803b387da602b6440f69c2c617e40 (patch)
treec8450709ea2f94b6a33ae4f305529bcac5d3fc69
parentac56718929044e101dc2c7bfe3ebc5dff565b76d (diff)
Promote LuaRemover from llluamanager.cpp to lua_function.h.
-rw-r--r--indra/llcommon/lua_function.h34
-rw-r--r--indra/newview/llluamanager.cpp25
2 files changed, 32 insertions, 27 deletions
diff --git a/indra/llcommon/lua_function.h b/indra/llcommon/lua_function.h
index c32a586d79..b3b1f40ae5 100644
--- a/indra/llcommon/lua_function.h
+++ b/indra/llcommon/lua_function.h
@@ -118,11 +118,12 @@ private:
* LuaPopper
*****************************************************************************/
/**
- * LuaPopper is an RAII struct whose role is to pop some number of entries
+ * LuaPopper is an RAII class whose role is to pop some number of entries
* from the Lua stack if the calling function exits early.
*/
-struct LuaPopper
+class LuaPopper
{
+public:
LuaPopper(lua_State* L, int count):
mState(L),
mCount(count)
@@ -136,11 +137,40 @@ struct LuaPopper
void disarm() { set(0); }
void set(int count) { mCount = count; }
+private:
lua_State* mState;
int mCount;
};
/*****************************************************************************
+* LuaRemover
+*****************************************************************************/
+/**
+ * Remove a particular stack index on exit from enclosing scope.
+ * If you pass a negative index (meaning relative to the current stack top),
+ * converts to an absolute index. The point of LuaRemover is to remove the
+ * entry at the specified index regardless of subsequent pushes to the stack.
+ */
+class LuaRemover
+{
+public:
+ LuaRemover(lua_State* L, int index):
+ mState(L),
+ mIndex(lua_absindex(L, index))
+ {}
+ LuaRemover(const LuaRemover&) = delete;
+ LuaRemover& operator=(const LuaRemover&) = delete;
+ ~LuaRemover()
+ {
+ lua_remove(mState, mIndex);
+ }
+
+private:
+ lua_State* mState;
+ int mIndex;
+};
+
+/*****************************************************************************
* lua_function (and helper class LuaFunction)
*****************************************************************************/
/**
diff --git a/indra/newview/llluamanager.cpp b/indra/newview/llluamanager.cpp
index 77f197b2d2..c95ce9c57b 100644
--- a/indra/newview/llluamanager.cpp
+++ b/indra/newview/llluamanager.cpp
@@ -309,31 +309,6 @@ LLRequireResolver::LLRequireResolver(lua_State *L, const std::string& path) :
luaL_argerrorL(L, 1, "cannot require a full path");
}
-/**
- * Remove a particular stack index on exit from enclosing scope.
- * If you pass a negative index (meaning relative to the current stack top),
- * converts to an absolute index. The point of LuaRemover is to remove the
- * entry at the specified index regardless of subsequent pushes to the stack.
- */
-class LuaRemover
-{
-public:
- LuaRemover(lua_State* L, int index):
- mState(L),
- mIndex(lua_absindex(L, index))
- {}
- LuaRemover(const LuaRemover&) = delete;
- LuaRemover& operator=(const LuaRemover&) = delete;
- ~LuaRemover()
- {
- lua_remove(mState, mIndex);
- }
-
-private:
- lua_State* mState;
- int mIndex;
-};
-
// push the loaded module or throw a Lua error
void LLRequireResolver::findModule()
{