LeviLamina
Loading...
Searching...
No Matches
ClassRegistry.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated forward declare list
6// clang-format off
7struct JSContext;
8namespace Scripting { struct ClassBinding; }
9namespace Scripting { struct EnumBinding; }
10namespace Scripting { struct EqualPropertyBinding; }
11namespace Scripting { struct ErrorBinding; }
12namespace Scripting { struct HashPropertyBinding; }
13namespace Scripting { struct InterfaceBinding; }
14namespace Scripting { struct PropertyBinding; }
15namespace Scripting { struct TypeNameInfo; }
16namespace Scripting::QuickJS { class RegisteredClass; }
17namespace Scripting::QuickJS { class RegisteredEnum; }
18namespace Scripting::QuickJS { class RegisteredError; }
19namespace Scripting::QuickJS { class RegisteredInterface; }
20namespace Scripting::QuickJS { struct ResolvedTypes; }
21// clang-format on
22
23namespace Scripting::QuickJS {
24
26public:
27 // ClassRegistry inner types declare
28 // clang-format off
29 struct TypeHash;
30 // clang-format on
31
32 // ClassRegistry inner types define
33 struct TypeHash {};
34
35public:
36 // member variables
37 // NOLINTBEGIN
45 // NOLINTEND
46
47public:
48 // prevent constructor by default
49 ClassRegistry& operator=(ClassRegistry const&);
51
52public:
53 // member functions
54 // NOLINTBEGIN
55 MCAPI ClassRegistry();
56
57 MCAPI void _collectAllInterfaceProperties(
58 ::std::unordered_set<
62 ::Scripting::InterfaceBinding const& interfaceBinding
63 );
64
65 MCAPI void _collectAllProperties(
66 ::std::unordered_set<
70 ::Scripting::ClassBinding const& classBinding
71 );
72
73 MCAPI void _registerBakedProperties(::Scripting::ClassBinding const& classBinding);
74
75 MCAPI ::Scripting::QuickJS::RegisteredClass* findClassByType(::entt::meta_type const& type) const;
76
77 MCAPI ::Scripting::QuickJS::RegisteredEnum* findEnumByType(::entt::meta_type const& type) const;
78
79 MCAPI ::Scripting::QuickJS::RegisteredError* findErrorByType(::entt::meta_type const& type) const;
80
81 MCAPI ::Scripting::QuickJS::RegisteredInterface* findInterfaceByType(::entt::meta_type const& type) const;
82
83 MCAPI ::std::optional<::Scripting::TypeNameInfo> getNameForType(
84 ::Scripting::QuickJS::ResolvedTypes const& resolvedTypes,
85 ::entt::meta_type const& type,
86 bool allowUnknownTypes
87 ) const;
88
89 MCAPI ::Scripting::QuickJS::RegisteredClass&
90 registerClass(::JSContext* ctx, ::Scripting::ClassBinding const& classBinding, bool forModule);
91
92 MCAPI void registerEnum(::JSContext* enumBinding, ::Scripting::EnumBinding const& ctx);
93
94 MCAPI ::Scripting::QuickJS::RegisteredError&
95 registerError(::JSContext* ctx, ::Scripting::ErrorBinding const& errorBinding);
96
97 MCAPI ::Scripting::QuickJS::RegisteredInterface&
98 registerInterface(::JSContext* interfaceBinding, ::Scripting::InterfaceBinding const& ctx);
99
100 MCAPI ~ClassRegistry();
101 // NOLINTEND
102
103public:
104 // constructor thunks
105 // NOLINTBEGIN
106 MCAPI void* $ctor();
107 // NOLINTEND
108
109public:
110 // destructor thunk
111 // NOLINTBEGIN
112 MCAPI void $dtor();
113 // NOLINTEND
114};
115
116} // namespace Scripting::QuickJS
Definition ClassRegistry.h:25
Definition JSContext.h:5
Definition ClassBinding.h:19
Definition EnumBinding.h:15
Definition EqualPropertyBinding.h:7
Definition ErrorBinding.h:15
Definition HashPropertyBinding.h:7
Definition InterfaceBinding.h:16
Definition PropertyBinding.h:10
Definition ClassRegistry.h:33
Definition ResolvedTypes.h:7
Definition ctx.h:5
Definition Alias.h:14