top | up | prev | next

BoundExpression Abstract Class

Definition at line 43 of BoundExpression.hpp

Constructors

BoundExpression(const BoundExpression&) delete
BoundExpression(const Span& span_, const boost::uuids::uuid& moduleId_, BoundNodeType boundNodeType_, TypeSymbol* type_)

Member Functions

void AddTemporaryDestructorCall(std::unique_ptr<BoundFunctionCall>&& destructorCall)
BoundExpression* Clone() pure virtual
bool ContainsExceptionCapture() const virtual
void DestroyTemporaries(Emitter& emitter)
bool GetFlag(BoundExpressionFlags flag) const
const TypeSymbol* GetType() const
TypeSymbol* GetType()
bool HasValue() const virtual
bool IsComplete() const virtual
bool IsLvalueExpression() const virtual
void MoveTemporaryDestructorCallsTo(BoundExpression& expression)
void SetFlag(BoundExpressionFlags flag)
std::unique_ptr<Value> ToValue(BoundCompileUnit& boundCompileUnit) const virtual
std::string TypeString() const virtual
BoundExpression& operator=(const BoundExpression&) delete

Member Variables

BoundExpressionFlags flags
std::vector<std::unique_ptr<BoundFunctionCall>> temporaryDestructorCalls
TypeSymbol* type

Constructor Details

BoundExpression Constructor

cmajor::binder::BoundExpression::BoundExpression(const BoundExpression &) delete

Definition at line 47 of BoundExpression.hpp


BoundExpression Constructor

cmajor::binder::BoundExpression::BoundExpression(const Span& span_, const boost::uuids::uuid& moduleId_, BoundNodeType boundNodeType_, TypeSymbol* type_)

Definition at line 25 of BoundExpression.cpp :
  25 :
  26 BoundNode(span_moduleId_boundNodeType_)type(type_)flags(BoundExpressionFlags::none)
  27 {
  28 }



Member Function Details

AddTemporaryDestructorCall Member Function

void cmajor::binder::BoundExpression::AddTemporaryDestructorCall(std::unique_ptr<BoundFunctionCall >&& destructorCall)

Definition at line 30 of BoundExpression.cpp :
  31 {
  32     temporaryDestructorCalls.push_back(std::move(destructorCall));
  33 }


Declaration at line 60 of BoundExpression.hpp

Called by: cmajor::binder::BoundExpression::MoveTemporaryDestructorCallsTo , cmajor::binder::BoundFunction::MoveTemporaryDestructorCallsTo


Clone Member Function

BoundExpression * cmajor::binder::BoundExpression::Clone() pure virtual

Definition at line 49 of BoundExpression.hpp

Derived class overrides: cmajor::binder::BoundAddressOfExpression::Clone , cmajor::binder::BoundAsExpression::Clone , cmajor::binder::BoundBitCast::Clone , cmajor::binder::BoundClassDelegateCall::Clone , cmajor::binder::BoundClassOrClassDelegateConversionResult::Clone , cmajor::binder::BoundConjunction::Clone , cmajor::binder::BoundConstant::Clone , cmajor::binder::BoundConstructAndReturnTemporaryExpression::Clone , cmajor::binder::BoundConstructExpression::Clone , cmajor::binder::BoundConversion::Clone , cmajor::binder::BoundDelegateCall::Clone , cmajor::binder::BoundDereferenceExpression::Clone , cmajor::binder::BoundDisjunction::Clone , cmajor::binder::BoundEnumConstant::Clone , cmajor::binder::BoundFunctionCall::Clone , cmajor::binder::BoundFunctionGroupExpression::Clone , cmajor::binder::BoundFunctionPtr::Clone , cmajor::binder::BoundGlobalVariable::Clone , cmajor::binder::BoundIsExpression::Clone , cmajor::binder::BoundLiteral::Clone , cmajor::binder::BoundLocalVariable::Clone , cmajor::binder::BoundMemberExpression::Clone , cmajor::binder::BoundMemberVariable::Clone , cmajor::binder::BoundNamespaceExpression::Clone , cmajor::binder::BoundParameter::Clone , cmajor::binder::BoundReferenceToPointerExpression::Clone , cmajor::binder::BoundSizeOfExpression::Clone , cmajor::binder::BoundTemporary::Clone , cmajor::binder::BoundTypeExpression::Clone , cmajor::binder::BoundTypeIdExpression::Clone , cmajor::binder::BoundTypeNameExpression::Clone

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


ContainsExceptionCapture Member Function

bool cmajor::binder::BoundExpression::ContainsExceptionCapture() const virtual

Definition at line 55 of BoundExpression.hpp :
 55 { return GetFlag(BoundExpressionFlags::exceptionCapture); }

Derived class overrides: cmajor::binder::BoundAddressOfExpression::ContainsExceptionCapture , cmajor::binder::BoundAsExpression::ContainsExceptionCapture , cmajor::binder::BoundBitCast::ContainsExceptionCapture , cmajor::binder::BoundClassDelegateCall::ContainsExceptionCapture , cmajor::binder::BoundClassOrClassDelegateConversionResult::ContainsExceptionCapture , cmajor::binder::BoundConjunction::ContainsExceptionCapture , cmajor::binder::BoundConstructAndReturnTemporaryExpression::ContainsExceptionCapture , cmajor::binder::BoundConstructExpression::ContainsExceptionCapture , cmajor::binder::BoundConversion::ContainsExceptionCapture , cmajor::binder::BoundDelegateCall::ContainsExceptionCapture , cmajor::binder::BoundDereferenceExpression::ContainsExceptionCapture , cmajor::binder::BoundDisjunction::ContainsExceptionCapture , cmajor::binder::BoundFunctionCall::ContainsExceptionCapture , cmajor::binder::BoundIsExpression::ContainsExceptionCapture , cmajor::binder::BoundReferenceToPointerExpression::ContainsExceptionCapture , cmajor::binder::BoundTemporary::ContainsExceptionCapture , cmajor::binder::BoundTypeIdExpression::ContainsExceptionCapture , cmajor::binder::BoundTypeNameExpression::ContainsExceptionCapture

Calls: cmajor::binder::BoundExpression::GetFlag

Called by: cmajor::binder::BoundAddressOfExpression::ContainsExceptionCapture , cmajor::binder::BoundAsExpression::ContainsExceptionCapture , cmajor::binder::BoundBitCast::ContainsExceptionCapture , cmajor::binder::BoundClassDelegateCall::ContainsExceptionCapture , cmajor::binder::BoundClassOrClassDelegateConversionResult::ContainsExceptionCapture , cmajor::binder::BoundConjunction::ContainsExceptionCapture , cmajor::binder::BoundConstructAndReturnTemporaryExpression::ContainsExceptionCapture , cmajor::binder::BoundConstructExpression::ContainsExceptionCapture , cmajor::binder::BoundConversion::ContainsExceptionCapture , cmajor::binder::BoundDelegateCall::ContainsExceptionCapture , cmajor::binder::BoundDereferenceExpression::ContainsExceptionCapture , cmajor::binder::BoundDisjunction::ContainsExceptionCapture , cmajor::binder::BoundFunctionCall::ContainsExceptionCapture , cmajor::binder::BoundIsExpression::ContainsExceptionCapture , cmajor::binder::BoundReferenceToPointerExpression::ContainsExceptionCapture , cmajor::binder::BoundTemporary::ContainsExceptionCapture , cmajor::binder::BoundTypeIdExpression::ContainsExceptionCapture , cmajor::binder::BoundTypeNameExpression::ContainsExceptionCapture


DestroyTemporaries Member Function

void cmajor::binder::BoundExpression::DestroyTemporaries(Emitter & emitter)

Definition at line 44 of BoundExpression.cpp :
  45 {
  46     for (const std::std::unique_ptr<BoundFunctionCall>&destructorCall : temporaryDestructorCalls)
  47     {
  48         destructorCall->Load(emitterOperationFlags::none);
  49     }
  50 }


Declaration at line 62 of BoundExpression.hpp

Calls: cmajor::ir::GenObject::Load

Called by: cmajor::binder::BoundAddressOfExpression::Load , cmajor::binder::BoundAddressOfExpression::Store , cmajor::binder::BoundAsExpression::Load , cmajor::binder::BoundBitCast::Load , cmajor::binder::BoundClassDelegateCall::Load , cmajor::binder::BoundClassDelegateCall::Store , cmajor::binder::BoundConjunction::Load , cmajor::binder::BoundConstant::Load , cmajor::binder::BoundConstructAndReturnTemporaryExpression::Load , cmajor::binder::BoundConstructExpression::Load , cmajor::binder::BoundConversion::Load , cmajor::binder::BoundDelegateCall::Load , cmajor::binder::BoundDelegateCall::Store , cmajor::binder::BoundDereferenceExpression::Load , cmajor::binder::BoundDereferenceExpression::Store , cmajor::binder::BoundDisjunction::Load , cmajor::binder::BoundEnumConstant::Load , cmajor::binder::BoundFunctionCall::Load , cmajor::binder::BoundFunctionCall::Store , cmajor::binder::BoundFunctionPtr::Load , cmajor::binder::BoundGlobalVariable::Load , cmajor::binder::BoundGlobalVariable::Store , cmajor::binder::BoundIsExpression::Load , cmajor::binder::BoundLiteral::Load , cmajor::binder::BoundLocalVariable::Load , cmajor::binder::BoundLocalVariable::Store , cmajor::binder::BoundMemberVariable::Load , cmajor::binder::BoundMemberVariable::Store , cmajor::binder::BoundParameter::Load , cmajor::binder::BoundParameter::Store , cmajor::binder::BoundReferenceToPointerExpression::Load , cmajor::binder::BoundReferenceToPointerExpression::Store , cmajor::binder::BoundSizeOfExpression::Load , cmajor::binder::BoundTemporary::Load , cmajor::binder::BoundTypeIdExpression::Load , cmajor::binder::BoundTypeNameExpression::Load


GetFlag Member Function

bool cmajor::binder::BoundExpression::GetFlag(BoundExpressionFlags flag) const

Definition at line 58 of BoundExpression.hpp :
 58 { return (flags & flag) != BoundExpressionFlags::none;  }

Called by: cmajor::binder::BoundClassDelegateCall::Store , cmajor::binder::BoundDelegateCall::Store , cmajor::binder::BoundExpression::ContainsExceptionCapture , cmajor::binder::BoundFunctionCall::Load , cmajor::binder::BoundFunctionCall::Store


GetType Member Function

const TypeSymbol * cmajor::binder::BoundExpression::GetType() const

Definition at line 56 of BoundExpression.hpp :
 56 { return type; }

Called by: cmajor::binder::BoundClassDelegateCall::Load , cmajor::binder::BoundClassDelegateCall::Store , cmajor::binder::BoundConversion::Load , cmajor::binder::BoundDelegateCall::Load , cmajor::binder::BoundDelegateCall::Store , cmajor::binder::BoundFunctionCall::Load , cmajor::binder::BoundFunctionCall::Store


GetType Member Function

TypeSymbol * cmajor::binder::BoundExpression::GetType()

Definition at line 57 of BoundExpression.hpp :
 57 { return type; }

Called by: cmajor::binder::BoundAddressOfExpression::Clone , cmajor::binder::BoundAsExpression::Load , cmajor::binder::BoundBitCast::Clone , cmajor::binder::BoundBitCast::Load , cmajor::binder::BoundConjunction::Clone , cmajor::binder::BoundConstructAndReturnTemporaryExpression::Load , cmajor::binder::BoundConstructExpression::Clone , cmajor::binder::BoundDereferenceExpression::Clone , cmajor::binder::BoundDisjunction::Clone , cmajor::binder::BoundFunctionCall::Load , cmajor::binder::BoundFunctionPtr::Clone , cmajor::binder::BoundIsExpression::Clone , cmajor::binder::BoundIsExpression::Load , cmajor::binder::BoundLiteral::Clone , cmajor::binder::BoundReferenceToPointerExpression::Clone , cmajor::binder::BoundSizeOfExpression::Clone , cmajor::binder::BoundTypeExpression::Clone , cmajor::binder::BoundTypeIdExpression::Clone , cmajor::binder::BoundTypeIdExpression::Load , cmajor::binder::BoundTypeNameExpression::Clone , cmajor::binder::BoundTypeNameExpression::Load , cmajor::binder::ClassCopyAssignmentOperation::GenerateImplementation , cmajor::binder::ClassCopyConstructorOperation::GenerateImplementation , cmajor::binder::ClassDefaultConstructorOperation::GenerateImplementation , cmajor::binder::ClassMoveConstructorOperation::GenerateImplementation , cmajor::binder::ExpressionBinder::BindBinaryOp , cmajor::binder::ExpressionBinder::BindUnaryOp , cmajor::binder::ExpressionBinder::Visit , cmajor::binder::ExpressionBinder::Visit , cmajor::binder::ExpressionBinder::Visit , cmajor::binder::StatementBinder::Visit


HasValue Member Function

bool cmajor::binder::BoundExpression::HasValue() const virtual

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

Derived class overrides: cmajor::binder::BoundAsExpression::HasValue , cmajor::binder::BoundBitCast::HasValue , cmajor::binder::BoundClassDelegateCall::HasValue , cmajor::binder::BoundClassOrClassDelegateConversionResult::HasValue , cmajor::binder::BoundConjunction::HasValue , cmajor::binder::BoundConstant::HasValue , cmajor::binder::BoundConstructAndReturnTemporaryExpression::HasValue , cmajor::binder::BoundConstructExpression::HasValue , cmajor::binder::BoundConversion::HasValue , cmajor::binder::BoundDelegateCall::HasValue , cmajor::binder::BoundDisjunction::HasValue , cmajor::binder::BoundEnumConstant::HasValue , cmajor::binder::BoundFunctionCall::HasValue , cmajor::binder::BoundFunctionPtr::HasValue , cmajor::binder::BoundGlobalVariable::HasValue , cmajor::binder::BoundIsExpression::HasValue , cmajor::binder::BoundLiteral::HasValue , cmajor::binder::BoundLocalVariable::HasValue , cmajor::binder::BoundMemberVariable::HasValue , cmajor::binder::BoundParameter::HasValue , cmajor::binder::BoundTemporary::HasValue , cmajor::binder::BoundTypeIdExpression::HasValue , cmajor::binder::BoundTypeNameExpression::HasValue


IsComplete Member Function

bool cmajor::binder::BoundExpression::IsComplete() const virtual

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

Derived class overrides: cmajor::binder::BoundFunctionGroupExpression::IsComplete , cmajor::binder::BoundMemberExpression::IsComplete , cmajor::binder::BoundNamespaceExpression::IsComplete , cmajor::binder::BoundTypeExpression::IsComplete


IsLvalueExpression Member Function

bool cmajor::binder::BoundExpression::IsLvalueExpression() const virtual

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

Derived class overrides: cmajor::binder::BoundClassDelegateCall::IsLvalueExpression , cmajor::binder::BoundClassOrClassDelegateConversionResult::IsLvalueExpression , cmajor::binder::BoundConstructAndReturnTemporaryExpression::IsLvalueExpression , cmajor::binder::BoundConversion::IsLvalueExpression , cmajor::binder::BoundDelegateCall::IsLvalueExpression , cmajor::binder::BoundDereferenceExpression::IsLvalueExpression , cmajor::binder::BoundFunctionCall::IsLvalueExpression , cmajor::binder::BoundGlobalVariable::IsLvalueExpression , cmajor::binder::BoundLocalVariable::IsLvalueExpression , cmajor::binder::BoundMemberVariable::IsLvalueExpression , cmajor::binder::BoundParameter::IsLvalueExpression , cmajor::binder::BoundTemporary::IsLvalueExpression


MoveTemporaryDestructorCallsTo Member Function

void cmajor::binder::BoundExpression::MoveTemporaryDestructorCallsTo(BoundExpression & expression)

Definition at line 35 of BoundExpression.cpp :
  36 {
  37     for (std::std::unique_ptr<BoundFunctionCall>&destructorCall : temporaryDestructorCalls)
  38     {
  39         expression.AddTemporaryDestructorCall(std::move(destructorCall));
  40     }
  41     temporaryDestructorCalls.clear();
  42 }


Declaration at line 61 of BoundExpression.hpp

Calls: cmajor::binder::BoundExpression::AddTemporaryDestructorCall

Called by: cmajor::binder::BoundFunctionCall::AddArgument


SetFlag Member Function

void cmajor::binder::BoundExpression::SetFlag(BoundExpressionFlags flag)

Definition at line 59 of BoundExpression.hpp :
 59 { flags = flags | flag; }


ToValue Member Function

std::unique_ptr<Value > cmajor::binder::BoundExpression::ToValue(BoundCompileUnit & boundCompileUnit) const virtual

Definition at line 54 of BoundExpression.hpp :
 54 { return std::unique_ptr<Value>(); }

Derived class overrides: cmajor::binder::BoundAddressOfExpression::ToValue , cmajor::binder::BoundConstant::ToValue , cmajor::binder::BoundConversion::ToValue , cmajor::binder::BoundEnumConstant::ToValue , cmajor::binder::BoundLiteral::ToValue , cmajor::binder::BoundTemporary::ToValue


TypeString Member Function

std::string cmajor::binder::BoundExpression::TypeString() const virtual

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

Derived class overrides: cmajor::binder::BoundAddressOfExpression::TypeString , cmajor::binder::BoundAsExpression::TypeString , cmajor::binder::BoundClassDelegateCall::TypeString , cmajor::binder::BoundClassOrClassDelegateConversionResult::TypeString , cmajor::binder::BoundConstant::TypeString , cmajor::binder::BoundConstructAndReturnTemporaryExpression::TypeString , cmajor::binder::BoundConstructExpression::TypeString , cmajor::binder::BoundConversion::TypeString , cmajor::binder::BoundDelegateCall::TypeString , cmajor::binder::BoundDereferenceExpression::TypeString , cmajor::binder::BoundEnumConstant::TypeString , cmajor::binder::BoundFunctionCall::TypeString , cmajor::binder::BoundFunctionGroupExpression::TypeString , cmajor::binder::BoundGlobalVariable::TypeString , cmajor::binder::BoundIsExpression::TypeString , cmajor::binder::BoundLiteral::TypeString , cmajor::binder::BoundLocalVariable::TypeString , cmajor::binder::BoundMemberExpression::TypeString , cmajor::binder::BoundMemberVariable::TypeString , cmajor::binder::BoundNamespaceExpression::TypeString , cmajor::binder::BoundParameter::TypeString , cmajor::binder::BoundReferenceToPointerExpression::TypeString , cmajor::binder::BoundSizeOfExpression::TypeString , cmajor::binder::BoundTemporary::TypeString , cmajor::binder::BoundTypeExpression::TypeString


operator= Member Function

BoundExpression & cmajor::binder::BoundExpression::operator=(const BoundExpression &) delete

Definition at line 48 of BoundExpression.hpp


top | up | prev | next