add Context::withCurrentTask

This commit is contained in:
Dustin J. Mitchell
2021-12-18 00:48:12 +00:00
committed by Tomas Babej
parent 2ea6dd627e
commit 53127bf844
2 changed files with 42 additions and 0 deletions

View File

@@ -38,6 +38,8 @@
#include <Timer.h>
#include <set>
class CurrentTask;
class Context
{
public:
@@ -73,6 +75,9 @@ public:
void decomposeSortField (const std::string&, std::string&, bool&, bool&);
void debugTiming (const std::string&, const Timer&);
CurrentTask withCurrentTask (const Task *);
friend class CurrentTask;
private:
void staticInitialization ();
void createDefaultConfig ();
@@ -115,6 +120,24 @@ public:
long time_sort_us {0};
long time_render_us {0};
long time_hooks_us {0};
// the current task for DOM references, or NULL if there is no task
const Task * currentTask {NULL};
};
////////////////////////////////////////////////////////////////////////////////
// CurrentTask resets Context::currentTask to NULL on destruction; this ensures
// that this context value is not a dangling pointer.
class CurrentTask {
~CurrentTask();
private:
CurrentTask(Context *context, const Task *previous);
Context *context;
const Task *previous;
friend class Context;
};
#endif