Skip to content
LeviMC
English
AutoLightDark
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/world/level/chunk/AverageTracker.h"
8#include "mc/world/level/chunk/TimeAccumulator.h"
9
11public:
12 // ImguiProfiler inner types declare
13 // clang-format off
14 struct Record;
15 struct RecordGroup;
16 class Timer;
17 class ManualTimer;
18 class ScopedTimer;
19 // clang-format on
20
21 // ImguiProfiler inner types define
22 struct Record {
23 public:
24 // member variables
25 // NOLINTBEGIN
26 ::ll::TypedStorage<8, 8, char const*> mGroup;
27 ::ll::TypedStorage<8, 8, char const*> mName;
28 ::ll::TypedStorage<1, 1, bool> mIsClient;
29 ::ll::TypedStorage<8, 8, ::std::chrono::nanoseconds> mElapsed;
30 // NOLINTEND
31 };
32
33 struct RecordGroup {
34 public:
35 // RecordGroup inner types declare
36 // clang-format off
37 struct Record;
38 struct FullStackRecord;
39 // clang-format on
40
41 // RecordGroup inner types define
42 enum class SortType : int {
43 AverageTimeClient = 0,
44 CountTimeClient = 1,
45 TotalTimeClient = 2,
46 AverageTimeServer = 3,
47 CountTimeServer = 4,
48 TotalTimeServer = 5,
49 };
50
51 struct Record {
52 public:
53 // member variables
54 // NOLINTBEGIN
55 ::ll::TypedStorage<8, 24, ::TimeAccumulator> mTimeAccumulator;
56 ::ll::TypedStorage<8, 48, ::AverageTracker> mAverageTracker;
57 // NOLINTEND
58 };
59
61 public:
62 // member variables
63 // NOLINTBEGIN
64 ::ll::TypedStorage<8, 32, ::std::string> mName;
65 ::ll::TypedStorage<1, 1, bool> bUseAverageTracker;
66 ::ll::TypedStorage<8, 72, ::ImguiProfiler::RecordGroup::Record> mClient;
67 ::ll::TypedStorage<8, 72, ::ImguiProfiler::RecordGroup::Record> mServer;
68 // NOLINTEND
69 };
70
71 public:
72 // member variables
73 // NOLINTBEGIN
74 ::ll::TypedStorage<8, 24, ::std::vector<::ImguiProfiler::RecordGroup::FullStackRecord>> mRecords;
75 ::ll::TypedStorage<4, 4, ::ImguiProfiler::RecordGroup::SortType> mSortType;
76 // NOLINTEND
77
78 public:
79 // member functions
80 // NOLINTBEGIN
81 MCNAPI ::ImguiProfiler::RecordGroup::FullStackRecord& operator[](::std::string const& name);
82 // NOLINTEND
83 };
84
85 class Timer {
86 public:
87 // Timer inner types declare
88 // clang-format off
89 struct Signature;
90 // clang-format on
91
92 // Timer inner types define
93 struct Signature {
94 public:
95 // member variables
96 // NOLINTBEGIN
97 ::ll::TypedStorage<8, 8, char const*> mGroup;
98 ::ll::TypedStorage<8, 8, char const*> mName;
99 // NOLINTEND
100 };
101
102 public:
103 // member variables
104 // NOLINTBEGIN
105 ::ll::TypedStorage<8, 8, char const*> mGroup;
106 ::ll::TypedStorage<8, 8, char const*> mName;
107 ::ll::TypedStorage<1, 1, bool> mIsClient;
108 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mStart;
109 // NOLINTEND
110
111 public:
112 // virtual functions
113 // NOLINTBEGIN
114 virtual ~Timer() = default;
115 // NOLINTEND
116 };
117
119 public:
120 // member variables
121 // NOLINTBEGIN
122 ::ll::TypedStorage<1, 1, bool> mHasAddedRecord;
123 // NOLINTEND
124
125 public:
126 // vftables
127 // NOLINTBEGIN
128 MCNAPI static void** $vftable();
129 // NOLINTEND
130 };
131
133 public:
134 // virtual functions
135 // NOLINTBEGIN
136 virtual ~ScopedTimer() /*override*/;
137 // NOLINTEND
138
139 public:
140 // destructor thunk
141 // NOLINTBEGIN
142 MCNAPI void $dtor();
143 // NOLINTEND
144
145 public:
146 // vftables
147 // NOLINTBEGIN
148 MCNAPI static void** $vftable();
149 // NOLINTEND
150 };
151
152public:
153 // member variables
154 // NOLINTBEGIN
155 ::ll::TypedStorage<8, 16, ::std::map<::std::string, ::ImguiProfiler::RecordGroup>> mRecordGroups;
156 ::ll::TypedStorage<8, 80, ::std::mutex> mRecordGroupMutex;
157 // NOLINTEND
158
159public:
160 // virtual functions
161 // NOLINTBEGIN
162 virtual ~ImguiProfiler() /*override*/ = default;
163 // NOLINTEND
164
165public:
166 // member functions
167 // NOLINTBEGIN
168#ifdef LL_PLAT_S
169 MCNAPI ImguiProfiler();
170#endif
171
172 MCNAPI ::TimeAccumulator
173 getTimeAccumulator(::std::string const& group, ::std::string const& name, bool isClientSide);
174
175#ifdef LL_PLAT_S
176 MCNAPI void update();
177#endif
178 // NOLINTEND
179
180public:
181 // static functions
182 // NOLINTBEGIN
183 MCNAPI static void addRecord(::ImguiProfiler::Record&& record);
184 // NOLINTEND
185
186public:
187 // static variables
188 // NOLINTBEGIN
189 MCNAPI static ::std::vector<::ImguiProfiler::Record>& sPendingRecords();
190
191 MCNAPI static int& sProduceRecords();
192
193 MCNAPI static ::std::mutex& sRecordMutex();
194 // NOLINTEND
195
196public:
197 // constructor thunks
198 // NOLINTBEGIN
199#ifdef LL_PLAT_S
200 MCNAPI void* $ctor();
201#endif
202 // NOLINTEND
203};
Definition EnableNonOwnerReferences.h:7
Definition ImguiProfiler.h:118
static MCAPI void ** $vftable()
Definition ImguiProfiler.h:132
static MCAPI void ** $vftable()
Definition ImguiProfiler.h:85
Definition ImguiProfiler.h:60
Definition ImguiProfiler.h:51
Definition ImguiProfiler.h:33
MCAPI::ImguiProfiler::RecordGroup::FullStackRecord & operator[](::std::string const &name)
Definition ImguiProfiler.h:22
Definition ImguiProfiler.h:93
Definition ImguiProfiler.h:10
static MCAPI int & sProduceRecords()
MCAPI::TimeAccumulator getTimeAccumulator(::std::string const &group, ::std::string const &name, bool isClientSide)
static MCAPI ::std::mutex & sRecordMutex()
static MCAPI ::std::vector<::ImguiProfiler::Record > & sPendingRecords()
static MCAPI void addRecord(::ImguiProfiler::Record &&record)