VR-Vantage 3.0 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Tracy.hpp
Go to the documentation of this file.
1 #ifndef __TRACY_HPP__
2 #define __TRACY_HPP__
3 
4 #include "common/TracyColor.hpp"
5 #include "common/TracySystem.hpp"
6 
7 #ifndef TRACY_ENABLE
8 
9 #define ZoneNamed(x,y)
10 #define ZoneNamedN(x,y,z)
11 #define ZoneNamedC(x,y,z)
12 #define ZoneNamedNC(x,y,z,w)
13 
14 #define ZoneTransient(x,y)
15 #define ZoneTransientN(x,y,z)
16 
17 #define ZoneScoped
18 #define ZoneScopedN(x)
19 #define ZoneScopedC(x)
20 #define ZoneScopedNC(x,y)
21 
22 #define ZoneText(x,y)
23 #define ZoneTextV(x,y,z)
24 #define ZoneName(x,y)
25 #define ZoneNameV(x,y,z)
26 #define ZoneColor(x)
27 #define ZoneColorV(x,y)
28 #define ZoneValue(x)
29 #define ZoneValueV(x,y)
30 #define ZoneIsActive false
31 #define ZoneIsActiveV(x) false
32 
33 #define FrameMark
34 #define FrameMarkNamed(x)
35 #define FrameMarkStart(x)
36 #define FrameMarkEnd(x)
37 
38 #define FrameImage(x,y,z,w,a)
39 
40 #define TracyLockable( type, varname ) type varname;
41 #define TracyLockableN( type, varname, desc ) type varname;
42 #define TracySharedLockable( type, varname ) type varname;
43 #define TracySharedLockableN( type, varname, desc ) type varname;
44 #define LockableBase( type ) type
45 #define SharedLockableBase( type ) type
46 #define LockMark(x) (void)x;
47 #define LockableName(x,y,z);
48 
49 #define TracyPlot(x,y)
50 #define TracyPlotConfig(x,y)
51 
52 #define TracyMessage(x,y)
53 #define TracyMessageL(x)
54 #define TracyMessageC(x,y,z)
55 #define TracyMessageLC(x,y)
56 #define TracyAppInfo(x,y)
57 
58 #define TracyAlloc(x,y)
59 #define TracyFree(x)
60 #define TracySecureAlloc(x,y)
61 #define TracySecureFree(x)
62 
63 #define TracyAllocN(x,y,z)
64 #define TracyFreeN(x,y)
65 #define TracySecureAllocN(x,y,z)
66 #define TracySecureFreeN(x,y)
67 
68 #define ZoneNamedS(x,y,z)
69 #define ZoneNamedNS(x,y,z,w)
70 #define ZoneNamedCS(x,y,z,w)
71 #define ZoneNamedNCS(x,y,z,w,a)
72 
73 #define ZoneTransientS(x,y,z)
74 #define ZoneTransientNS(x,y,z,w)
75 
76 #define ZoneScopedS(x)
77 #define ZoneScopedNS(x,y)
78 #define ZoneScopedCS(x,y)
79 #define ZoneScopedNCS(x,y,z)
80 
81 #define TracyAllocS(x,y,z)
82 #define TracyFreeS(x,y)
83 #define TracySecureAllocS(x,y,z)
84 #define TracySecureFreeS(x,y)
85 
86 #define TracyAllocNS(x,y,z,w)
87 #define TracyFreeNS(x,y,z)
88 #define TracySecureAllocNS(x,y,z,w)
89 #define TracySecureFreeNS(x,y,z)
90 
91 #define TracyMessageS(x,y,z)
92 #define TracyMessageLS(x,y)
93 #define TracyMessageCS(x,y,z,w)
94 #define TracyMessageLCS(x,y,z)
95 
96 #define TracyParameterRegister(x)
97 #define TracyParameterSetup(x,y,z,w)
98 #define TracyIsConnected false
99 
100 #else
101 
102 #include <string.h>
103 
104 #include "client/TracyLock.hpp"
105 #include "client/TracyProfiler.hpp"
106 #include "client/TracyScoped.hpp"
107 
108 #if defined TRACY_USE_CONSTEXPR
109 #if defined TRACY_HAS_CALLSTACK && defined TRACY_CALLSTACK
110 # define ZoneNamed( varname, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), TRACY_CALLSTACK, active );
111 # define ZoneNamedN( varname, name, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { name, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), TRACY_CALLSTACK, active );
112 # define ZoneNamedC( varname, color, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, color }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), TRACY_CALLSTACK, active );
113 # define ZoneNamedNC( varname, name, color, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { name, __FUNCTION__, __FILE__, (uint32_t)__LINE__, color }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), TRACY_CALLSTACK, active );
114 
115 # define ZoneTransient( varname, active ) tracy::ScopedZone varname( __LINE__, __FILE__, strlen( __FILE__ ), __FUNCTION__, strlen( __FUNCTION__ ), nullptr, 0, TRACY_CALLSTACK, active );
116 # define ZoneTransientN( varname, name, active ) tracy::ScopedZone varname( __LINE__, __FILE__, strlen( __FILE__ ), __FUNCTION__, strlen( __FUNCTION__ ), name, strlen( name ), TRACY_CALLSTACK, active );
117 #else
118 # define ZoneNamed( varname, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), active );
119 # define ZoneNamedN( varname, name, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { name, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), active );
120 # define ZoneNamedC( varname, color, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, color }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), active );
121 # define ZoneNamedNC( varname, name, color, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { name, __FUNCTION__, __FILE__, (uint32_t)__LINE__, color }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), active );
122 
123 # define ZoneTransient( varname, active ) tracy::ScopedZone varname( __LINE__, __FILE__, strlen( __FILE__ ), __FUNCTION__, strlen( __FUNCTION__ ), nullptr, 0, active );
124 # define ZoneTransientN( varname, name, active ) tracy::ScopedZone varname( __LINE__, __FILE__, strlen( __FILE__ ), __FUNCTION__, strlen( __FUNCTION__ ), name, strlen( name ), active );
125 #endif
126 #else
127 #if defined TRACY_HAS_CALLSTACK && defined TRACY_CALLSTACK
128 # define ZoneNamed( varname, active ) static tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), TRACY_CALLSTACK, active );
129 # define ZoneNamedN( varname, name, active ) static tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { name, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), TRACY_CALLSTACK, active );
130 # define ZoneNamedC( varname, color, active ) static tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, color }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), TRACY_CALLSTACK, active );
131 # define ZoneNamedNC( varname, name, color, active ) static tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { name, __FUNCTION__, __FILE__, (uint32_t)__LINE__, color }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), TRACY_CALLSTACK, active );
132 
133 # define ZoneTransient( varname, active ) tracy::ScopedZone varname( __LINE__, __FILE__, strlen( __FILE__ ), __FUNCTION__, strlen( __FUNCTION__ ), nullptr, 0, TRACY_CALLSTACK, active );
134 # define ZoneTransientN( varname, name, active ) tracy::ScopedZone varname( __LINE__, __FILE__, strlen( __FILE__ ), __FUNCTION__, strlen( __FUNCTION__ ), name, strlen( name ), TRACY_CALLSTACK, active );
135 #else
136 # define ZoneNamed( varname, active ) static tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), active );
137 # define ZoneNamedN( varname, name, active ) static tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { name, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), active );
138 # define ZoneNamedC( varname, color, active ) static tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, color }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), active );
139 # define ZoneNamedNC( varname, name, color, active ) static tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { name, __FUNCTION__, __FILE__, (uint32_t)__LINE__, color }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), active );
140 
141 # define ZoneTransient( varname, active ) tracy::ScopedZone varname( __LINE__, __FILE__, strlen( __FILE__ ), __FUNCTION__, strlen( __FUNCTION__ ), nullptr, 0, active );
142 # define ZoneTransientN( varname, name, active ) tracy::ScopedZone varname( __LINE__, __FILE__, strlen( __FILE__ ), __FUNCTION__, strlen( __FUNCTION__ ), name, strlen( name ), active );
143 #endif
144 #endif
145 
146 #define ZoneScoped ZoneNamed( ___tracy_scoped_zone, true )
147 #define ZoneScopedN( name ) ZoneNamedN( ___tracy_scoped_zone, name, true )
148 #define ZoneScopedC( color ) ZoneNamedC( ___tracy_scoped_zone, color, true )
149 #define ZoneScopedNC( name, color ) ZoneNamedNC( ___tracy_scoped_zone, name, color, true )
150 
151 #define ZoneText( txt, size ) ___tracy_scoped_zone.Text( txt, size );
152 #define ZoneTextV( varname, txt, size ) varname.Text( txt, size );
153 #define ZoneName( txt, size ) ___tracy_scoped_zone.Name( txt, size );
154 #define ZoneNameV( varname, txt, size ) varname.Name( txt, size );
155 #define ZoneColor( color ) ___tracy_scoped_zone.Color( color );
156 #define ZoneColorV( varname, color ) varname.Color( color );
157 #define ZoneValue( value ) ___tracy_scoped_zone.Value( value );
158 #define ZoneValueV( varname, value ) varname.Value( value );
159 #define ZoneIsActive ___tracy_scoped_zone.IsActive()
160 #define ZoneIsActiveV( varname ) varname.IsActive()
161 
162 #define FrameMark tracy::Profiler::SendFrameMark( nullptr );
163 #define FrameMarkNamed( name ) tracy::Profiler::SendFrameMark( name );
164 #define FrameMarkStart( name ) tracy::Profiler::SendFrameMark( name, tracy::QueueType::FrameMarkMsgStart );
165 #define FrameMarkEnd( name ) tracy::Profiler::SendFrameMark( name, tracy::QueueType::FrameMarkMsgEnd );
166 
167 #define FrameImage( image, width, height, offset, flip ) tracy::Profiler::SendFrameImage( image, width, height, offset, flip );
168 
169 #define TracyLockable( type, varname ) tracy::Lockable<type> varname { [] () -> const tracy::SourceLocationData* { static constexpr tracy::SourceLocationData srcloc { nullptr, #type " " #varname, __FILE__, __LINE__, 0 }; return &srcloc; }() };
170 #define TracyLockableN( type, varname, desc ) tracy::Lockable<type> varname { [] () -> const tracy::SourceLocationData* { static constexpr tracy::SourceLocationData srcloc { nullptr, desc, __FILE__, __LINE__, 0 }; return &srcloc; }() };
171 #define TracySharedLockable( type, varname ) tracy::SharedLockable<type> varname { [] () -> const tracy::SourceLocationData* { static constexpr tracy::SourceLocationData srcloc { nullptr, #type " " #varname, __FILE__, __LINE__, 0 }; return &srcloc; }() };
172 #define TracySharedLockableN( type, varname, desc ) tracy::SharedLockable<type> varname { [] () -> const tracy::SourceLocationData* { static constexpr tracy::SourceLocationData srcloc { nullptr, desc, __FILE__, __LINE__, 0 }; return &srcloc; }() };
173 #define LockableBase( type ) tracy::Lockable<type>
174 #define SharedLockableBase( type ) tracy::SharedLockable<type>
175 #define LockMark( varname ) static constexpr tracy::SourceLocationData __tracy_lock_location_##varname { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; varname.Mark( &__tracy_lock_location_##varname );
176 #define LockableName( varname, txt, size ) varname.CustomName( txt, size );
177 
178 #define TracyPlot( name, val ) tracy::Profiler::PlotData( name, val );
179 #define TracyPlotConfig( name, type ) tracy::Profiler::ConfigurePlot( name, type );
180 
181 #define TracyAppInfo( txt, size ) tracy::Profiler::MessageAppInfo( txt, size );
182 
183 #if defined TRACY_HAS_CALLSTACK && defined TRACY_CALLSTACK
184 # define TracyMessage( txt, size ) tracy::Profiler::Message( txt, size, TRACY_CALLSTACK );
185 # define TracyMessageL( txt ) tracy::Profiler::Message( txt, TRACY_CALLSTACK );
186 # define TracyMessageC( txt, size, color ) tracy::Profiler::MessageColor( txt, size, color, TRACY_CALLSTACK );
187 # define TracyMessageLC( txt, color ) tracy::Profiler::MessageColor( txt, color, TRACY_CALLSTACK );
188 
189 # define TracyAlloc( ptr, size ) tracy::Profiler::MemAllocCallstack( ptr, size, TRACY_CALLSTACK, false );
190 # define TracyFree( ptr ) tracy::Profiler::MemFreeCallstack( ptr, TRACY_CALLSTACK, false );
191 # define TracySecureAlloc( ptr, size ) tracy::Profiler::MemAllocCallstack( ptr, size, TRACY_CALLSTACK, true );
192 # define TracySecureFree( ptr ) tracy::Profiler::MemFreeCallstack( ptr, TRACY_CALLSTACK, true );
193 
194 # define TracyAllocN( ptr, size, name ) tracy::Profiler::MemAllocCallstackNamed( ptr, size, TRACY_CALLSTACK, false, name );
195 # define TracyFreeN( ptr, name ) tracy::Profiler::MemFreeCallstackNamed( ptr, TRACY_CALLSTACK, false, name );
196 # define TracySecureAllocN( ptr, size, name ) tracy::Profiler::MemAllocCallstackNamed( ptr, size, TRACY_CALLSTACK, true, name );
197 # define TracySecureFreeN( ptr, name ) tracy::Profiler::MemFreeCallstackNamed( ptr, TRACY_CALLSTACK, true, name );
198 #else
199 # define TracyMessage( txt, size ) tracy::Profiler::Message( txt, size, 0 );
200 # define TracyMessageL( txt ) tracy::Profiler::Message( txt, 0 );
201 # define TracyMessageC( txt, size, color ) tracy::Profiler::MessageColor( txt, size, color, 0 );
202 # define TracyMessageLC( txt, color ) tracy::Profiler::MessageColor( txt, color, 0 );
203 
204 # define TracyAlloc( ptr, size ) tracy::Profiler::MemAlloc( ptr, size, false );
205 # define TracyFree( ptr ) tracy::Profiler::MemFree( ptr, false );
206 # define TracySecureAlloc( ptr, size ) tracy::Profiler::MemAlloc( ptr, size, true );
207 # define TracySecureFree( ptr ) tracy::Profiler::MemFree( ptr, true );
208 
209 # define TracyAllocN( ptr, size, name ) tracy::Profiler::MemAllocNamed( ptr, size, false, name );
210 # define TracyFreeN( ptr, name ) tracy::Profiler::MemFreeNamed( ptr, false, name );
211 # define TracySecureAllocN( ptr, size, name ) tracy::Profiler::MemAllocNamed( ptr, size, true, name );
212 # define TracySecureFreeN( ptr, name ) tracy::Profiler::MemFreeNamed( ptr, true, name );
213 #endif
214 
215 #ifdef TRACY_HAS_CALLSTACK
216 # define ZoneNamedS( varname, depth, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), depth, active );
217 # define ZoneNamedNS( varname, name, depth, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { name, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), depth, active );
218 # define ZoneNamedCS( varname, color, depth, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, color }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), depth, active );
219 # define ZoneNamedNCS( varname, name, color, depth, active ) static constexpr tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { name, __FUNCTION__, __FILE__, (uint32_t)__LINE__, color }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), depth, active );
220 
221 # define ZoneTransientS( varname, depth, active ) tracy::ScopedZone varname( __LINE__, __FILE__, strlen( __FILE__ ), __FUNCTION__, strlen( __FUNCTION__ ), nullptr, 0, depth, active );
222 # define ZoneTransientNS( varname, name, depth, active ) tracy::ScopedZone varname( __LINE__, __FILE__, strlen( __FILE__ ), __FUNCTION__, strlen( __FUNCTION__ ), name, strlen( name ), depth, active );
223 
224 # define ZoneScopedS( depth ) ZoneNamedS( ___tracy_scoped_zone, depth, true )
225 # define ZoneScopedNS( name, depth ) ZoneNamedNS( ___tracy_scoped_zone, name, depth, true )
226 # define ZoneScopedCS( color, depth ) ZoneNamedCS( ___tracy_scoped_zone, color, depth, true )
227 # define ZoneScopedNCS( name, color, depth ) ZoneNamedNCS( ___tracy_scoped_zone, name, color, depth, true )
228 
229 # define TracyAllocS( ptr, size, depth ) tracy::Profiler::MemAllocCallstack( ptr, size, depth, false );
230 # define TracyFreeS( ptr, depth ) tracy::Profiler::MemFreeCallstack( ptr, depth, false );
231 # define TracySecureAllocS( ptr, size, depth ) tracy::Profiler::MemAllocCallstack( ptr, size, depth, true );
232 # define TracySecureFreeS( ptr, depth ) tracy::Profiler::MemFreeCallstack( ptr, depth, true );
233 
234 # define TracyAllocNS( ptr, size, depth, name ) tracy::Profiler::MemAllocCallstackNamed( ptr, size, depth, false, name );
235 # define TracyFreeNS( ptr, depth, name ) tracy::Profiler::MemFreeCallstackNamed( ptr, depth, false, name );
236 # define TracySecureAllocNS( ptr, size, depth, name ) tracy::Profiler::MemAllocCallstackNamed( ptr, size, depth, true, name );
237 # define TracySecureFreeNS( ptr, depth, name ) tracy::Profiler::MemFreeCallstackNamed( ptr, depth, true, name );
238 
239 # define TracyMessageS( txt, size, depth ) tracy::Profiler::Message( txt, size, depth );
240 # define TracyMessageLS( txt, depth ) tracy::Profiler::Message( txt, depth );
241 # define TracyMessageCS( txt, size, color, depth ) tracy::Profiler::MessageColor( txt, size, color, depth );
242 # define TracyMessageLCS( txt, color, depth ) tracy::Profiler::MessageColor( txt, color, depth );
243 #else
244 # define ZoneNamedS( varname, depth, active ) ZoneNamed( varname, active )
245 # define ZoneNamedNS( varname, name, depth, active ) ZoneNamedN( varname, name, active )
246 # define ZoneNamedCS( varname, color, depth, active ) ZoneNamedC( varname, color, active )
247 # define ZoneNamedNCS( varname, name, color, depth, active ) ZoneNamedNC( varname, name, color, active )
248 
249 # define ZoneTransientS( varname, depth, active ) ZoneTransient( varname, active )
250 # define ZoneTransientNS( varname, name, depth, active ) ZoneTransientN( varname, name, active )
251 
252 # define ZoneScopedS( depth ) ZoneScoped
253 # define ZoneScopedNS( name, depth ) ZoneScopedN( name )
254 # define ZoneScopedCS( color, depth ) ZoneScopedC( color )
255 # define ZoneScopedNCS( name, color, depth ) ZoneScopedNC( name, color )
256 
257 # define TracyAllocS( ptr, size, depth ) TracyAlloc( ptr, size )
258 # define TracyFreeS( ptr, depth ) TracyFree( ptr )
259 # define TracySecureAllocS( ptr, size, depth ) TracySecureAlloc( ptr, size )
260 # define TracySecureFreeS( ptr, depth ) TracySecureFree( ptr )
261 
262 # define TracyAllocNS( ptr, size, depth, name ) TracyAlloc( ptr, size, name )
263 # define TracyFreeNS( ptr, depth, name ) TracyFree( ptr, name )
264 # define TracySecureAllocNS( ptr, size, depth, name ) TracySecureAlloc( ptr, size, name )
265 # define TracySecureFreeNS( ptr, depth, name ) TracySecureFree( ptr, name )
266 
267 # define TracyMessageS( txt, size, depth ) TracyMessage( txt, size )
268 # define TracyMessageLS( txt, depth ) TracyMessageL( txt )
269 # define TracyMessageCS( txt, size, color, depth ) TracyMessageC( txt, size, color )
270 # define TracyMessageLCS( txt, color, depth ) TracyMessageLC( txt, color )
271 #endif
272 
273 #define TracyParameterRegister( cb ) tracy::Profiler::ParameterRegister( cb );
274 #define TracyParameterSetup( idx, name, isBool, val ) tracy::Profiler::ParameterSetup( idx, name, isBool, val );
275 #define TracyIsConnected tracy::GetProfiler().IsConnected()
276 
277 #endif
278 
279 #endif


Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)