Overte C++ Documentation
Scriptable.h
1 //
2 // Scriptable.h
3 // libraries/script-engine/src
4 //
5 // Created by Heather Anderson on 5/1/21.
6 // Copyright 2021 Vircadia contributors.
7 // Copyright 2023 Overte e.V.
8 //
9 // Distributed under the Apache License, Version 2.0.
10 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
11 // SPDX-License-Identifier: Apache-2.0
12 //
13 
16 
17 #ifndef hifi_Scriptable_h
18 #define hifi_Scriptable_h
19 
20 #include <memory>
21 
22 #include "ScriptContext.h"
23 #include "ScriptValue.h"
24 
25 class ScriptEngine;
26 using ScriptEnginePointer = std::shared_ptr<ScriptEngine>;
27 
29 class Scriptable {
30 public:
31  static inline ScriptEnginePointer engine();
32  static ScriptContext* context();
33  static inline ScriptValue thisObject();
34  static inline int argumentCount();
35  static inline ScriptValue argument(int index);
36 
37  static void setContext(ScriptContext* context);
38 };
39 
40 ScriptEnginePointer Scriptable::engine() {
41  ScriptContext* scriptContext = context();
42  return scriptContext ? scriptContext->engine() : nullptr;
43 }
44 
45 ScriptValue Scriptable::thisObject() {
46  ScriptContext* scriptContext = context();
47  return scriptContext ? scriptContext->thisObject() : ScriptValue();
48 }
49 
50 int Scriptable::argumentCount() {
51  ScriptContext* scriptContext = context();
52  return scriptContext ? scriptContext->argumentCount() : 0;
53 }
54 
55 ScriptValue Scriptable::argument(int index) {
56  ScriptContext* scriptContext = context();
57  return scriptContext ? scriptContext->argument(index) : ScriptValue();
58 }
59 
60 #endif // hifi_Scriptable_h
61 
[ScriptInterface] Provides an engine-independent interface for QScriptContext
Definition: ScriptContext.h:55
Provides an engine-independent interface for a scripting engine.
Definition: ScriptEngine.h:93
[ScriptInterface] Provides an engine-independent interface for QScriptValue
Definition: ScriptValue.h:40
[ScriptInterface] Provides an engine-independent interface for QScriptable
Definition: Scriptable.h:29