Envision
A visual programming IDE for object-oriented languages
List of all members | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions
OOModel::OOReference Class Reference
Inheritance diagram for OOModel::OOReference:
Core::Reflect< Base >

Public Member Functions

virtual Node * computeTarget () const override
 

Static Public Member Functions

static void unresolveOOReferencesAfterSubTree (Model::Node *subTree)
 

Private Types

enum class  ReferenceTargetKind { Unknown , Container , Type , Callable , Assignable , Variable }
 

Private Member Functions

ReferenceTargetKind referenceTargetKind () const
 
void removeLessSpecificMethods (QSet< Method * > &methods) const
 
void removeMethodsWithDifferentNumberOfArguments (QSet< Method * > &methods, MethodCallExpression *callExpression) const
 
void removeMethodsWithIncompatibleTypeOfArguments (QSet< Method * > &methods, MethodCallExpression *callExpression) const
 
void removeOverridenMethods (QSet< Method * > &methods) const
 
Model::NoderesolveAmbiguity (QSet< Model::Node * > &candidates) const
 
Model::NoderesolveAmbiguousMethodCall (QSet< Model::Node * > &candidates, MethodCallExpression *callExpression) const
 
virtual void targetChanged (Node *oldTarget) override
 

Additional Inherited Members

- Protected Types inherited from Core::Reflect< Base >
using Super = Reflect< Base >
 

Member Enumeration Documentation

◆ ReferenceTargetKind

Enumerator
Unknown 
Container 
Type 
Callable 
Assignable 
Variable 

Member Function Documentation

◆ computeTarget()

Model::Node * OOModel::OOReference::computeTarget ( ) const
overridevirtual

◆ referenceTargetKind()

OOReference::ReferenceTargetKind OOModel::OOReference::referenceTargetKind ( ) const
private

◆ removeLessSpecificMethods()

void OOModel::OOReference::removeLessSpecificMethods ( QSet< Method * > &  methods) const
private

◆ removeMethodsWithDifferentNumberOfArguments()

void OOModel::OOReference::removeMethodsWithDifferentNumberOfArguments ( QSet< Method * > &  methods,
MethodCallExpression callExpression 
) const
private

◆ removeMethodsWithIncompatibleTypeOfArguments()

void OOModel::OOReference::removeMethodsWithIncompatibleTypeOfArguments ( QSet< Method * > &  methods,
MethodCallExpression callExpression 
) const
private

◆ removeOverridenMethods()

void OOModel::OOReference::removeOverridenMethods ( QSet< Method * > &  methods) const
private

◆ resolveAmbiguity()

Model::Node * OOModel::OOReference::resolveAmbiguity ( QSet< Model::Node * > &  candidates) const
private

◆ resolveAmbiguousMethodCall()

Model::Node * OOModel::OOReference::resolveAmbiguousMethodCall ( QSet< Model::Node * > &  candidates,
MethodCallExpression callExpression 
) const
private

◆ targetChanged()

void OOModel::OOReference::targetChanged ( Node *  oldTarget)
overrideprivatevirtual

◆ unresolveOOReferencesAfterSubTree()

void OOModel::OOReference::unresolveOOReferencesAfterSubTree ( Model::Node subTree)
static