summaryrefslogtreecommitdiff
path: root/indra/newview/llluamanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llluamanager.h')
-rw-r--r--indra/newview/llluamanager.h30
1 files changed, 27 insertions, 3 deletions
diff --git a/indra/newview/llluamanager.h b/indra/newview/llluamanager.h
index 08d9876ce2..bed12e358a 100644
--- a/indra/newview/llluamanager.h
+++ b/indra/newview/llluamanager.h
@@ -27,19 +27,43 @@
#ifndef LL_LLLUAMANAGER_H
#define LL_LLLUAMANAGER_H
+#include "llsd.h"
#include <functional>
#include <string>
+#include <utility> // std::pair
+
+class LuaState;
class LLLUAmanager
{
public:
+ // Pass a callback with this signature to obtain the error message, if
+ // any, from running a script or source string. Empty msg means success.
typedef std::function<void(std::string msg)> script_finished_fn;
+ // Pass a callback with this signature to obtain the result, if any, of
+ // running a script or source string.
+ // count < 0 means error, and result.asString() is the error message.
+ // count == 0 with result.isUndefined() means the script returned no results.
+ // count == 1 means the script returned one result.
+ // count > 1 with result.isArray() means the script returned multiple
+ // results, represented as the entries of the result array.
+ typedef std::function<void(int count, const LLSD& result)> script_result_fn;
+
+ static void runScriptFile(const std::string &filename, script_finished_fn cb = {});
+ static void runScriptFile(const std::string &filename, script_result_fn cb);
+ static void runScriptFile(LuaState& L, const std::string &filename, script_result_fn cb = {});
+ // Run a Lua script file, and pause the calling coroutine until it completes.
+ // The return value is the (count, result) pair described above.
+ static std::pair<int, LLSD> waitScriptFile(LuaState& L, const std::string& filename);
- static void runScriptFile(const std::string &filename, script_finished_fn cb = script_finished_fn());
- static void runScriptLine(const std::string &cmd, script_finished_fn cb = script_finished_fn());
+ static void runScriptLine(const std::string &cmd, script_finished_fn cb = {});
+ static void runScriptLine(const std::string &cmd, script_result_fn cb);
+ static void runScriptLine(LuaState& L, const std::string &cmd, script_result_fn cb = {});
+ // Run a Lua expression string, and pause the calling coroutine until it completes.
+ // The return value is the (count, result) pair described above.
+ static std::pair<int, LLSD> waitScriptLine(LuaState& L, const std::string& cmd);
static void runScriptOnLogin();
};
-
#endif