top | up | prev | next

ArrayCBeginFunction Class

Definition at line 88 of ArrayTypeSymbol.hpp

Constructors

ArrayCBeginFunction(ArrayTypeSymbol* arrayType_)
ArrayCBeginFunction(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

ArrayCBeginFunction Constructor

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

Definition at line 314 of ArrayTypeSymbol.cpp
Declaration at line 92 of ArrayTypeSymbol.hpp


ArrayCBeginFunction Constructor

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

Definition at line 309 of ArrayTypeSymbol.cpp :
309 :
310 FunctionSymbol(SymbolType::arrayCBeginFunctionSymbolspan_sourceModuleId_name_)arrayType(nullptr)
311 {
312 }


Declaration at line 91 of ArrayTypeSymbol.hpp


Member Function Details

Check Member Function

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

Definition at line 364 of ArrayTypeSymbol.cpp :
365 {
366     FunctionSymbol::Check();
367     if (!arrayType)
368     {
369         throw SymbolCheckException("array cbegin function has no array type"GetSpan()SourceModuleId());
370     }
371 }


Declaration at line 99 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::ArrayCBeginFunction::ClassName() const override

Definition at line 98 of ArrayTypeSymbol.hpp :
 98 { return "ArrayCBeginFunction"; }

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


EmplaceType Member Function

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

Definition at line 341 of ArrayTypeSymbol.cpp
Declaration at line 95 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::ArrayCBeginFunction::GenerateCall(Emitter& emitter, std::vector<GenObject*>& genObjects, OperationFlags flags, const Span& span, const boost::uuids::uuid& moduleId) override

Definition at line 354 of ArrayTypeSymbol.cpp :
355 {
356     Assert(genObjects.size() == 1"array cbegin needs one object");
357     genObjects[0]->Load(emitterOperationFlags::addr);
358     emitter.SetCurrentDebugLocation(span);
359     void* arrayPtr = emitter.Stack().Pop();
360     void* beginPtr = emitter.GetArrayBeginAddress(arrayPtr);
361     emitter.Stack().Push(beginPtr);
362 }


Declaration at line 96 of ArrayTypeSymbol.hpp


IsBasicTypeOperation Member Function

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

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

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


Read Member Function

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

Definition at line 333 of ArrayTypeSymbol.cpp :
334 {
335     FunctionSymbol::Read(reader);
336     boost::uuids::uuid typeId;
337     reader.GetBinaryReader().ReadUuid(typeId);
338     reader.GetSymbolTable()->EmplaceTypeRequest(readerthistypeId1);
339 }


Declaration at line 94 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::ArrayCBeginFunction::Write(SymbolWriter & writer) override

Definition at line 327 of ArrayTypeSymbol.cpp :
328 {
329     FunctionSymbol::Write(writer);
330     writer.GetBinaryWriter().Write(arrayType->TypeId());
331 }


Declaration at line 93 of ArrayTypeSymbol.hpp

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

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

Called by: cmajor::symbols::ArrayCBeginFunction::Write


top | up | prev | next