top | up | prev | next

PointerMoveAssignment Class

Definition at line 342 of OperationRepository.cpp

Constructors

PointerMoveAssignment(TypeSymbol* type_, TypeSymbol* voidType_, const Span& span, const boost::uuids::uuid& moduleId)

Member Functions

const char* ClassName() const override
SymbolAccess DeclaredAccess() const override
void GenerateCall(Emitter& emitter, std::vector<GenObject*>& genObjects, OperationFlags flags, const Span& span, const boost::uuids::uuid& moduleId) override
bool IsBasicTypeOperation() const override

Member Variables

TypeSymbol* type

Constructor Details

PointerMoveAssignment Constructor

cmajor::binder::PointerMoveAssignment::PointerMoveAssignment(TypeSymbol* type_, TypeSymbol* voidType_, const Span& span, const boost::uuids::uuid& moduleId)

Definition at line 354 of OperationRepository.cpp
Declaration at line 345 of OperationRepository.cpp


Member Function Details

ClassName Member Function

const char * cmajor::binder::PointerMoveAssignment::ClassName() const override

Definition at line 349 of OperationRepository.cpp :
 349 { return "PointerMoveAssignment"; }


DeclaredAccess Member Function

SymbolAccess cmajor::binder::PointerMoveAssignment::DeclaredAccess() const override

Definition at line 346 of OperationRepository.cpp :
 346 { return SymbolAccess::public_; }


GenerateCall Member Function

void cmajor::binder::PointerMoveAssignment::GenerateCall(Emitter& emitter, std::vector<GenObject*>& genObjects, OperationFlags flags, const Span& span, const boost::uuids::uuid& moduleId) override

Definition at line 368 of OperationRepository.cpp :
 369 {
 370     Assert(genObjects.size() == 2"copy assignment needs two objects");
 371     genObjects[1]->Load(emitterOperationFlags::none);
 372     void* rvalueRefValue = emitter.Stack().Pop();
 373     emitter.Stack().Push(emitter.CreateLoad(rvalueRefValue));
 374     genObjects[0]->Store(emitterOperationFlags::none);
 375 }


Declaration at line 347 of OperationRepository.cpp


IsBasicTypeOperation Member Function

bool cmajor::binder::PointerMoveAssignment::IsBasicTypeOperation() const override

Definition at line 348 of OperationRepository.cpp :
 348 { return true; }


top | up | prev | next