top | up | prev | next

ArrayCEndFunction Class

Definition at line 104 of ArrayTypeSymbol.hpp

Constructors

ArrayCEndFunction(ArrayTypeSymbol* arrayType_)
ArrayCEndFunction(const Span& span_, const boost::uuids::uuid& sourceModuleId_, const std::u32string& name_)

Member Functions

void Check() override
const char* ClassName() const override
void EmplaceType(TypeSymbol* typeSymbol, int index) override
void GenerateCall(Emitter& emitter, std::vector<GenObject*>& genObjects, OperationFlags flags, const Span& span, const boost::uuids::uuid& moduleId) override
bool IsBasicTypeOperation() const override
void Read(SymbolReader& reader) override
void Write(SymbolWriter& writer) override

Member Variables

ArrayTypeSymbol* arrayType

Constructor Details

ArrayCEndFunction Constructor

cmajor::symbols::ArrayCEndFunction::ArrayCEndFunction(ArrayTypeSymbol * arrayType_)

Definition at line 378 of ArrayTypeSymbol.cpp
Declaration at line 108 of ArrayTypeSymbol.hpp


ArrayCEndFunction Constructor

cmajor::symbols::ArrayCEndFunction::ArrayCEndFunction(const Span& span_, const boost::uuids::uuid& sourceModuleId_, const std::u32string& name_)

Definition at line 373 of ArrayTypeSymbol.cpp :
373 :
374 FunctionSymbol(SymbolType::arrayCEndFunctionSymbolspan_sourceModuleId_name_)arrayType(nullptr)
375 {
376 }


Declaration at line 107 of ArrayTypeSymbol.hpp


Member Function Details

Check Member Function

void cmajor::symbols::ArrayCEndFunction::Check() override

Definition at line 428 of ArrayTypeSymbol.cpp :
429 {
430     FunctionSymbol::Check();
431     if (!arrayType)
432     {
433         throw SymbolCheckException("array cend function has no array type"GetSpan()SourceModuleId());
434     }
435 }


Declaration at line 115 of ArrayTypeSymbol.hpp

Base class overridden functions: cmajor::symbols::ContainerSymbol::Check , cmajor::symbols::FunctionSymbol::Check , cmajor::symbols::Symbol::Check

Calls: cmajor::symbols::FunctionSymbol::Check , cmajor::symbols::Symbol::GetSpan , cmajor::symbols::Symbol::SourceModuleId


ClassName Member Function

const char * cmajor::symbols::ArrayCEndFunction::ClassName() const override

Definition at line 114 of ArrayTypeSymbol.hpp :
114 { return "ArrayCEndFunction"; }

Base class overridden functions: cmajor::symbols::ContainerSymbol::ClassName , cmajor::symbols::FunctionSymbol::ClassName , cmajor::symbols::Symbol::ClassName


EmplaceType Member Function

void cmajor::symbols::ArrayCEndFunction::EmplaceType(TypeSymbol * typeSymbol, int index) override

Definition at line 405 of ArrayTypeSymbol.cpp
Declaration at line 111 of ArrayTypeSymbol.hpp

Base class overridden functions: cmajor::symbols::FunctionSymbol::EmplaceType , cmajor::symbols::Symbol::EmplaceType

Calls: cmajor::symbols::FunctionSymbol::EmplaceType , cmajor::symbols::Symbol::GetSymbolType


GenerateCall Member Function

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

Definition at line 418 of ArrayTypeSymbol.cpp :
419 {
420     Assert(genObjects.size() == 1"array cend needs one object");
421     genObjects[0]->Load(emitterOperationFlags::addr);
422     emitter.SetCurrentDebugLocation(span);
423     void* arrayPtr = emitter.Stack().Pop();
424     void* endPtr = emitter.GetArrayEndAddress(arrayPtrarrayType->Size());
425     emitter.Stack().Push(endPtr);
426 }


Declaration at line 112 of ArrayTypeSymbol.hpp

Calls: cmajor::symbols::ArrayTypeSymbol::Size


IsBasicTypeOperation Member Function

bool cmajor::symbols::ArrayCEndFunction::IsBasicTypeOperation() const override

Definition at line 113 of ArrayTypeSymbol.hpp :
113 { return true; }

Base class overridden functions: cmajor::symbols::FunctionSymbol::IsBasicTypeOperation


Read Member Function

void cmajor::symbols::ArrayCEndFunction::Read(SymbolReader & reader) override

Definition at line 397 of ArrayTypeSymbol.cpp :
398 {
399     FunctionSymbol::Read(reader);
400     boost::uuids::uuid typeId;
401     reader.GetBinaryReader().ReadUuid(typeId);
402     reader.GetSymbolTable()->EmplaceTypeRequest(readerthistypeId1);
403 }


Declaration at line 110 of ArrayTypeSymbol.hpp

Base class overridden functions: cmajor::symbols::ContainerSymbol::Read , cmajor::symbols::FunctionSymbol::Read , cmajor::symbols::Symbol::Read

Calls: cmajor::symbols::FunctionSymbol::Read , cmajor::symbols::SymbolReader::GetBinaryReader , cmajor::symbols::SymbolReader::GetSymbolTable , cmajor::symbols::SymbolTable::EmplaceTypeRequest


Write Member Function

void cmajor::symbols::ArrayCEndFunction::Write(SymbolWriter & writer) override

Definition at line 391 of ArrayTypeSymbol.cpp :
392 {
393     FunctionSymbol::Write(writer);
394     writer.GetBinaryWriter().Write(arrayType->TypeId());
395 }


Declaration at line 109 of ArrayTypeSymbol.hpp

Base class overridden functions: cmajor::symbols::ContainerSymbol::Write , cmajor::symbols::FunctionSymbol::Write , cmajor::symbols::Symbol::Write

Calls: cmajor::symbols::ArrayCEndFunction::Write , cmajor::symbols::FunctionSymbol::Write , cmajor::symbols::SymbolWriter::GetBinaryWriter , cmajor::symbols::TypeSymbol::TypeId

Called by: cmajor::symbols::ArrayCEndFunction::Write


top | up | prev | next