mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 14:16:09 -06:00
83 lines
1 KiB
C++
83 lines
1 KiB
C++
#include "Core.h"
|
|
|
|
NAMESPACE_UPP
|
|
|
|
void Callback::Execute() const
|
|
{
|
|
if(action) action->Execute();
|
|
}
|
|
|
|
Callback& Callback::operator=(const Callback& c)
|
|
{
|
|
c.Retain();
|
|
Release();
|
|
action = c.action;
|
|
return *this;
|
|
}
|
|
|
|
Callback::Callback(const Callback& c)
|
|
{
|
|
action = c.action;
|
|
Retain();
|
|
}
|
|
|
|
Callback::~Callback()
|
|
{
|
|
Release();
|
|
}
|
|
|
|
Callback callback(Callback cb1, Callback cb2)
|
|
{
|
|
return Callback(new CallbackForkAction (cb1, cb2));
|
|
}
|
|
|
|
Callback& operator<<(Callback& a, Callback b)
|
|
{
|
|
if(a)
|
|
a = callback(a, b);
|
|
else
|
|
a = b;
|
|
return a;
|
|
}
|
|
|
|
//
|
|
|
|
bool Gate::Execute() const
|
|
{
|
|
return (void *)action == (void *)1 ? true : action ? action->Execute() : false;
|
|
}
|
|
|
|
Gate& Gate::operator=(const Gate& c)
|
|
{
|
|
c.Retain();
|
|
Release();
|
|
action = c.action;
|
|
return *this;
|
|
}
|
|
|
|
Gate::Gate(const Gate& c)
|
|
{
|
|
action = c.action;
|
|
Retain();
|
|
}
|
|
|
|
Gate::~Gate()
|
|
{
|
|
Release();
|
|
}
|
|
|
|
Gate callback(Gate cb1, Gate cb2)
|
|
{
|
|
return Gate(new GateForkAction (cb1, cb2));
|
|
}
|
|
|
|
Gate& operator<<(Gate& a, Gate b)
|
|
{
|
|
if(a)
|
|
a = callback(a, b);
|
|
else
|
|
a = b;
|
|
return a;
|
|
}
|
|
|
|
END_UPP_NAMESPACE
|