top | up | prev | next

OperationRepository Class

Definition at line 76 of OperationRepository.hpp

Constructors

OperationRepository(BoundCompileUnit& boundCompileUnit_)

Member Functions

void Add(Operation* operation)
void CollectViableFunctions(const std::u32string& groupName, ContainerScope* containerScope, const std::vector<std::unique_ptr<BoundExpression>>& arguments, BoundFunction* currentFunction, ViableFunctionSet& viableFunctions, std::unique_ptr<Exception>& exception, const Span& span, const boost::uuids::uuid& moduleId, CollectFlags flags)
void GenerateCopyConstructorFor(ClassTypeSymbol* classTypeSymbol, ContainerScope* containerScope, BoundFunction* currentFunction, const Span& span, const boost::uuids::uuid& moduleId)
void GenerateCopyConstructorFor(InterfaceTypeSymbol* interfaceTypeSymbol, ContainerScope* containerScope, BoundFunction* currentFunction, const Span& span, const boost::uuids::uuid& moduleId)

Member Variables

BoundCompileUnit& boundCompileUnit
Operation* copyConstructorOperation
std::unordered_map<std::u32string, OperationGroup*> operationGroupMap
std::vector<std::unique_ptr<OperationGroup>> operationGroups
std::vector<std::unique_ptr<Operation>> operations

Constructor Details

OperationRepository Constructor

cmajor::binder::OperationRepository::OperationRepository(BoundCompileUnit & boundCompileUnit_)

Definition at line 4017 of OperationRepository.cpp
Declaration at line 79 of OperationRepository.hpp


Member Function Details

Add Member Function

void cmajor::binder::OperationRepository::Add(Operation * operation)

Definition at line 4058 of OperationRepository.cpp
Declaration at line 80 of OperationRepository.hpp

Calls: cmajor::binder::Operation::GroupName , cmajor::binder::OperationGroup::Add


CollectViableFunctions Member Function

void cmajor::binder::OperationRepository::CollectViableFunctions(const std::u32string& groupName, ContainerScope* containerScope, const std::vector<std::unique_ptr<BoundExpression >>& arguments, BoundFunction * currentFunction, ViableFunctionSet& viableFunctions, std::unique_ptr<Exception>& exception, const Span& span, const boost::uuids::uuid& moduleId, CollectFlags flags)

Definition at line 4076 of OperationRepository.cpp :
4078 {
4079     auto it = operationGroupMap.find(groupName);
4080     if (it != operationGroupMap.cend())
4081     {
4082         OperationGroup* operationGroup = it->second;
4083         operationGroup->CollectViableFunctions(containerScopeargumentscurrentFunctionviableFunctionsexceptionspanmoduleIdflags);
4084     }
4085 }


Calls: cmajor::binder::OperationGroup::CollectViableFunctions

Called by: cmajor::binder::BoundCompileUnit::CollectViableFunctions


GenerateCopyConstructorFor Member Function

void cmajor::binder::OperationRepository::GenerateCopyConstructorFor(ClassTypeSymbol* classTypeSymbol, ContainerScope* containerScope, BoundFunction * currentFunction, const Span& span, const boost::uuids::uuid& moduleId)

Definition at line 4087 of OperationRepository.cpp

Calls: cmajor::binder::BoundCompileUnit::AddCopyConstructorFor , cmajor::binder::BoundCompileUnit::GetCompileUnitNode , cmajor::binder::BoundCompileUnit::GetModule , cmajor::binder::BoundCompileUnit::HasCopyConstructorFor , cmajor::binder::ClassCopyConstructorOperation::GenerateImplementation

Called by: cmajor::binder::BoundCompileUnit::GenerateCopyConstructorFor


GenerateCopyConstructorFor Member Function

void cmajor::binder::OperationRepository::GenerateCopyConstructorFor(InterfaceTypeSymbol* interfaceTypeSymbol, ContainerScope* containerScope, BoundFunction * currentFunction, const Span& span, const boost::uuids::uuid& moduleId)

Definition at line 4115 of OperationRepository.cpp :
4116 {
4117     if (boundCompileUnit.HasCopyConstructorFor(interfaceTypeSymbol->TypeId())) return;
4118     std::unique_ptr<InterfaceTypeCopyConstructor> copyConstructor(new InterfaceTypeCopyConstructor(interfaceTypeSymbolspanmoduleId));
4119     boundCompileUnit.GetSymbolTable().SetFunctionIdFor(copyConstructor.get());
4120     copyConstructor->SetCompileUnit(boundCompileUnit.GetCompileUnitNode());
4121     copyConstructor->SetModule(&boundCompileUnit.GetModule());
4122     copyConstructor->SetParent(interfaceTypeSymbol);
4123     boundCompileUnit.AddCopyConstructorFor(interfaceTypeSymbol->TypeId()std::move(copyConstructor));
4124 }


Calls: cmajor::binder::BoundCompileUnit::AddCopyConstructorFor , cmajor::binder::BoundCompileUnit::GetCompileUnitNode , cmajor::binder::BoundCompileUnit::GetModule , cmajor::binder::BoundCompileUnit::GetSymbolTable , cmajor::binder::BoundCompileUnit::HasCopyConstructorFor , cmajor::symbols::SymbolTable::SetFunctionIdFor

Called by: cmajor::binder::BoundCompileUnit::GenerateCopyConstructorFor


top | up | prev | next