#ifndef MSP_DEBUG_PROFILINGSCOPE_H_
#define MSP_DEBUG_PROFILINGSCOPE_H_
+#include <msp/core/mspcore_api.h>
+#include <msp/core/noncopyable.h>
#include <msp/time/timestamp.h>
#include "profiler.h"
created and ends when it goes out of scope. If there was another object in an
outer scope, it is notified of the time used in inner scopes.
*/
-class ProfilingScope
+class MSPCORE_API ProfilingScope: private NonCopyable
{
private:
Profiler &profiler;
std::string name;
- ProfilingScope *parent;
- Time::TimeStamp start_t;
- Time::TimeDelta child_t;
+ ProfilingScope *parent = nullptr;
+ Time::TimeStamp entry_time;
+ Time::TimeDelta time_spent;
+ Time::TimeDelta child_time;
- ProfilingScope(const ProfilingScope &);
- ProfilingScope &operator=(const ProfilingScope &);
public:
ProfilingScope(Profiler &p, const std::string &n);
~ProfilingScope();
+
+ const std::string &get_name() const { return name; }
+ const ProfilingScope *get_parent() const { return parent; }
+ const Time::TimeStamp &get_entry_time() const { return entry_time; }
+ const Time::TimeDelta &get_time_spent() const { return time_spent; }
+ const Time::TimeDelta &get_child_time() const { return child_time; }
};
} // namespace Debug