LeviLamina
Loading...
Searching...
No Matches
DataStoreSync.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/pub_sub/Publisher.h"
7
8// auto generated forward declare list
9// clang-format off
10namespace Bedrock::DDUI { struct DataStoreChange; }
11namespace Bedrock::DDUI { struct DataStoreRemoval; }
12namespace Bedrock::DDUI { struct DataStoreUpdate; }
13namespace Bedrock::DDUI::PathUtility { struct PathQueryError; }
14namespace Bedrock::PubSub { class Subscription; }
15namespace Bedrock::PubSub::ThreadModel { struct SingleThreaded; }
16namespace cereal { class DynamicValue; }
17// clang-format on
18
19namespace Bedrock::DDUI {
20
21class DataStoreSync {
22public:
23 // DataStoreSync inner types define
24 using PropertyChangePublisher = ::Bedrock::PubSub::
26
27public:
28 // member variables
29 // NOLINTBEGIN
30 ::ll::TypedStorage<
31 8,
32 64,
33 ::std::unordered_map<::std::string, ::std::unordered_map<::std::string, ::cereal::DynamicValue>>>
34 mDataStores;
35 ::ll::TypedStorage<
36 8,
37 64,
38 ::std::unordered_map<
39 ::std::string,
40 ::std::unordered_map<
41 ::std::string,
42 ::std::unordered_map<
43 ::std::string,
45 void(::cereal::DynamicValue const*),
47 0>,
48 ::std::hash<::std::string>,
49 ::std::equal_to<::std::string>>>>>
50 mPropertyPathPublishers;
51 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::unordered_map<::std::string, uint>>>
52 mPropertyUpdateCount;
53 ::ll::TypedStorage<
54 8,
55 64,
56 ::std::unordered_map<
57 ::std::string,
58 ::std::unordered_map<
59 ::std::string,
60 ::std::unordered_map<::std::string, uint, ::std::hash<::std::string>, ::std::equal_to<::std::string>>>>>
61 mPathUpdateCount;
62 ::ll::TypedStorage<
63 8,
64 24,
65 ::std::vector<::std::variant<
69 mOutgoingChanges;
70 // NOLINTEND
71
72public:
73 // virtual functions
74 // NOLINTBEGIN
75 virtual ~DataStoreSync();
76
77 virtual void clear(::std::string const& datastoreName, bool addToOutgoingChanges);
78
79 virtual void assertAppropriateThread() const = 0;
80 // NOLINTEND
81
82public:
83 // member functions
84 // NOLINTBEGIN
85 MCAPI DataStoreSync();
86
87 MCAPI ::cereal::DynamicValue const* get(::std::string const& datastoreName, ::std::string const& property) const;
88
89 MCAPI ::nonstd::
90 expected<::gsl::not_null<::cereal::DynamicValue const*>, ::Bedrock::DDUI::PathUtility::PathQueryError>
91 getPath(::std::string const& dataStoreName, ::std::string const& property, ::std::string const& path) const;
92
93 MCAPI ::Bedrock::PubSub::Subscription listen(
94 ::std::string const& datastoreName,
95 ::std::string const& property,
96 ::std::string const& path,
97 ::std::function<void(::cereal::DynamicValue const*)> onChange
98 );
99
100 MCAPI void
101 set(::std::string const& datastoreName,
102 ::std::string const& property,
103 ::cereal::DynamicValue const& obj,
104 bool addToOutgoingChanges);
105
106 MCAPI ::nonstd::expected<void, ::Bedrock::DDUI::PathUtility::PathQueryError> setObjectPath(
107 ::std::string const& dataStoreName,
108 ::std::string const& propertyName,
109 ::std::string const& path,
110 ::cereal::DynamicValue const& currentData,
111 ::std::string const& newDataString
112 );
113
114 MCAPI ::nonstd::expected<void, ::Bedrock::DDUI::PathUtility::PathQueryError> setPath(
115 ::std::string const& dataStoreName,
116 ::std::string const& propertyName,
117 ::std::string const& path,
118 ::std::variant<double, bool, ::std::string> const& data,
119 bool addToOutgoing,
120 bool allowStringToObjectUpdates
121 );
122 // NOLINTEND
123
124public:
125 // constructor thunks
126 // NOLINTBEGIN
127 MCAPI void* $ctor();
128 // NOLINTEND
129
130public:
131 // destructor thunk
132 // NOLINTBEGIN
133 MCAPI void $dtor();
134 // NOLINTEND
135
136public:
137 // virtual function thunks
138 // NOLINTBEGIN
139 MCAPI void $clear(::std::string const& datastoreName, bool addToOutgoingChanges);
140
141
142 // NOLINTEND
143
144public:
145 // vftables
146 // NOLINTBEGIN
147 MCNAPI static void** $vftable();
148 // NOLINTEND
149};
150
151} // namespace Bedrock::DDUI
static MCAPI void ** $vftable()
Definition Publisher.h:8
Definition Subscription.h:10
Definition DynamicValue.h:12
Definition DataStoreChange.h:10
Definition DataStoreRemoval.h:7
Definition DataStoreUpdate.h:7
Definition PathQueryError.h:7