#ifndef EMPATHY_LLR_ELEMENT_H
#define EMPATHY_LLR_ELEMENT_H
namespace empathy::llr
{
class Seq;
class Element
{
public:
Element() {}
Element( ptr< Seq >&& s ) :
m_content( move( s ) )
{}
Element( const ptr< Seq >& s ) :
m_content( s )
{}
Element( Call&& c ) :
m_content( move( c ) )
{}
Element( SetVar&& sv ) :
m_content( move( sv ) )
{}
Element( GetVar&& gv ) :
m_content( move( gv ) )
{}
using Content = variant
<
ptr< Seq >,
SetVar,
GetVar,
Call
>;
const auto& content() const { return m_content; }
bool canBeExecuted() const;
bool canBeEagerlyEvaluated() const;
private:
Content m_content;
};
}
#endif