]> git.tdb.fi Git - libs/core.git/blobdiff - source/debug/profiler.h
Add move semantics to Variant
[libs/core.git] / source / debug / profiler.h
index 521ce959c5de7cae234c04ae8de5861ac3f6b42e..7d98dc7556e7316fe3e69257877a4ba8c8c6a018 100644 (file)
@@ -4,6 +4,7 @@
 #include <map>
 #include <string>
 #include <vector>
+#include <msp/core/mspcore_api.h>
 #include <msp/core/noncopyable.h>
 #include <msp/time/timedelta.h>
 #include <msp/time/timestamp.h>
@@ -25,39 +26,35 @@ profiled.
 Note: This is not thread-safe.  To profile multiple threads, create a separate
 Profiler for each thread.
 */
-class Profiler: private NonCopyable
+class MSPCORE_API Profiler: private NonCopyable
 {
 public:
-       struct CallInfo
+       struct MSPCORE_API CallInfo
        {
                Msp::Time::TimeStamp entry_time;
                Msp::Time::TimeDelta duration;
        };
 
-       struct ScopeInfo
+       struct MSPCORE_API ScopeInfo
        {
                Time::TimeStamp first_call;
-               unsigned calls;
+               unsigned calls = 0;
                Time::TimeDelta total_time;
                Time::TimeDelta self_time;
                Time::TimeDelta avg_time;
-               float calls_per_sec;
+               float calls_per_sec = 0;
                std::vector<CallInfo> history;
-               unsigned hist_pos;
-               bool hist_full;
+               unsigned hist_pos = 0;
+               bool hist_full = false;
                std::map<std::string, unsigned> called_from;
-
-               ScopeInfo();
        };
 
 private:
-       unsigned period;
+       unsigned period = 0;
        std::map<std::string, ScopeInfo> scopes;
-       ProfilingScope *inner;
+       ProfilingScope *inner = nullptr;
 
 public:
-       Profiler();
-
        /** Sets the averaging period for timing data, measured in calls.  Previous
        average timings are cleared. */
        void set_period(unsigned p);