blob: e8a5d9e4acd9b4966dc7aa12276721080822afd1 [file]
/*
* Copyright 2025 Rive
*/
#ifndef _RIVE_LOGGING_SCRIPTING_CONTEXT_HPP_
#define _RIVE_LOGGING_SCRIPTING_CONTEXT_HPP_
#include "rive/command_queue.hpp"
#include <cstddef>
#include <functional>
// A lua-free bridge for routing a script's console/error output to a host
// logger.
namespace rive
{
enum class ScriptingLogLevel
{
info,
warn,
error,
};
// Receives a single fully-assembled UTF-8 log line from a script. The line has
// no trailing newline. Invoked on the command server thread. `data` is only
// valid for the duration of the call (copy it if you need to retain it).
using ScriptingLogSink = std::function<
void(ScriptingLogLevel level, const char* data, size_t length)>;
// Builds a ScriptingContextFactory whose contexts forward all script console
// output as ScriptingLogLevel::info lines and runtime/Lua errors as
// ScriptingLogLevel::error lines to `sink`.
ScriptingContextFactory makeLoggingScriptingContextFactory(
ScriptingLogSink sink);
} // namespace rive
#endif