top | up | prev | next

BoundMemberExpression Class

Definition at line 609 of BoundExpression.hpp

Constructors

BoundMemberExpression(const Span& span_, const boost::uuids::uuid& moduleId_, std::unique_ptr<BoundExpression>&& classPtr_, std::unique_ptr<BoundExpression>&& member_)

Member Functions

void Accept(BoundNodeVisitor& visitor) override
BoundExpression* ClassPtr()
BoundExpression* Clone() override
bool IsComplete() const override
void Load(Emitter& emitter, OperationFlags flags) override
BoundExpression* Member()
BoundExpression* ReleaseClassPtr()
void ResetClassPtr()
void Store(Emitter& emitter, OperationFlags flags) override
std::string TypeString() const override

Member Variables

std::unique_ptr<BoundExpression> classPtr
std::unique_ptr<BoundExpression> member
std::unique_ptr<TypeSymbol> memberExpressionType

Constructor Details

BoundMemberExpression Constructor

cmajor::binder::BoundMemberExpression::BoundMemberExpression(const Span& span_, const boost::uuids::uuid& moduleId_, std::unique_ptr<BoundExpression >&& classPtr_, std::unique_ptr<BoundExpression >&& member_)

Definition at line 2136 of BoundExpression.cpp :
2136 :
2137 BoundExpression(span_moduleId_BoundNodeType::boundMemberExpressionCreateMemberExpressionTypeSymbol(span_member_->ModuleId()member_->GetType()->Name()this))classPtr(std::move(classPtr_))member(std::move(member_))
2138 {
2139     memberExpressionType.reset(GetType());
2140     classPtr->MoveTemporaryDestructorCallsTo(*this);
2141 }


Declaration at line 612 of BoundExpression.hpp


Member Function Details

Accept Member Function

void cmajor::binder::BoundMemberExpression::Accept(BoundNodeVisitor & visitor) override

Definition at line 2165 of BoundExpression.cpp :
2166 {
2167     throw Exception("cannot visit a member expression"GetSpan()ModuleId());
2168 }


Declaration at line 617 of BoundExpression.hpp

Base class overridden functions: cmajor::binder::BoundNode::Accept

Calls: cmajor::binder::BoundNode::GetSpan , cmajor::binder::BoundNode::ModuleId


ClassPtr Member Function

BoundExpression * cmajor::binder::BoundMemberExpression::ClassPtr()

Definition at line 619 of BoundExpression.hpp :
619 { return classPtr.get(); }

Called by: cmajor::binder::ExpressionBinder::Visit


Clone Member Function

BoundExpression * cmajor::binder::BoundMemberExpression::Clone() override

Definition at line 2143 of BoundExpression.cpp :
2144 {
2145     return new BoundMemberExpression(GetSpan()ModuleId()std::unique_ptr<BoundExpression>(classPtr->Clone())std::unique_ptr<BoundExpression>(member->Clone()));
2146 }


Declaration at line 613 of BoundExpression.hpp

Base class overridden functions: cmajor::binder::BoundExpression::Clone

Calls: cmajor::binder::BoundMemberExpression::Clone , cmajor::binder::BoundNode::GetSpan , cmajor::binder::BoundNode::ModuleId

Called by: cmajor::binder::BoundMemberExpression::Clone


IsComplete Member Function

bool cmajor::binder::BoundMemberExpression::IsComplete() const override

Definition at line 614 of BoundExpression.hpp :
614 { return false; }

Base class overridden functions: cmajor::binder::BoundExpression::IsComplete


Load Member Function

void cmajor::binder::BoundMemberExpression::Load(Emitter & emitter, OperationFlags flags) override

Definition at line 2148 of BoundExpression.cpp :
2149 {
2150     if (classPtr)
2151     {
2152         classPtr->Load(emitterOperationFlags::none);
2153     }
2154     else
2155     {
2156         emitter.Stack().Push(nullptr);
2157     }
2158 }


Declaration at line 615 of BoundExpression.hpp

Base class overridden functions: cmajor::ir::GenObject::Load

Calls: cmajor::binder::BoundMemberExpression::Load , cmajor::ir::Emitter::Stack , cmajor::ir::ValueStack::Push

Called by: cmajor::binder::BoundMemberExpression::Load


Member Member Function

BoundExpression * cmajor::binder::BoundMemberExpression::Member()

Definition at line 622 of BoundExpression.hpp :
622 { return member.get(); }

Called by: cmajor::binder::BoundCompileUnit::GetConversion , cmajor::binder::ExpressionBinder::Visit , cmajor::binder::ExpressionBinder::Visit


ReleaseClassPtr Member Function

BoundExpression * cmajor::binder::BoundMemberExpression::ReleaseClassPtr()

Definition at line 621 of BoundExpression.hpp :
621 { return classPtr.release(); }

Called by: cmajor::binder::ExpressionBinder::Visit


ResetClassPtr Member Function

void cmajor::binder::BoundMemberExpression::ResetClassPtr()

Definition at line 620 of BoundExpression.hpp :
620 { classPtr.reset(); }

Called by: cmajor::binder::BoundCompileUnit::GetConversion


Store Member Function

void cmajor::binder::BoundMemberExpression::Store(Emitter & emitter, OperationFlags flags) override

Definition at line 2160 of BoundExpression.cpp :
2161 {
2162     throw Exception("cannot store to a member expression"GetSpan()ModuleId());
2163 }


Declaration at line 616 of BoundExpression.hpp

Base class overridden functions: cmajor::ir::GenObject::Store

Calls: cmajor::binder::BoundNode::GetSpan , cmajor::binder::BoundNode::ModuleId


TypeString Member Function

std::string cmajor::binder::BoundMemberExpression::TypeString() const override

Definition at line 618 of BoundExpression.hpp :
618 { return "member expression"; }

Base class overridden functions: cmajor::binder::BoundExpression::TypeString


top | up | prev | next