Repository navigation
Expand file tree
/
Copy pathecmascript.h
More file actions
99 lines (74 loc) · 3.48 KB
/
Copy pathecmascript.h
File metadata and controls
99 lines (74 loc) · 3.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#ifndef ECMASCRIPT_H
#define ECMASCRIPT_H
#include "core/io/resource_loader.h"
#include "core/io/resource_saver.h"
#include "core/script_language.h"
#include "ecmascript_binder.h"
class ECMAScript : public Script {
GDCLASS(ECMAScript, Script);
private:
friend class ECMAScriptInstance;
friend class QuickJSBinder;
friend class ResourceFormatLoaderECMAScript;
Set<Object *> instances;
const ECMAClassInfo *ecma_class;
StringName class_name;
String code;
String script_path;
Vector<uint8_t> bytecode;
#ifdef TOOLS_ENABLED
Set<PlaceHolderScriptInstance *> placeholders;
virtual void _placeholder_erased(PlaceHolderScriptInstance *p_placeholder);
#endif
protected:
void _notification(int p_what) {}
static void _bind_methods();
public:
virtual bool can_instance() const;
virtual Ref<Script> get_base_script() const { return NULL; } //for script inheritance
virtual StringName get_instance_base_type() const;
virtual ScriptInstance *instance_create(Object *p_this);
virtual bool instance_has(const Object *p_this) const;
virtual PlaceHolderScriptInstance *placeholder_instance_create(Object *p_this);
virtual bool is_placeholder_fallback_enabled() const;
virtual bool has_source_code() const { return true; }
virtual String get_source_code() const { return code; }
virtual void set_source_code(const String &p_code) { code = p_code; }
virtual Error reload(bool p_keep_state = false);
virtual bool has_method(const StringName &p_method) const;
virtual MethodInfo get_method_info(const StringName &p_method) const;
virtual bool is_tool() const;
virtual bool is_valid() const;
virtual void get_script_method_list(List<MethodInfo> *p_list) const;
virtual void get_script_property_list(List<PropertyInfo> *p_list) const;
virtual bool get_property_default_value(const StringName &p_property, Variant &r_value) const;
virtual bool has_script_signal(const StringName &p_signal) const;
virtual void get_script_signal_list(List<MethodInfo> *r_signals) const;
virtual void update_exports(); //editor tool
/* TODO */ virtual int get_member_line(const StringName &p_member) const { return -1; }
/* TODO */ virtual void get_constants(Map<StringName, Variant> *p_constants) {}
/* TODO */ virtual void get_members(Set<StringName> *p_constants) {}
virtual ScriptLanguage *get_language() const;
_FORCE_INLINE_ const ECMAClassInfo *get_ecma_class() const { return this->ecma_class; }
_FORCE_INLINE_ String get_script_path() const { return script_path; }
_FORCE_INLINE_ void set_script_path(const String &p_path) { script_path = p_path; }
ECMAScript();
virtual ~ECMAScript();
};
class ResourceFormatLoaderECMAScript : public ResourceFormatLoader {
GDCLASS(ResourceFormatLoaderECMAScript, ResourceFormatLoader)
public:
virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL);
virtual void get_recognized_extensions(List<String> *p_extensions) const;
virtual void get_recognized_extensions_for_type(const String &p_type, List<String> *p_extensions) const;
virtual bool handles_type(const String &p_type) const;
virtual String get_resource_type(const String &p_path) const;
};
class ResourceFormatSaverECMAScript : public ResourceFormatSaver {
GDCLASS(ResourceFormatSaverECMAScript, ResourceFormatSaver)
public:
virtual Error save(const String &p_path, const RES &p_resource, uint32_t p_flags = 0);
virtual void get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const;
virtual bool recognize(const RES &p_resource) const;
};
#endif // ECMASCRIPT_H