27#ifndef FRAMEPRO_H_INCLUDED
28#define FRAMEPRO_H_INCLUDED
41 #define FRAMEPRO_FRAME_START() FramePro::FrameStart()
42 #define FRAMEPRO_SHUTDOWN() FramePro::Shutdown()
43 #define FRAMEPRO_SET_PORT(port) FramePro::SetPort(port)
44 #define FRAMEPRO_SESSION_INFO(name, value) FramePro::SendSessionInfo(name, value)
45 #define FRAMEPRO_SET_ALLOCATOR(p_allocator) FramePro::SetAllocator(p_allocator)
46 #define FRAMEPRO_SET_THREAD_NAME(name) FramePro::SetThreadName(name)
47 #define FRAMEPRO_SET_THREAD_ID_NAME(thread_id, name) FramePro::SetThreadName(thread_id, name)
48 #define FRAMEPRO_THREAD_ORDER(thread_name) FramePro::SetThreadOrder(FramePro::RegisterString(thread_name))
49 #define FRAMEPRO_REGISTER_STRING(str) FramePro::RegisterString(str)
50 #define FRAMEPRO_START_RECORDING(filename, context_switches, callstacks, max_file_size) FramePro::StartRecording(filename, context_switches, callstacks, max_file_size)
51 #define FRAMEPRO_STOP_RECORDING() FramePro::StopRecording()
52 #define FRAMEPRO_REGISTER_CONNECTION_CHANGED_CALLBACK(callback, context) FramePro::RegisterConnectionChangedCallback(callback, context)
53 #define FRAMEPRO_UNREGISTER_CONNECTION_CHANGED_CALLBACK(callback) FramePro::UnregisterConnectionChangedcallback(callback)
54 #define FRAMEPRO_SET_THREAD_PRIORITY(priority) FramePro::SetThreadPriority(priority)
55 #define FRAMEPRO_SET_THREAD_AFFINITY(affinity) FramePro::SetThreadAffinity(affinity)
56 #define FRAMEPRO_BLOCK_SOCKETS() FramePro::BlockSockets()
57 #define FRAMEPRO_UNBLOCK_SOCKETS() FramePro::UnblockSockets()
58 #define FRAMEPRO_CLEANUP_THREAD() FramePro::CleanupThread()
59 #define FRAMEPRO_THREAD_SCOPE(thread_name) FramePro::ThreadScope framepro_thread_scope(thread_name)
60 #define FRAMEPRO_LOG(message) FramePro::Log(message)
61 #define FRAMEPRO_COLOUR(r, g, b) ((FramePro::uint)((((FramePro::uint)((r)&0xff))<<16) | (((FramePro::uint)((g)&0xff))<<8) | ((b)&0xff)))
62 #define FRAMEPRO_SET_CONDITIONAL_SCOPE_MIN_TIME(microseconds) FramePro::SetConditionalScopeMinTimeInMicroseconds(microseconds)
65 #define FRAMEPRO_SCOPE() FramePro::TimerScope FRAMEPRO_UNIQUE(timer_scope)(FRAMEPRO_FUNCTION_NAME_LITERAL "|" FRAMEPRO_SOURCE_STRING)
66 #define FRAMEPRO_NAMED_SCOPE(name) FramePro::TimerScope FRAMEPRO_UNIQUE(timer_scope)(name "|" FRAMEPRO_SOURCE_STRING)
67 #define FRAMEPRO_NAMED_SCOPE_W(name) FramePro::TimerScopeW FRAMEPRO_UNIQUE(timer_scope)(name L"|" FRAMEPRO_SOURCE_STRING_W)
68 #define FRAMEPRO_ID_SCOPE(name_id) FramePro::IdTimerScope FRAMEPRO_UNIQUE(timer_scope)(name_id, FRAMEPRO_SOURCE_STRING)
69 #define FRAMEPRO_DYNAMIC_SCOPE(dynamic_string) FramePro::IdTimerScope FRAMEPRO_UNIQUE(timer_scope)(FramePro::IsConnected() ? FramePro::RegisterString(dynamic_string) : -1, FRAMEPRO_SOURCE_STRING)
70 #define FRAMEPRO_CONDITIONAL_SCOPE() FramePro::ConditionalTimerScope FRAMEPRO_UNIQUE(timer_scope)(FRAMEPRO_FUNCTION_NAME_LITERAL "|" FRAMEPRO_SOURCE_STRING)
71 #define FRAMEPRO_CONDITIONAL_ID_SCOPE(name) FramePro::ConditionalTimerScopeId FRAMEPRO_UNIQUE(timer_scope)(name, FRAMEPRO_SOURCE_STRING)
72 #define FRAMEPRO_CONDITIONAL_NAMED_SCOPE(name) FramePro::ConditionalTimerScope FRAMEPRO_UNIQUE(timer_scope)(name "|" FRAMEPRO_SOURCE_STRING)
73 #define FRAMEPRO_CONDITIONAL_NAMED_SCOPE_W(name) FramePro::ConditionalTimerScopeW FRAMEPRO_UNIQUE(timer_scope)(name L"|" FRAMEPRO_SOURCE_STRING_W)
74 #define FRAMEPRO_CONDITIONAL_BOOL_SCOPE(b) FramePro::ConditionalBoolTimerScope FRAMEPRO_UNIQUE(timer_scope)(FRAMEPRO_FUNCTION_NAME_LITERAL "|" FRAMEPRO_SOURCE_STRING, (b))
75 #define FRAMEPRO_CONDITIONAL_BOOL_ID_SCOPE(name, b) FramePro::ConditionalBoolTimerScopeId FRAMEPRO_UNIQUE(timer_scope)(name, FRAMEPRO_SOURCE_STRING, (b))
76 #define FRAMEPRO_CONDITIONAL_BOOL_NAMED_SCOPE(name, b) FramePro::ConditionalBoolTimerScope FRAMEPRO_UNIQUE(timer_scope)(name "|" FRAMEPRO_SOURCE_STRING, (b))
77 #define FRAMEPRO_CONDITIONAL_BOOL_NAMED_SCOPE_W(name, b) FramePro::ConditionalBoolTimerScopeW FRAMEPRO_UNIQUE(timer_scope)(name L"|" FRAMEPRO_SOURCE_STRING_W, (b))
78 #define FRAMEPRO_START_NAMED_SCOPE(name) FramePro::int64 framepro_start_##name=0; MULTI_STATEMENT( if(FramePro::IsConnected()) { FRAMEPRO_GET_CLOCK_COUNT(framepro_start_##name); FramePro::StartScope(); } )
79 #define FRAMEPRO_STOP_NAMED_SCOPE(name) MULTI_STATEMENT( if(FramePro::IsConnected()) { FramePro::int64 framepro_end_##name; FRAMEPRO_GET_CLOCK_COUNT(framepro_end_##name); FramePro::AddTimeSpan(#name "|" FRAMEPRO_SOURCE_STRING, framepro_start_##name, framepro_end_##name); FramePro::StopScope(); } )
80 #define FRAMEPRO_CONDITIONAL_START_SCOPE() FramePro::int64 framepro_start=0; MULTI_STATEMENT( if(FramePro::IsConnected()) { FRAMEPRO_GET_CLOCK_COUNT(framepro_start); FramePro::StartScope(); } )
81 #define FRAMEPRO_CONDITIONAL_STOP_NAMED_SCOPE(name) MULTI_STATEMENT( if(FramePro::IsConnected()) { FramePro::int64 framepro_end; FRAMEPRO_GET_CLOCK_COUNT(framepro_end); if(framepro_end - framepro_start > FramePro::GetConditionalScopeMinTime()) FramePro::AddTimeSpan(name "|" FRAMEPRO_SOURCE_STRING, framepro_start, framepro_end); FramePro::StopScope();} )
82 #define FRAMEPRO_CONDITIONAL_STOP_DYNAMIC_SCOPE(dynamic_string) MULTI_STATEMENT( if(FramePro::IsConnected()) { FramePro::int64 framepro_end; FRAMEPRO_GET_CLOCK_COUNT(framepro_end); if(framepro_end - framepro_start > FramePro::GetConditionalScopeMinTime()) FramePro::AddTimeSpan(FramePro::RegisterString(dynamic_string), FRAMEPRO_SOURCE_STRING, framepro_start, framepro_end); FramePro::StopScope(); } )
83 #define FRAMEPRO_CONDITIONAL_PARENT_SCOPE(name, callback, pre_duration, post_duration) FramePro::ConditionalParentTimerScope FRAMEPRO_UNIQUE(timer_scope)(name, FRAMEPRO_SOURCE_STRING, callback, pre_duration, post_duration)
84 #define FRAMEPRO_SET_SCOPE_COLOUR(name, colour) MULTI_STATEMENT( FramePro::SetScopeColour(FramePro::RegisterString(name), colour); )
85 #define FRAMEPRO_CALLSTACK() FramePro::SendScopeCallstack()
88 #define FRAMEPRO_IDLE_SCOPE() FramePro::TimerScope FRAMEPRO_UNIQUE(timer_scope)(FRAMEPRO_FUNCTION_NAME_LITERAL "|" FRAMEPRO_SOURCE_STRING_IDLE)
89 #define FRAMEPRO_IDLE_NAMED_SCOPE(name) FramePro::TimerScope FRAMEPRO_UNIQUE(timer_scope)(name "|" FRAMEPRO_SOURCE_STRING_IDLE)
90 #define FRAMEPRO_IDLE_NAMED_SCOPE_W(name) FramePro::TimerScopeW FRAMEPRO_UNIQUE(timer_scope)(name L"|" FRAMEPRO_SOURCE_STRING_IDLE_W)
91 #define FRAMEPRO_IDLE_ID_SCOPE(name_id) FramePro::IdTimerScope FRAMEPRO_UNIQUE(timer_scope)(name_id, FRAMEPRO_SOURCE_STRING_IDLE)
92 #define FRAMEPRO_IDLE_DYNAMIC_SCOPE(dynamic_string) FramePro::IdTimerScope FRAMEPRO_UNIQUE(timer_scope)(FramePro::IsConnected() ? FramePro::RegisterString(dynamic_string) : -1, FRAMEPRO_SOURCE_STRING_IDLE)
93 #define FRAMEPRO_IDLE_CONDITIONAL_SCOPE() FramePro::ConditionalTimerScope FRAMEPRO_UNIQUE(timer_scope)(FRAMEPRO_FUNCTION_NAME_LITERAL "|" FRAMEPRO_SOURCE_STRING_IDLE)
94 #define FRAMEPRO_IDLE_CONDITIONAL_ID_SCOPE(name) FramePro::ConditionalTimerScopeId FRAMEPRO_UNIQUE(timer_scope)(name, FRAMEPRO_SOURCE_STRING_IDLE)
95 #define FRAMEPRO_IDLE_CONDITIONAL_NAMED_SCOPE(name) FramePro::ConditionalTimerScope FRAMEPRO_UNIQUE(timer_scope)(name "|" FRAMEPRO_SOURCE_STRING_IDLE)
96 #define FRAMEPRO_IDLE_CONDITIONAL_NAMED_SCOPE_W(name) FramePro::ConditionalTimerScopeW FRAMEPRO_UNIQUE(timer_scope)(name L"|" FRAMEPRO_SOURCE_STRING_IDLE_W)
97 #define FRAMEPRO_IDLE_START_NAMED_SCOPE(name) FramePro::int64 framepro_start_##name=0; if(FramePro::IsConnected()) { FRAMEPRO_GET_CLOCK_COUNT(framepro_start_##name); FramePro::StartScope(); }
98 #define FRAMEPRO_IDLE_STOP_NAMED_SCOPE(name) MULTI_STATEMENT( if(FramePro::IsConnected()) { FramePro::int64 framepro_end_##name; FRAMEPRO_GET_CLOCK_COUNT(framepro_end_##name); FramePro::AddTimeSpan(#name "|" FRAMEPRO_SOURCE_STRING_IDLE, framepro_start_##name, framepro_end_##name); FramePro::StopScope(); } )
99 #define FRAMEPRO_IDLE_CONDITIONAL_START_SCOPE() FramePro::int64 framepro_start=0; MULTI_STATEMENT( if(FramePro::IsConnected()) { FRAMEPRO_GET_CLOCK_COUNT(framepro_start); FramePro::StartScope(); } )
100 #define FRAMEPRO_IDLE_CONDITIONAL_STOP_NAMED_SCOPE(name) MULTI_STATEMENT( if(FramePro::IsConnected()) { FramePro::int64 framepro_end; FRAMEPRO_GET_CLOCK_COUNT(framepro_end); if(framepro_end - framepro_start > FramePro::GetConditionalScopeMinTime()) FramePro::AddTimeSpan(name "|" FRAMEPRO_SOURCE_STRING_IDLE, framepro_start, framepro_end); FramePro::StopScope(); } )
101 #define FRAMEPRO_IDLE_CONDITIONAL_STOP_DYNAMIC_SCOPE(dynamic_string) MULTI_STATEMENT( if(FramePro::IsConnected()) { FramePro::int64 framepro_end; FRAMEPRO_GET_CLOCK_COUNT(framepro_end); if(framepro_end - framepro_start > FramePro::GetConditionalScopeMinTime()) FramePro::AddTimeSpan(FramePro::RegisterString(dynamic_string), FRAMEPRO_SOURCE_STRING_IDLE, framepro_start, framepro_end); FramePro::StopScope(); } )
104 #define FRAMEPRO_CUSTOM_STAT(name, value, graph, unit, colour) MULTI_STATEMENT( if(FramePro::IsConnected()) FramePro::AddCustomStat(name, value, graph, unit, colour); )
105 #define FRAMEPRO_DYNAMIC_CUSTOM_STAT(name, value, graph, unit, colour) MULTI_STATEMENT( if(FramePro::IsConnected()) FramePro::AddCustomStat(FramePro::RegisterString(name), value, FramePro::RegisterString(graph), FramePro::RegisterString(unit), colour); )
106 #define FRAMEPRO_SCOPE_CUSTOM_STAT(name, value, graph, unit, colour) MULTI_STATEMENT( if(FramePro::IsConnected()) FramePro::SetScopeCustomStat(name, value, graph, unit, colour); )
107 #define FRAMEPRO_SET_CUSTOM_STAT_GRAPH(name, graph) MULTI_STATEMENT( FramePro::SetCustomStatGraph(FramePro::RegisterString(name), FramePro::RegisterString(graph)); )
108 #define FRAMEPRO_SET_CUSTOM_STAT_UNIT(name, unit) MULTI_STATEMENT( FramePro::SetCustomStatUnit(FramePro::RegisterString(name), FramePro::RegisterString(unit)); )
109 #define FRAMEPRO_SET_CUSTOM_STAT_COLOUR(name, colour) MULTI_STATEMENT( FramePro::SetCustomStatColour(FramePro::RegisterString(name), colour); )
112 #define FRAMEPRO_HIRES_SCOPE(name) FramePro::HiResTimerScope FRAMEPRO_UNIQUE(hires_scope)(name)
115 #define FRAMEPRO_DECL_CUSTOM_STAT_TIMER(name) FramePro::CustomStatTimer g_FrameProCustomStatTimer##name(#name)
116 #define FRAMEPRO_EXTERN_CUSTOM_STAT_TIMER(name) extern FramePro::CustomStatTimer g_FrameProCustomStatTimer##name
117 #define FRAMEPRO_CUSTOM_STAT_TIMER_SCOPE(name) FramePro::CustomStatTimerScope FRAMEPRO_UNIQUE(timer_scope)(g_FrameProCustomStatTimer##name)
120 #define FRAMEPRO_EVENT(name, colour) FramePro::AddEvent(name, colour)
123 #define FRAMEPRO_WAIT_EVENT_SCOPE(event_id) FramePro::WaitEventScope FRAMEPRO_UNIQUE(timer_scope)((FramePro::int64)event_id)
124 #define FRAMEPRO_TRIGGER_WAIT_EVENT(event_id) FramePro::TriggerWaitEvent((FramePro::int64)event_id);
127 #define FRAMEPRO_FRAME_START() ((void)0)
128 #define FRAMEPRO_SHUTDOWN() ((void)0)
129 #define FRAMEPRO_SET_PORT(port) ((void)0)
130 #define FRAMEPRO_SESSION_INFO(name, id) ((void)0)
131 #define FRAMEPRO_SET_ALLOCATOR(p_allocator) ((void)0)
132 #define FRAMEPRO_SET_THREAD_NAME(name) ((void)0)
133 #define FRAMEPRO_SET_THREAD_ID_NAME(thread_id, name) ((void)0)
134 #define FRAMEPRO_THREAD_ORDER(thread_name) ((void)0)
135 #define FRAMEPRO_REGISTER_STRING(str) 0
136 #define FRAMEPRO_START_RECORDING(filename, context_switches, callstacks, max_file_size) ((void)0)
137 #define FRAMEPRO_STOP_RECORDING() ((void)0)
138 #define FRAMEPRO_REGISTER_CONNECTION_CHANGED_CALLBACK(callback, context) ((void)0)
139 #define FRAMEPRO_UNREGISTER_CONNECTION_CHANGED_CALLBACK(callback) ((void)0)
140 #define FRAMEPRO_SET_THREAD_PRIORITY(priority) ((void)0)
141 #define FRAMEPRO_SET_THREAD_AFFINITY(affinity) ((void)0)
142 #define FRAMEPRO_UNBLOCK_SOCKETS() ((void)0)
143 #define FRAMEPRO_CLEANUP_THREAD() ((void)0)
144 #define FRAMEPRO_THREAD_SCOPE(thread_name) ((void)0)
145 #define FRAMEPRO_LOG(message) ((void)0)
146 #define FRAMEPRO_COLOUR(r, g, b) ((void)0)
147 #define FRAMEPRO_SET_CONDITIONAL_SCOPE_MIN_TIME(microseconds) ((void)0)
149 #define FRAMEPRO_SCOPE() ((void)0)
150 #define FRAMEPRO_NAMED_SCOPE(name) ((void)0)
151 #define FRAMEPRO_NAMED_SCOPE_W(name) ((void)0)
152 #define FRAMEPRO_ID_SCOPE(name_id) ((void)name_id)
153 #define FRAMEPRO_DYNAMIC_SCOPE(dynamic_string) ((void)0)
154 #define FRAMEPRO_CONDITIONAL_SCOPE() ((void)0)
155 #define FRAMEPRO_CONDITIONAL_ID_SCOPE(name) ((void)0)
156 #define FRAMEPRO_CONDITIONAL_NAMED_SCOPE(name) ((void)0)
157 #define FRAMEPRO_CONDITIONAL_NAMED_SCOPE_W(name) ((void)0)
158 #define FRAMEPRO_CONDITIONAL_BOOL_SCOPE(b) ((void)0)
159 #define FRAMEPRO_CONDITIONAL_BOOL_ID_SCOPE(name, b) ((void)0)
160 #define FRAMEPRO_CONDITIONAL_BOOL_NAMED_SCOPE(name, b) ((void)0)
161 #define FRAMEPRO_CONDITIONAL_BOOL_NAMED_SCOPE_W(name, b) ((void)0)
162 #define FRAMEPRO_START_NAMED_SCOPE(name) ((void)0)
163 #define FRAMEPRO_STOP_NAMED_SCOPE(name) ((void)0)
164 #define FRAMEPRO_CONDITIONAL_START_SCOPE() ((void)0)
165 #define FRAMEPRO_CONDITIONAL_STOP_NAMED_SCOPE(name) ((void)0)
166 #define FRAMEPRO_CONDITIONAL_STOP_DYNAMIC_SCOPE(dynamic_string) ((void)0)
167 #define FRAMEPRO_CONDITIONAL_PARENT_SCOPE(name, callback, pre_duration, post_duration) ((void)0)
168 #define FRAMEPRO_SET_SCOPE_COLOUR(name, colour) ((void)0)
169 #define FRAMEPRO_CALLSTACK() ((void)0)
171 #define FRAMEPRO_IDLE_SCOPE() ((void)0)
172 #define FRAMEPRO_IDLE_NAMED_SCOPE(name) ((void)0)
173 #define FRAMEPRO_IDLE_NAMED_SCOPE_W(name) ((void)0)
174 #define FRAMEPRO_IDLE_ID_SCOPE(name_id) ((void)name_id)
175 #define FRAMEPRO_IDLE_DYNAMIC_SCOPE(dynamic_string) ((void)0)
176 #define FRAMEPRO_IDLE_CONDITIONAL_SCOPE() ((void)0)
177 #define FRAMEPRO_IDLE_CONDITIONAL_ID_SCOPE(name) ((void)0)
178 #define FRAMEPRO_IDLE_CONDITIONAL_NAMED_SCOPE(name) ((void)0)
179 #define FRAMEPRO_IDLE_CONDITIONAL_NAMED_SCOPE_W(name) ((void)0)
180 #define FRAMEPRO_IDLE_START_NAMED_SCOPE(name) ((void)0)
181 #define FRAMEPRO_IDLE_STOP_NAMED_SCOPE(name) ((void)0)
182 #define FRAMEPRO_IDLE_CONDITIONAL_START_SCOPE() ((void)0)
183 #define FRAMEPRO_IDLE_CONDITIONAL_STOP_NAMED_SCOPE(name) ((void)0)
184 #define FRAMEPRO_IDLE_CONDITIONAL_STOP_DYNAMIC_SCOPE(dynamic_string) ((void)0)
186 #define FRAMEPRO_CUSTOM_STAT(name, value, graph, unit, colour) ((void)0)
187 #define FRAMEPRO_DYNAMIC_CUSTOM_STAT(name, value, graph, unit, colour) ((void)0)
188 #define FRAMEPRO_SCOPE_CUSTOM_STAT(name, value, graph, unit, colour) ((void)0)
189 #define FRAMEPRO_SET_CUSTOM_STAT_GRAPH(name, graph) ((void)0)
190 #define FRAMEPRO_SET_CUSTOM_STAT_UNIT(name, unit) ((void)0)
191 #define FRAMEPRO_SET_CUSTOM_STAT_COLOUR(name, colour) ((void)0)
193 #define FRAMEPRO_HIRES_SCOPE(name) ((void)0)
195 #define FRAMEPRO_DECL_CUSTOM_STAT_TIMER(name)
196 #define FRAMEPRO_EXTERN_CUSTOM_STAT_TIMER(name)
197 #define FRAMEPRO_CUSTOM_STAT_TIMER_SCOPE(name) ((void)0)
199 #define FRAMEPRO_EVENT(name, colour) ((void)0)
201 #define FRAMEPRO_WAIT_EVENT_SCOPE(event_id) ((void)0)
202 #define FRAMEPRO_TRIGGER_WAIT_EVENT(event_id) ((void)0)
218#define FRAMEPRO_SOCKETS_ENABLED 1
222#define FRAMEPRO_MAX_SEND_DELAY 30
226#define FRAMEPRO_DEBUG_TCP 0
233#define FRAMEPRO_MAX_MEMORY (50*1024*1024)
239#define FRAMEPRO_SOCKETS_BLOCKED_BY_DEFAULT false
243#define FRAMEPRO_SCOPE_MIN_TIME 10
248#define FRAMEPRO_WAIT_EVENT_MIN_TIME 10
251#define FRAMEPRO_ENABLE_CONTEXT_SWITCH_TRACKING 1
254#define FRAMEPRO_ENABLE_CALLSTACKS 0
261#define FRAMEPRO_DETECT_HASH_COLLISIONS 0
264#define FRAMEPRO_STACK_TRACE_SIZE 128
272#define FRAMEPRO_ALLOW_UNPARENTED_HIRES_SCOPES 0
912#ifndef FRAMEPRO_DEBUG
913 #if defined(DEBUG) || defined(_DEBUG)
914 #define FRAMEPRO_DEBUG 1
916 #define FRAMEPRO_DEBUG 0
921#define FRAMEPRO_STRINGIZE(x) FRAMEPRO_STRINGIZE2(x)
922#define FRAMEPRO_STRINGIZE2(x) #x
925#define FRAMEPRO_JOIN(a, b) FRAMEPRO_JOIN2(a, b)
926#define FRAMEPRO_JOIN2(a, b) a##b
927#define FRAMEPRO_UNIQUE(a) FRAMEPRO_JOIN(a, __LINE__)
930#define FRAMEPRO_WIDESTR(s) FRAMEPRO_WIDESTR2(s)
931#define FRAMEPRO_WIDESTR2(s) L##s
934#if defined(__UNREAL__)
935 #define FRAMEPRO_PLATFORM_UE4 1
936 #define FRAMEPRO_PLATFORM_XBOXONE 0
937 #define FRAMEPRO_PLATFORM_UWP 0
938 #define FRAMEPRO_PLATFORM_WIN 0
939 #define FRAMEPRO_PLATFORM_LINUX 0
940 #define FRAMEPRO_PLATFORM_PS4 0
941 #define FRAMEPRO_PLATFORM_ANDROID 0
942#elif defined(_XBOX_ONE) || defined(_DURANGO)
943 #define FRAMEPRO_PLATFORM_UE4 0
944 #define FRAMEPRO_PLATFORM_XBOXONE 1
945 #define FRAMEPRO_PLATFORM_UWP 0
946 #define FRAMEPRO_PLATFORM_WIN 0
947 #define FRAMEPRO_PLATFORM_LINUX 0
948 #define FRAMEPRO_PLATFORM_PS4 0
949 #define FRAMEPRO_PLATFORM_ANDROID 0
950#elif defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
951 #define FRAMEPRO_PLATFORM_UE4 0
952 #define FRAMEPRO_PLATFORM_XBOXONE 0
953 #define FRAMEPRO_PLATFORM_UWP 1
954 #define FRAMEPRO_PLATFORM_WIN 0
955 #define FRAMEPRO_PLATFORM_LINUX 0
956 #define FRAMEPRO_PLATFORM_PS4 0
957 #define FRAMEPRO_PLATFORM_ANDROID 0
958#elif defined(_WIN32) || defined(_WIN64) || defined(WIN32) || defined(WIN64) || defined(__WIN32__) || defined(__WINDOWS__)
959 #define FRAMEPRO_PLATFORM_UE4 0
960 #define FRAMEPRO_PLATFORM_XBOXONE 0
961 #define FRAMEPRO_PLATFORM_UWP 0
962 #define FRAMEPRO_PLATFORM_WIN 1
963 #define FRAMEPRO_PLATFORM_LINUX 0
964 #define FRAMEPRO_PLATFORM_PS4 0
965 #define FRAMEPRO_PLATFORM_ANDROID 0
966#elif defined(__ORBIS__)
967 #define FRAMEPRO_PLATFORM_UE4 0
968 #define FRAMEPRO_PLATFORM_XBOXONE 0
969 #define FRAMEPRO_PLATFORM_UWP 0
970 #define FRAMEPRO_PLATFORM_WIN 0
971 #define FRAMEPRO_PLATFORM_LINUX 0
972 #define FRAMEPRO_PLATFORM_PS4 1
973 #define FRAMEPRO_PLATFORM_ANDROID 0
974#elif defined(__ANDROID__)
975 #define FRAMEPRO_PLATFORM_UE4 0
976 #define FRAMEPRO_PLATFORM_XBOXONE 0
977 #define FRAMEPRO_PLATFORM_UWP 0
978 #define FRAMEPRO_PLATFORM_WIN 0
979 #define FRAMEPRO_PLATFORM_LINUX 0
980 #define FRAMEPRO_PLATFORM_PS4 0
981 #define FRAMEPRO_PLATFORM_ANDROID 1
982#elif defined(unix) || defined(__unix__) || defined(__unix)
983 #define FRAMEPRO_PLATFORM_UE4 0
984 #define FRAMEPRO_PLATFORM_XBOXONE 0
985 #define FRAMEPRO_PLATFORM_UWP 0
986 #define FRAMEPRO_PLATFORM_WIN 0
987 #define FRAMEPRO_PLATFORM_LINUX 1
988 #define FRAMEPRO_PLATFORM_PS4 0
989 #define FRAMEPRO_PLATFORM_ANDROID 0
991 #error FramePro platform not defined
995#define FRAMEPRO_SOURCE_STRING __FILE__ "|" FRAMEPRO_FUNCTION_NAME_LITERAL "|" FRAMEPRO_STRINGIZE(__LINE__) "|"
996#define FRAMEPRO_SOURCE_STRING_W FRAMEPRO_WIDESTR(__FILE__) L"|" FRAMEPRO_WIDESTR(FRAMEPRO_FUNCTION_NAME_LITERAL) L"|" FRAMEPRO_WIDESTR(FRAMEPRO_STRINGIZE(__LINE__)) L"|"
997#define FRAMEPRO_SOURCE_STRING_IDLE __FILE__ "|" FRAMEPRO_FUNCTION_NAME_LITERAL "|" FRAMEPRO_STRINGIZE(__LINE__) "|Idle"
998#define FRAMEPRO_SOURCE_STRING_IDLE_W FRAMEPRO_WIDESTR(__FILE__) L"|" FRAMEPRO_WIDESTR(FRAMEPRO_FUNCTION_NAME_LITERAL) L"|" FRAMEPRO_WIDESTR(FRAMEPRO_STRINGIZE(__LINE__)) L"|Idle"
1002 #define FRAMEPRO_ASSERT(b) if(!(b)) FramePro::DebugBreak()
1004 #define FRAMEPRO_ASSERT(b) ((void)0)
1008#define FRAMEPRO_UNREFERENCED(s) (void)s
1014 typedef long long int64;
1015 typedef unsigned long long uint64;
1016 typedef unsigned int uint;
1020#define FRAMEPRO_DEFAULT_COND_SCOPE_MIN_TIME 50
1023#define FRAMEPRO_MAX_INLINE_STRING_LENGTH 256
1028 typedef int(*ThreadMain)(
void*);
1132 #if defined(FRAMEPRO_DLL_EXPORT)
1133 #define FRAMEPRO_API __declspec(dllexport)
1134 #elif defined(FRAMEPRO_DLL)
1135 #define FRAMEPRO_API __declspec(dllimport)
1137 #define FRAMEPRO_API
1162#if FRAMEPRO_PLATFORM_UE4
1169#elif FRAMEPRO_PLATFORM_WIN
1172 #define FRAMEPRO_GET_CLOCK_COUNT(time) time = FramePro_QueryPerformanceCounter()
1175 #define FRAMEPRO_WIN_BASED_PLATFORM 1
1176 #define FRAMEPRO_LINUX_BASED_PLATFORM 0
1178 #define FRAMEPRO_USE_TLS_SLOTS 0
1181 #define FRAMEPRO_PORT "8428"
1184 #if defined(_WIN64) || defined(__LP64__) || defined(__x86_64__) || defined(__ppc64__)
1185 #define FRAMEPRO_X64 1
1187 #define FRAMEPRO_X64 0
1190 #define FRAMEPRO_MAX_PATH 260
1193 #define FRAMEPRO_TCHAR _TCHAR
1195 #define MULTI_STATEMENT(s) do { s } while(true,false)
1197 #if !defined(__clang__)
1198 #define FRAMEPRO_FUNCTION_DEFINE_IS_STRING_LITERAL 1
1200 #define FRAMEPRO_FUNCTION_DEFINE_IS_STRING_LITERAL 0
1203 #define FRAMEPRO_NO_INLINE __declspec(noinline)
1204 #define FRAMEPRO_FORCE_INLINE __forceinline
1206 #define LIMIT_RECORDING_FILE_SIZE 1
1208 #define FRAMEPRO_ALIGN_STRUCT(a)
1210 #define FRAMEPRO_ENUMERATE_ALL_MODULES (FRAMEPRO_X64 && 1)
1215#elif FRAMEPRO_PLATFORM_UWP
1218 #define FRAMEPRO_GET_CLOCK_COUNT(time) time = FramePro_QueryPerformanceCounter()
1221 #define FRAMEPRO_WIN_BASED_PLATFORM 1
1222 #define FRAMEPRO_LINUX_BASED_PLATFORM 0
1224 #define FRAMEPRO_USE_TLS_SLOTS 0
1227 #define FRAMEPRO_PORT "8428"
1230 #define FRAMEPRO_X64 1
1232 #define FRAMEPRO_MAX_PATH 260
1235 #define FRAMEPRO_TCHAR _TCHAR
1237 #define MULTI_STATEMENT(s) do { s } while(true,false)
1239 #if !defined(__clang__)
1240 #define FRAMEPRO_FUNCTION_DEFINE_IS_STRING_LITERAL 1
1242 #define FRAMEPRO_FUNCTION_DEFINE_IS_STRING_LITERAL 0
1245 #define FRAMEPRO_NO_INLINE __declspec(noinline)
1246 #define FRAMEPRO_FORCE_INLINE __forceinline
1248 #define LIMIT_RECORDING_FILE_SIZE 1
1250 #define FRAMEPRO_ALIGN_STRUCT(a)
1252 #define FRAMEPRO_ENUMERATE_ALL_MODULES (FRAMEPRO_X64 && 1)
1257#elif FRAMEPRO_PLATFORM_ANDROID
1260 #define FRAMEPRO_GET_CLOCK_COUNT(time) \
1261 timespec FRAMEPRO_UNIQUE(ts); \
1262 clock_gettime(CLOCK_MONOTONIC, &FRAMEPRO_UNIQUE(ts)); \
1263 time = FRAMEPRO_UNIQUE(ts).tv_sec * 1000000000LL + FRAMEPRO_UNIQUE(ts).tv_nsec
1266 #define FRAMEPRO_WIN_BASED_PLATFORM 0
1267 #define FRAMEPRO_LINUX_BASED_PLATFORM 1
1269 #define FRAMEPRO_USE_TLS_SLOTS 0
1272 #define FRAMEPRO_PORT "8428"
1275 #if defined(__LP64__) || defined(__x86_64__) || defined(__ppc64__)
1276 #define FRAMEPRO_X64 1
1278 #define FRAMEPRO_X64 0
1281 #define FRAMEPRO_MAX_PATH 260
1283 #define MULTI_STATEMENT(s) do { s } while(false)
1287 #define FRAMEPRO_FUNCTION_DEFINE_IS_STRING_LITERAL 0
1289 #define FRAMEPRO_NO_INLINE
1290 #define FRAMEPRO_FORCE_INLINE inline
1292 #define LIMIT_RECORDING_FILE_SIZE 1
1294 #define FRAMEPRO_ALIGN_STRUCT(a) __attribute__ ((aligned(a)))
1296 #define FRAMEPRO_ENUMERATE_ALL_MODULES (FRAMEPRO_X64 && 1)
1301#elif FRAMEPRO_PLATFORM_LINUX
1304 #define FRAMEPRO_GET_CLOCK_COUNT(time) \
1305 timespec FRAMEPRO_UNIQUE(ts); \
1306 clock_gettime(CLOCK_MONOTONIC, &FRAMEPRO_UNIQUE(ts)); \
1307 time = FRAMEPRO_UNIQUE(ts).tv_sec * 1000000000LL + FRAMEPRO_UNIQUE(ts).tv_nsec
1310 #define FRAMEPRO_WIN_BASED_PLATFORM 0
1311 #define FRAMEPRO_LINUX_BASED_PLATFORM 1
1313 #define FRAMEPRO_USE_TLS_SLOTS 0
1316 #define FRAMEPRO_PORT "8428"
1319 #if defined(__LP64__) || defined(__x86_64__) || defined(__ppc64__)
1320 #define FRAMEPRO_X64 1
1322 #define FRAMEPRO_X64 0
1325 #define FRAMEPRO_MAX_PATH 260
1327 #define MULTI_STATEMENT(s) do { s } while(false)
1331 #define FRAMEPRO_FUNCTION_DEFINE_IS_STRING_LITERAL 0
1333 #define FRAMEPRO_NO_INLINE
1334 #define FRAMEPRO_FORCE_INLINE inline
1336 #define LIMIT_RECORDING_FILE_SIZE 1
1338 #define FRAMEPRO_ALIGN_STRUCT(a) __attribute__ ((aligned(a)))
1340 #define FRAMEPRO_ENUMERATE_ALL_MODULES (FRAMEPRO_X64 && 1)
1345#elif FRAMEPRO_PLATFORM_XBOXONE
1347 #include "FrameProXboxOne.h"
1352#elif FRAMEPRO_PLATFORM_PS4
1354 #include "FrameProPS4.h"
1358 #error Platform not defined
1371#ifndef FRAMEPRO_GET_CLOCK_COUNT
1372 #error Platform must defined FRAMEPRO_GET_CLOCK_COUNT
1375#ifndef FRAMEPRO_PORT
1376 #error Platform must define FRAMEPRO_PORT
1380 #error Platform must define FRAMEPRO_X64
1383#ifndef MULTI_STATEMENT
1384 #error Platform must define MULTI_STATEMENT
1387#ifndef FRAMEPRO_FUNCTION_DEFINE_IS_STRING_LITERAL
1388 #error Platform must define FRAMEPRO_FUNCTION_DEFINE_IS_STRING_LITERAL
1391#ifndef FRAMEPRO_NO_INLINE
1392 #error Platform must define FRAMEPRO_NO_INLINE
1395#ifndef FRAMEPRO_FORCE_INLINE
1396 #error Platform must define FRAMEPRO_FORCE_INLINE
1399#ifndef FRAMEPRO_USE_TLS_SLOTS
1400 #error Platform must define FRAMEPRO_USE_TLS_SLOTS
1403#ifndef LIMIT_RECORDING_FILE_SIZE
1404 #error Platform must define LIMIT_RECORDING_FILE_SIZE
1412 struct ContextSwitch;
1415 template<
typename T>
class Array;
1454 int GetCurrentProcessId();
1546#if FRAMEPRO_WIN_BASED_PLATFORM
1547 #define FRAMEPRO_FUNCTION_NAME __FUNCSIG__
1549 #define FRAMEPRO_FUNCTION_NAME __PRETTY_FUNCTION__
1553#if FRAMEPRO_FUNCTION_DEFINE_IS_STRING_LITERAL
1554 #define FRAMEPRO_FUNCTION_NAME_LITERAL FRAMEPRO_FUNCTION_NAME
1556 #define FRAMEPRO_FUNCTION_NAME_LITERAL ""
1561 #ifdef FRAMEPRO_SCOPE
1562 #undef FRAMEPRO_SCOPE
1563 #define FRAMEPRO_SCOPE() FramePro::StringLiteralNamedTimerScope FRAMEPRO_UNIQUE(timer_scope)(FRAMEPRO_FUNCTION_NAME, FRAMEPRO_SOURCE_STRING)
1565 #ifdef FRAMEPRO_CONDITIONAL_SCOPE
1566 #undef FRAMEPRO_CONDITIONAL_SCOPE
1567 #define FRAMEPRO_CONDITIONAL_SCOPE() FramePro::StringLiteralNamedConditionalTimerScope FRAMEPRO_UNIQUE(timer_scope)(FRAMEPRO_FUNCTION_NAME, FRAMEPRO_SOURCE_STRING)
1569 #ifdef FRAMEPRO_IDLE_SCOPE
1570 #undef FRAMEPRO_IDLE_SCOPE
1571 #define FRAMEPRO_IDLE_SCOPE() FramePro::StringLiteralNamedTimerScope FRAMEPRO_UNIQUE(timer_scope)(FRAMEPRO_FUNCTION_NAME, FRAMEPRO_SOURCE_STRING_IDLE)
1573 #ifdef FRAMEPRO_IDLE_CONDITIONAL_SCOPE
1574 #undef FRAMEPRO_IDLE_CONDITIONAL_SCOPE
1575 #define FRAMEPRO_IDLE_CONDITIONAL_SCOPE() FramePro::StringLiteralNamedConditionalTimerScope FRAMEPRO_UNIQUE(timer_scope)(FRAMEPRO_FUNCTION_NAME, FRAMEPRO_SOURCE_STRING_IDLE)
1585 template<
typename T>
1589 RelaxedAtomic() {
static_assert(
sizeof(T) <=
sizeof(
size_t),
"bad template arg");
FRAMEPRO_ASSERT((((FramePro::uint64)
this) %
sizeof(T) == 0)); }
1591 void operator=(T value) {
m_Value = value; }
1592 operator T()
const {
return m_Value; }
1766#if FRAMEPRO_DEBUG || FRAMEPRO_ALLOW_UNPARENTED_HIRES_SCOPES
1783 virtual void*
Alloc(
size_t size) = 0;
1784 virtual void Free(
void* p) = 0;
1794 if (FramePro::IsConnected())
1798 FramePro::StartScope();
1814 FramePro::StopScope();
1829 if (FramePro::IsConnected())
1833 FramePro::StartScope();
1849 FramePro::StopScope();
1865 if (FramePro::IsConnected())
1874 FramePro::StartScope();
1896 FramePro::StopScope();
1914 if (FramePro::IsConnected())
1919 FramePro::StartScope();
1936 FramePro::StopScope();
1953 if (FramePro::IsConnected())
1958 FramePro::StartScope();
1975 FramePro::StopScope();
1991 if (FramePro::IsConnected())
1995 FramePro::StartScope();
2012 FramePro::StopScope();
2027 if (FramePro::IsConnected())
2032 FramePro::StartScope();
2050 FramePro::StopScope();
2066 if (FramePro::IsConnected())
2070 FramePro::StartScope();
2087 FramePro::StopScope();
2102 if (b && FramePro::IsConnected())
2106 FramePro::StartScope();
2123 FramePro::StopScope();
2138 if (b && FramePro::IsConnected())
2143 FramePro::StartScope();
2161 FramePro::StopScope();
2177 if (b && FramePro::IsConnected())
2181 FramePro::StartScope();
2198 FramePro::StopScope();
2213 if (FramePro::IsConnected())
2218 FramePro::StartScope();
2236 FramePro::StopScope();
2255 FramePro::AddCustomStatTimer(
this);
2282 while (!
m_Value.compare_exchange_weak(
existing_value, 0, std::memory_order_relaxed, std::memory_order_relaxed))
2309 if (FramePro::IsConnected())
2345 bool connected = FramePro::IsConnected();
2349 FramePro::StartHiResTimer(
p_name);
2355 FramePro::StopHiResTimer();
2383 if (FramePro::IsConnected())
2418 const unsigned int prime = 0x01000193;
2419 unsigned int hash =
prime;
2425 key = (
~key) + (key << 18);
2426 key = key ^ (key >> 31);
2428 key = key ^ (key >> 11);
2429 key = key + (key << 6);
2430 key = key ^ (key >> 22);
2431 hash = hash ^ (
unsigned int)key;
2437 const unsigned int prime = 0x01000193;
2438 unsigned int hash =
prime;
2451 namespace ThreadState
2526 struct ContextSwitch
2553 template<
typename T>
2573 int GetCount()
const
2605 bool Add(
const T& value)
2620 const T& operator[](
int index)
const
2627 T& operator[](
int index)
2634 void RemoveAt(
int index)
2653 bool Contains(
const T& value)
const
2662 bool Resize(
int count)
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define NULL
Definition oodle2base.h:134
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
memcpy(InputBufferBase, BinkBlocksData, BinkBlocksSize)
@ Contains
Definition AutomationTest.h:160
Type SetThreadPriority(Type ThreadAndIndex, Type ThreadPriority)
Definition TaskGraphInterfaces.h:190
@ Waiting
Definition PathFollowingComponent.h:42
FString ToString(uint16 Value)
Definition PathFollowingComponent.cpp:82
Definition FramePro.h:208
long long StringId
Definition FramePro.h:209
int
Definition TestServer.py:515
uint32 GetNext(uint32 Index, const IndexType *NextIndexData, const uint32 NextIndexCount)
Definition CompactHashTable.h:116
void WriteToFile(const FString &Filename, const uint8 *InDataPtr, int64 InDataSize)
Definition SavePackageUtilities.cpp:534
Definition MinimalWindowsApi.h:62
MINIMAL_WINDOWS_API DWORD WINAPI GetCurrentThreadId()
Definition OpenGLBuffer.cpp:37