top | up | prev | next

BoundIsExpression Class

Definition at line 410 of BoundExpression.hpp

Constructors

BoundIsExpression(std::unique_ptr<BoundExpression>&& expr_, ClassTypeSymbol* rightClassType_, TypeSymbol* boolType_, std::unique_ptr<BoundLocalVariable>&& leftClassIdVar_, std::unique_ptr<BoundLocalVariable>&& rightClassIdVar_)

Member Functions

void Accept(BoundNodeVisitor& visitor) override
BoundExpression* Clone() override
bool ContainsExceptionCapture() const override
BoundExpression* Expr()
bool HasValue() const override
void Load(Emitter& emitter, OperationFlags flags) override
ClassTypeSymbol* RightClassType()
void Store(Emitter& emitter, OperationFlags flags) override
std::string TypeString() const override

Member Variables

std::unique_ptr<BoundExpression> expr
std::unique_ptr<BoundLocalVariable> leftClassIdVar
std::unique_ptr<BoundLocalVariable> rightClassIdVar
ClassTypeSymbol* rightClassType

Constructor Details

BoundIsExpression Constructor

cmajor::binder::BoundIsExpression::BoundIsExpression(std::unique_ptr<BoundExpression >&& expr_, ClassTypeSymbol* rightClassType_, TypeSymbol* boolType_, std::unique_ptr<BoundLocalVariable >&& leftClassIdVar_, std::unique_ptr<BoundLocalVariable >&& rightClassIdVar_)

Definition at line 1481 of BoundExpression.cpp :
1482 :
1483 BoundExpression(expr_->GetSpan()expr_->ModuleId()BoundNodeType::boundIsExpressionboolType_)expr(std::move(expr_))rightClassType(rightClassType_)
1484 leftClassIdVar(std::move(leftClassIdVar_))rightClassIdVar(std::move(rightClassIdVar_))
1485 {
1486 }



Member Function Details

Accept Member Function

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

Definition at line 1561 of BoundExpression.cpp :
1562 {
1563     visitor.Visit(*this);
1564 }


Declaration at line 418 of BoundExpression.hpp

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

Calls: cmajor::binder::BoundNodeVisitor::Visit


Clone Member Function

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

Definition at line 1488 of BoundExpression.cpp :
1489 {
1490     std::unique_ptr<BoundExpression> clonedExpr;
1491     clonedExpr.reset(expr->Clone());
1492     return new BoundIsExpression(std::move(clonedExpr)rightClassTypeGetType()
1493         std::unique_ptr<BoundLocalVariable>(static_cast<BoundLocalVariable*>(leftClassIdVar->Clone()))
1494         std::unique_ptr<BoundLocalVariable>(static_cast<BoundLocalVariable*>(rightClassIdVar->Clone())));
1495 }


Declaration at line 415 of BoundExpression.hpp

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

Calls: cmajor::binder::BoundExpression::GetType , cmajor::binder::BoundIsExpression::Clone

Called by: cmajor::binder::BoundIsExpression::Clone


ContainsExceptionCapture Member Function

bool cmajor::binder::BoundIsExpression::ContainsExceptionCapture() const override

Definition at line 1566 of BoundExpression.cpp :
1567 {
1568     if (BoundExpression::ContainsExceptionCapture())
1569     {
1570         return true;
1571     }
1572     return expr->ContainsExceptionCapture();
1573 }


Declaration at line 421 of BoundExpression.hpp

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

Calls: cmajor::binder::BoundExpression::ContainsExceptionCapture , cmajor::binder::BoundIsExpression::ContainsExceptionCapture

Called by: cmajor::binder::BoundIsExpression::ContainsExceptionCapture


Expr Member Function

BoundExpression * cmajor::binder::BoundIsExpression::Expr()

Definition at line 422 of BoundExpression.hpp :
422 { return expr.get(); }


HasValue Member Function

bool cmajor::binder::BoundIsExpression::HasValue() const override

Definition at line 419 of BoundExpression.hpp :
419 { return true; }

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


Load Member Function

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

Definition at line 1497 of BoundExpression.cpp
Declaration at line 416 of BoundExpression.hpp

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

Calls: cmajor::binder::BoundExpression::DestroyTemporaries , cmajor::binder::BoundExpression::GetType , cmajor::binder::BoundIsExpression::Load , cmajor::binder::BoundNode::GetSpan , cmajor::binder::BoundNode::ModuleId , cmajor::ir::Emitter::CreateBitCast , cmajor::ir::Emitter::CreateCall , cmajor::ir::Emitter::CreateDefaultIrValueForULong , cmajor::ir::Emitter::CreateICmpEQ , cmajor::ir::Emitter::CreateLoad , cmajor::ir::Emitter::CreatePtrToInt , cmajor::ir::Emitter::CreateURem , cmajor::ir::Emitter::GetClassIdPtr , cmajor::ir::Emitter::GetIrTypeForBool , cmajor::ir::Emitter::GetIrTypeForFunction , cmajor::ir::Emitter::GetIrTypeForULong , cmajor::ir::Emitter::GetIrTypeForVoidPtrType , cmajor::ir::Emitter::GetOrInsertFunction , cmajor::ir::Emitter::GetVmtPtr , cmajor::ir::Emitter::Stack , cmajor::ir::ValueStack::Pop , cmajor::ir::ValueStack::Push , cmajor::symbols::ClassTypeSymbol::VmtObject

Called by: cmajor::binder::BoundIsExpression::Load


RightClassType Member Function

ClassTypeSymbol * cmajor::binder::BoundIsExpression::RightClassType()

Definition at line 423 of BoundExpression.hpp :
423 { return rightClassType; }


Store Member Function

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

Definition at line 1556 of BoundExpression.cpp :
1557 {
1558     throw Exception("cannot store to a 'is' expression"GetSpan()ModuleId());
1559 }


Declaration at line 417 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::BoundIsExpression::TypeString() const override

Definition at line 420 of BoundExpression.hpp :
420 { return "is expression"; }

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


top | up | prev | next