include/mgba/core/scripting.h (view raw)
1/* Copyright (c) 2013-2017 Jeffrey Pfau
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6#ifndef M_SCRIPTING_H
7#define M_SCRIPTING_H
8
9#include <mgba-util/common.h>
10
11CXX_GUARD_START
12
13#ifdef USE_DEBUGGERS
14#include <mgba/debugger/debugger.h>
15#endif
16
17struct mScriptBridge;
18struct VFile;
19struct mScriptEngine {
20 const char* (*name)(struct mScriptEngine*);
21
22 bool (*init)(struct mScriptEngine*, struct mScriptBridge*);
23 void (*deinit)(struct mScriptEngine*);
24 bool (*isScript)(struct mScriptEngine*, const char* name, struct VFile* vf);
25 bool (*loadScript)(struct mScriptEngine*, const char* name, struct VFile* vf);
26 void (*run)(struct mScriptEngine*);
27
28#ifdef USE_DEBUGGERS
29 void (*debuggerEntered)(struct mScriptEngine*, enum mDebuggerEntryReason, struct mDebuggerEntryInfo*);
30#endif
31};
32
33struct mScriptBridge* mScriptBridgeCreate(void);
34void mScriptBridgeDestroy(struct mScriptBridge*);
35
36void mScriptBridgeInstallEngine(struct mScriptBridge*, struct mScriptEngine*);
37
38#ifdef USE_DEBUGGERS
39void mScriptBridgeSetDebugger(struct mScriptBridge*, struct mDebugger*);
40struct mDebugger* mScriptBridgeGetDebugger(struct mScriptBridge*);
41void mScriptBridgeDebuggerEntered(struct mScriptBridge*, enum mDebuggerEntryReason, struct mDebuggerEntryInfo*);
42#endif
43
44void mScriptBridgeRun(struct mScriptBridge*);
45bool mScriptBridgeLoadScript(struct mScriptBridge*, const char* name);
46
47CXX_GUARD_END
48
49#endif