all repos — mgba @ cc71f7f9647ecec22926c3c0e848e0ee838e0308

mGBA Game Boy Advance Emulator

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	bool (*lookupSymbol)(struct mScriptEngine*, const char* name, int32_t* out);
28
29#ifdef USE_DEBUGGERS
30	void (*debuggerEntered)(struct mScriptEngine*, enum mDebuggerEntryReason, struct mDebuggerEntryInfo*);
31#endif
32};
33
34struct mScriptBridge* mScriptBridgeCreate(void);
35void mScriptBridgeDestroy(struct mScriptBridge*);
36
37void mScriptBridgeInstallEngine(struct mScriptBridge*, struct mScriptEngine*);
38
39#ifdef USE_DEBUGGERS
40void mScriptBridgeSetDebugger(struct mScriptBridge*, struct mDebugger*);
41struct mDebugger* mScriptBridgeGetDebugger(struct mScriptBridge*);
42void mScriptBridgeDebuggerEntered(struct mScriptBridge*, enum mDebuggerEntryReason, struct mDebuggerEntryInfo*);
43#endif
44
45void mScriptBridgeRun(struct mScriptBridge*);
46bool mScriptBridgeLoadScript(struct mScriptBridge*, const char* name);
47
48bool mScriptBridgeLookupSymbol(struct mScriptBridge*, const char* name, int32_t* out);
49
50CXX_GUARD_END
51
52#endif