LeviLamina
Loading...
Searching...
No Matches
ImguiProfiler.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
7#include "mc/platform/threading/Mutex.h"
8#include "mc/world/level/chunk/AverageTracker.h"
9#include "mc/world/level/chunk/TimeAccumulator.h"
10
11struct ImguiProfiler : public ::Bedrock::EnableNonOwnerReferences {
12public:
13 // ImguiProfiler inner types declare
14 // clang-format off
15 struct Record;
16 struct RecordGroup;
17 class Timer;
18 class ManualTimer;
19 class ScopedTimer;
20 // clang-format on
21
22 // ImguiProfiler inner types define
23 struct Record {
24 public:
25 // member variables
26 // NOLINTBEGIN
27 ::ll::TypedStorage<8, 8, char const*> mGroup;
28 ::ll::TypedStorage<8, 8, char const*> mName;
29 ::ll::TypedStorage<1, 1, bool> mIsClient;
30 ::ll::TypedStorage<8, 8, ::std::chrono::nanoseconds> mElapsed;
31 // NOLINTEND
32 };
33
34 struct RecordGroup {
35 public:
36 // RecordGroup inner types declare
37 // clang-format off
38 struct Record;
39 struct FullStackRecord;
40 // clang-format on
41
42 // RecordGroup inner types define
43 enum class SortType : int {
44 AverageTimeClient = 0,
45 CountTimeClient = 1,
46 TotalTimeClient = 2,
47 AverageTimeServer = 3,
48 CountTimeServer = 4,
49 TotalTimeServer = 5,
50 };
51
52 struct Record {
53 public:
54 // member variables
55 // NOLINTBEGIN
56 ::ll::TypedStorage<8, 24, ::TimeAccumulator> mTimeAccumulator;
57 ::ll::TypedStorage<8, 48, ::AverageTracker> mAverageTracker;
58 // NOLINTEND
59
60 public:
61 // member functions
62 // NOLINTBEGIN
63 MCAPI ~Record();
64 // NOLINTEND
65
66 public:
67 // destructor thunk
68 // NOLINTBEGIN
69 MCFOLD void $dtor();
70 // NOLINTEND
71 };
72
73 struct FullStackRecord {
74 public:
75 // member variables
76 // NOLINTBEGIN
77 ::ll::TypedStorage<8, 32, ::std::string> mName;
78 ::ll::TypedStorage<1, 1, bool> bUseAverageTracker;
79 ::ll::TypedStorage<8, 72, ::ImguiProfiler::RecordGroup::Record> mClient;
80 ::ll::TypedStorage<8, 72, ::ImguiProfiler::RecordGroup::Record> mServer;
81 // NOLINTEND
82
83 public:
84 // prevent constructor by default
85 FullStackRecord& operator=(FullStackRecord const&);
86 FullStackRecord();
87
88 public:
89 // member functions
90 // NOLINTBEGIN
91 MCAPI FullStackRecord(::ImguiProfiler::RecordGroup::FullStackRecord const&);
92
93 MCAPI ::ImguiProfiler::RecordGroup::FullStackRecord&
95
96 MCAPI ~FullStackRecord();
97 // NOLINTEND
98
99 public:
100 // constructor thunks
101 // NOLINTBEGIN
102 MCAPI void* $ctor(::ImguiProfiler::RecordGroup::FullStackRecord const&);
103 // NOLINTEND
104
105 public:
106 // destructor thunk
107 // NOLINTBEGIN
108 MCAPI void $dtor();
109 // NOLINTEND
110 };
111
112 public:
113 // member variables
114 // NOLINTBEGIN
115 ::ll::TypedStorage<8, 24, ::std::vector<::ImguiProfiler::RecordGroup::FullStackRecord>> mRecords;
116 ::ll::TypedStorage<4, 4, ::ImguiProfiler::RecordGroup::SortType> mSortType;
117 // NOLINTEND
118
119 public:
120 // member functions
121 // NOLINTBEGIN
122 MCAPI bool isGreaterThan(
125 );
126
127 MCAPI ::ImguiProfiler::RecordGroup::FullStackRecord& operator[](::std::string const& name);
128 // NOLINTEND
129 };
130
131 class Timer {
132 public:
133 // Timer inner types declare
134 // clang-format off
135 struct Signature;
136 // clang-format on
137
138 // Timer inner types define
139 struct Signature {
140 public:
141 // member variables
142 // NOLINTBEGIN
143 ::ll::TypedStorage<8, 8, char const*> mGroup;
144 ::ll::TypedStorage<8, 8, char const*> mName;
145 // NOLINTEND
146 };
147
148 public:
149 // member variables
150 // NOLINTBEGIN
151 ::ll::TypedStorage<8, 8, char const*> mGroup;
152 ::ll::TypedStorage<8, 8, char const*> mName;
153 ::ll::TypedStorage<1, 1, bool> mIsClient;
154 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mStart;
155 // NOLINTEND
156
157 public:
158 // virtual functions
159 // NOLINTBEGIN
160 virtual ~Timer();
161 // NOLINTEND
162
163 public:
164 // destructor thunk
165 // NOLINTBEGIN
166 MCFOLD void $dtor();
167 // NOLINTEND
168
169 public:
170 // vftables
171 // NOLINTBEGIN
172 MCNAPI static void** $vftable();
173 // NOLINTEND
174 };
175
176 class ManualTimer : public ::ImguiProfiler::Timer {
177 public:
178 // member variables
179 // NOLINTBEGIN
180 ::ll::TypedStorage<1, 1, bool> mHasAddedRecord;
181 // NOLINTEND
182
183 public:
184 // prevent constructor by default
185 ManualTimer();
186
187 public:
188 // member functions
189 // NOLINTBEGIN
190 MCAPI ManualTimer(char const* group, char const* name, bool isClient);
191
192 MCAPI void mark();
193 // NOLINTEND
194
195 public:
196 // constructor thunks
197 // NOLINTBEGIN
198 MCAPI void* $ctor(char const* group, char const* name, bool isClient);
199 // NOLINTEND
200
201 public:
202 // vftables
203 // NOLINTBEGIN
204 MCNAPI static void** $vftable();
205 // NOLINTEND
206 };
207
208 class ScopedTimer : public ::ImguiProfiler::Timer {
209 public:
210 // prevent constructor by default
211 ScopedTimer();
212
213 public:
214 // virtual functions
215 // NOLINTBEGIN
216 virtual ~ScopedTimer() /*override*/;
217 // NOLINTEND
218
219 public:
220 // member functions
221 // NOLINTBEGIN
222 MCAPI ScopedTimer(char const* group, char const* name, bool isClient);
223 // NOLINTEND
224
225 public:
226 // constructor thunks
227 // NOLINTBEGIN
228 MCAPI void* $ctor(char const* group, char const* name, bool isClient);
229 // NOLINTEND
230
231 public:
232 // destructor thunk
233 // NOLINTBEGIN
234 MCAPI void $dtor();
235 // NOLINTEND
236
237 public:
238 // vftables
239 // NOLINTBEGIN
240 MCNAPI static void** $vftable();
241 // NOLINTEND
242 };
243
244public:
245 // member variables
246 // NOLINTBEGIN
247 ::ll::TypedStorage<8, 16, ::std::map<::std::string, ::ImguiProfiler::RecordGroup>> mRecordGroups;
248 ::ll::TypedStorage<8, 80, ::Bedrock::Threading::Mutex> mRecordGroupMutex;
249 // NOLINTEND
250
251public:
252 // virtual functions
253 // NOLINTBEGIN
254 virtual ~ImguiProfiler() /*override*/;
255 // NOLINTEND
256
257public:
258 // member functions
259 // NOLINTBEGIN
260 MCAPI ImguiProfiler();
261
262 MCAPI ::TimeAccumulator
263 getTimeAccumulator(::std::string const& group, ::std::string const& name, bool isClientSide);
264
265 MCAPI void reset();
266
267 MCAPI void update();
268 // NOLINTEND
269
270public:
271 // static functions
272 // NOLINTBEGIN
273 MCAPI static void addRecord(::ImguiProfiler::Record&& record);
274 // NOLINTEND
275
276public:
277 // static variables
278 // NOLINTBEGIN
279 MCAPI static ::std::vector<::ImguiProfiler::Record>& sPendingRecords();
280
281 MCAPI static int& sProduceRecords();
282
283 MCAPI static ::Bedrock::Threading::Mutex& sRecordMutex();
284 // NOLINTEND
285
286public:
287 // constructor thunks
288 // NOLINTBEGIN
289 MCAPI void* $ctor();
290 // NOLINTEND
291
292public:
293 // destructor thunk
294 // NOLINTBEGIN
295 MCAPI void $dtor();
296 // NOLINTEND
297
298public:
299 // vftables
300 // NOLINTBEGIN
301 MCNAPI static void** $vftable();
302 // NOLINTEND
303};
Definition EnableNonOwnerReferences.h:7
Definition ImguiProfiler.h:176
static MCAPI void ** $vftable()
Definition ImguiProfiler.h:208
static MCAPI void ** $vftable()
Definition ImguiProfiler.h:131
static MCAPI void ** $vftable()
Definition ImguiProfiler.h:73
Definition ImguiProfiler.h:52
Definition ImguiProfiler.h:34
Definition ImguiProfiler.h:23
Definition ImguiProfiler.h:139
static MCAPI void ** $vftable()