3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/oreui/binding/ECapabilities.h"
7#include "mc/client/gui/oreui/binding/IdType.h"
8#include "mc/client/gui/oreui/binding/interface/IBindable.h"
9#include "mc/deps/core/utility/pub_sub/Subscription.h"
10#include "mc/platform/brstd/flat_map.h"
15namespace OreUI::Detail {
class Binder; }
17namespace OreUI::Detail {
class IQuery; }
20namespace OreUI::Detail {
35 using FactoryPtr = ::std::unique_ptr<::OreUI::Detail::IHandlerFactory>;
40 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::OreUI::Detail::IHandlerFactory>> mHandlerFactory;
41 ::ll::TypedStorage<8, 8, void*> mHandle;
47 MCAPI
void bind(::std::string
const& queryName, ::OreUI::Detail::Binder
const& binder);
54 enum class EQueryState : uint {
63 ::ll::TypedStorage<8, 8, ::OreUI::Detail::IdType> mId;
64 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::OreUI::Detail::IQuery>> mQuery;
65 ::ll::TypedStorage<8, 8, ::OreUI::Detail::QueryRegistry*> mRegistry;
66 ::ll::TypedStorage<4, 4, int> mRank;
67 ::ll::TypedStorage<1, 1, ::OreUI::ECapabilities> mCapabilities;
68 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mToken;
69 ::ll::TypedStorage<4, 4, ::OreUI::Detail::QueryRegistry::LiveQuery::EQueryState> mState;
74 LiveQuery& operator=(LiveQuery
const&);
75 LiveQuery(LiveQuery
const&);
81 MCAPI LiveQuery(::OreUI::Detail::QueryRegistry::LiveQuery&& other);
84 ::OreUI::Detail::Binder
const& binder,
85 ::OreUI::Detail::IdType
const&
id,
86 ::OreUI::ECapabilities capabilities,
87 ::std::unique_ptr<::OreUI::Detail::IQuery> query,
88 ::OreUI::Detail::QueryRegistry* registry,
92 MCAPI ::OreUI::Detail::QueryRegistry::LiveQuery& operator=(::OreUI::Detail::QueryRegistry::LiveQuery&& other);
100 MCAPI
void* $ctor(::OreUI::Detail::QueryRegistry::LiveQuery&& other);
103 ::OreUI::Detail::Binder
const& binder,
104 ::OreUI::Detail::IdType
const&
id,
105 ::OreUI::ECapabilities capabilities,
106 ::std::unique_ptr<::OreUI::Detail::IQuery> query,
107 ::OreUI::Detail::QueryRegistry* registry,
123 ::ll::TypedStorage<8, 8, ::OreUI::Detail::IdType> id;
124 ::ll::TypedStorage<4, 4, int> rank;
128 ::std::reference_wrapper<::brstd::flat_map<
129 ::OreUI::Detail::IdType,
130 ::OreUI::Detail::QueryRegistry::LiveQuery,
131 ::std::less<::OreUI::Detail::IdType>,
132 ::std::vector<::OreUI::Detail::IdType>,
133 ::std::vector<::OreUI::Detail::QueryRegistry::LiveQuery>>>>
138 using QueryPtr = ::std::unique_ptr<::OreUI::Detail::IQuery>;
143 ::ll::TypedStorage<8, 8, ::std::reference_wrapper<::OreUI::Detail::Binder>> mBinder;
144 ::ll::TypedStorage<8, 8, void*> mDestroyHandle;
145 ::ll::TypedStorage<1, 1, bool> mPurgeQueries;
146 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::OreUI::Detail::QueryRegistry::QueryTemplate>>
152 ::OreUI::Detail::IdType,
153 ::OreUI::Detail::QueryRegistry::LiveQuery,
154 ::std::less<::OreUI::Detail::IdType>,
155 ::std::vector<::OreUI::Detail::IdType>,
156 ::std::vector<::OreUI::Detail::QueryRegistry::LiveQuery>>>
162 ::OreUI::Detail::IdType,
163 ::OreUI::Detail::QueryRegistry::LiveQuery,
164 ::std::less<::OreUI::Detail::IdType>,
165 ::std::vector<::OreUI::Detail::IdType>,
166 ::std::vector<::OreUI::Detail::QueryRegistry::LiveQuery>>>
168 ::ll::TypedStorage<8, 24, ::std::vector<::OreUI::Detail::QueryRegistry::DirtyQuery>> mDirtyQueries;
169 ::ll::TypedStorage<8, 24, ::std::vector<::OreUI::Detail::QueryRegistry::LiveQuery>> mAdditionQueue;
170 ::ll::TypedStorage<1, 1, bool> mIterating;
180 virtual ~QueryRegistry() ;
182 virtual void onReadyForBindings() ;
184 virtual void onSuspend() ;
186 virtual void onBindingsReleased() ;
188 virtual void update(
double const time) ;
194 MCAPI
explicit QueryRegistry(::OreUI::Detail::Binder& binder);
196 MCAPI
void _createQuery(
197 ::OreUI::Detail::IdType
const&
id,
198 ::OreUI::ECapabilities capabilities,
199 ::std::unique_ptr<::OreUI::Detail::IQuery> query,
203 MCAPI
void _destroyQuery(::OreUI::Detail::IdType
const&
id);
205 MCAPI
void _syncQueries();
207 MCAPI ::std::vector<::OreUI::Debug::QueryInformation> getQueryInformation()
const;
213 MCAPI
void* $ctor(::OreUI::Detail::Binder& binder);
225 MCAPI
void $onReadyForBindings();
227 MCAPI
void $onSuspend();
229 MCFOLD
void $onBindingsReleased();
231 MCAPI
void $update(
double const time);
Definition IHandlerFactory.h:7
Definition QueryRegistry.h:19
Definition QueryRegistry.h:17
Definition QueryRegistry.h:7
static MCAPI void ** $vftable()
Definition QueryRegistry.h:25