mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
45 lines
550 B
C++
45 lines
550 B
C++
#ifndef ENVIRONMENT_H
|
|
#define ENVIRONMENT_H
|
|
|
|
class LocalBase;
|
|
|
|
class Environment
|
|
{
|
|
public:
|
|
static void reset();
|
|
static void addVariable(LocalBase* local);
|
|
};
|
|
|
|
class LocalBase
|
|
{
|
|
public:
|
|
virtual void reset() = 0;
|
|
};
|
|
|
|
template <class T>
|
|
class Local : LocalBase
|
|
{
|
|
public:
|
|
Local()
|
|
{
|
|
Environment::addVariable(this);
|
|
}
|
|
void reset() override
|
|
{
|
|
_value.clear();
|
|
}
|
|
T& operator*()
|
|
{
|
|
return _value;
|
|
}
|
|
T& operator->()
|
|
{
|
|
return _value;
|
|
}
|
|
|
|
private:
|
|
T _value;
|
|
};
|
|
|
|
#endif
|