6.5.3.3. Edges (Dependencies)

As with node types, the edge types that are used for modeling C are also used for C++. In addition, the following edge types are either used for C++ only or their meaning is extended for C++.

Alignof_Of_Type

edge-alignof-of-type

Possible Source and Target Nodes

Source type

Target type

Views

node-method Method

node-class Class

Code Facts, Declaration Facts

node-method Method

node-type Type

Code Facts, Declaration Facts

node-method-template Method_Template

node-class Class

Declaration Facts

node-method-template Method_Template

node-type Type

Declaration Facts

node-routine Routine

node-class Class

Code Facts, Declaration Facts

node-routine Routine

node-type Type

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-class Class

Declaration Facts

node-routine-template Routine_Template

node-type Type

Declaration Facts

Description

An edge e → T of type edge-alignof-of-type Alignof_Of_Type represents the fact that entity e contains a alignof expression using type T as operand.

Catch

edge-catch

Possible Source and Target Nodes

Source type

Target type

Views

node-method Method

node-class Class

Code Facts, Declaration Facts

node-method Method

node-type Type

Code Facts, Declaration Facts

node-method-template Method_Template

node-class Class

Declaration Facts

node-method-template Method_Template

node-type Type

Declaration Facts

node-routine Routine

node-class Class

Code Facts, Declaration Facts

node-routine Routine

node-type Type

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-class Class

Declaration Facts

Description

An edge-catch Catch edge e → T represents the fact that in entity e there exists an exception handler for exceptions of type t.

Declared_In

edge-declared-in

Possible Source and Target Nodes

Source type

Target type

Views

node-class Class

node-class Class

Declaration Facts

node-class Class

node-class-template Class_Template

Declaration Facts

node-class-template Class_Template

node-class Class

Declaration Facts

node-member Member

node-class Class

Declaration Facts

node-member Member

node-class-template Class_Template

Declaration Facts

node-method Method

node-class Class

Declaration Facts

node-method Method

node-class-template Class_Template

Declaration Facts

node-method-template Method_Template

node-class Class

Declaration Facts

node-method-template Method_Template

node-class-template Class_Template

Declaration Facts

node-routine Routine

node-namespace Namespace

Declaration Facts

Description

A function member is defined outside its declaring type.

Dispatching_Call

edge-dispatching-call

Possible Source and Target Nodes

Source type

Target type

Views

node-method Method

node-method Method

Call, Code Facts, Declaration Facts

node-method-template Method_Template

node-method Method

Declaration Facts

node-routine Routine

node-method Method

Call, Code Facts, Declaration Facts

node-routine-template Routine_Template

node-method Method

Declaration Facts

Description

A dispatching call edge models a virtual call of a function member.

Extend

edge-extend

Possible Source and Target Nodes

Source type

Target type

Views

node-class Class

node-class Class

Code Facts, Declaration Facts

node-class Class

node-type Type

Declaration Facts

node-class-template Class_Template

node-class Class

Code Facts, Declaration Facts

node-class-template Class_Template

node-class-template Class_Template

Code Facts

node-class-template Class_Template

node-type Type

Code Facts, Declaration Facts

Description

A edge-extend Extend edge t₁→ t₂ indicates that entity t₁ inherits from t₂. The attributes Element.Has_Public_Visibility, Element.Has_Protected_Visibility and Element.Has_Private_Visibility indicate the kind of inheritance. The attribute Element.Is_Virtual_Inheritance indicates a virtual inheritance relationship.

Grant_Friendship_To

edge-grant-friendship-to

Possible Source and Target Nodes

Source type

Target type

Views

node-class Class

node-class Class

Code Facts, Declaration Facts

node-class Class

node-class-template Class_Template

Declaration Facts

node-class Class

node-method Method

Code Facts, Declaration Facts

node-class Class

node-routine Routine

Code Facts, Declaration Facts

node-class Class

node-routine-template Routine_Template

Declaration Facts

node-class-template Class_Template

node-class Class

Code Facts, Declaration Facts

node-class-template Class_Template

node-class-template Class_Template

Code Facts, Declaration Facts

node-class-template Class_Template

node-routine-template Routine_Template

Declaration Facts

node-class-template Class_Template

node-type Type

Declaration Facts

Description

A edge-grant-friendship-to Grant_Friendship_To edge e₁→ e₂ represents the fact that entity e₁ grants friendship to entity e₂ (e.g. caused by a friend declaration between two classes).

Implicit_Call

edge-implicit-call

Possible Source and Target Nodes

Only subtypes of this edge appear in views.

Description

An edge-implicit-call Implicit_Call e→ r represents a call from entity e to another entity r which the user has not explicitly written into the code, e.g., a call to an implicit type conversion operator.

Implicit_Dispatching_Call

edge-implicit-dispatching-call

Possible Source and Target Nodes

Only subtypes of this edge appear in views.

Description

An edge-implicit-dispatching-call Implicit_Dispatching_Call represents a dispatching call the user has not explicitly written into the code.

Implicit_Static_Call

edge-implicit-static-call

Possible Source and Target Nodes

Source type

Target type

Views

node-method Method

node-method Method

Declaration Facts

node-method-template Method_Template

node-method Method

Declaration Facts

node-routine Routine

node-method Method

Declaration Facts

node-routine-template Routine_Template

node-method Method

Declaration Facts

Description

An edge-implicit-static-call Implicit_Static_Call represents a static call the user has not explicitly written into the code.

Inherit

edge-inherit

Possible Source and Target Nodes

Source type

Target type

Views

node-member Member

node-member Member

Code Facts, Declaration Facts

node-method Method

node-method Method

Code Facts, Declaration Facts

Description

Edges of type edge-inherit Inherit are inserted if the following scenario occurs: A type B inherits from a type A. A contains a definition for a method m, and B does not override it. If in the code a call b.m(…) occurs, where the static type of the caller is B, a “copy” m(B) of m is placed within the node B, which is then the target of the call, and an edge m(B) → m of type edge-inherit Inherit is inserted. The same applies in the case of members. This special treatment is necessary to support e.g. the reflexion analysis for detecting architectural flaws.

Instance_Of

edge-instance-of

Possible Source and Target Nodes

Source type

Target type

Views

node-class Class

node-class-template Class_Template

Code Facts

node-member Member

node-member Member

Code Facts

node-method Method

node-method Method

Code Facts

node-method Method

node-method-template Method_Template

Code Facts

node-routine Routine

node-routine-template Routine_Template

Code Facts

node-type Type

node-class-template Class_Template

Code Facts

node-type Type

node-type Type

Code Facts

node-variable Variable

node-variable Variable

Code Facts

Description

A edge-instance-of Instance_Of edge e → T represents the fact that entity e (e.g. a type) is a template instance of entity t (which is one of the subtypes of node-template Template).

Instantiate

edge-instantiate

Possible Source and Target Nodes

Source type

Target type

Views

node-class Class

node-class-template Class_Template

Code Facts, Declaration Facts

node-class-template Class_Template

node-class-template Class_Template

Code Facts, Declaration Facts

node-class-template Class_Template

node-type Type

Code Facts, Declaration Facts

node-class-template Class_Template

node-variable Variable

Declaration Facts

node-member Member

node-class-template Class_Template

Code Facts, Declaration Facts

node-member Member

node-type Type

Code Facts, Declaration Facts

node-method Method

node-class-template Class_Template

Code Facts, Declaration Facts

node-method Method

node-member Member

Code Facts

node-method Method

node-method Method

Code Facts, Declaration Facts

node-method Method

node-method-template Method_Template

Code Facts, Declaration Facts

node-method Method

node-routine-template Routine_Template

Code Facts, Declaration Facts

node-method Method

node-type Type

Code Facts, Declaration Facts

node-method Method

node-variable Variable

Code Facts, Declaration Facts

node-method-template Method_Template

node-class-template Class_Template

Code Facts, Declaration Facts

node-method-template Method_Template

node-member Member

Declaration Facts

node-method-template Method_Template

node-method Method

Declaration Facts

node-method-template Method_Template

node-method-template Method_Template

Code Facts, Declaration Facts

node-method-template Method_Template

node-routine-template Routine_Template

Declaration Facts

node-method-template Method_Template

node-type Type

Code Facts, Declaration Facts

node-method-template Method_Template

node-variable Variable

Declaration Facts

node-routine Routine

node-class-template Class_Template

Code Facts, Declaration Facts

node-routine Routine

node-member Member

Code Facts

node-routine Routine

node-method Method

Code Facts, Declaration Facts

node-routine Routine

node-method-template Method_Template

Code Facts, Declaration Facts

node-routine Routine

node-routine-template Routine_Template

Code Facts, Declaration Facts

node-routine Routine

node-type Type

Code Facts, Declaration Facts

node-routine Routine

node-variable Variable

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-class-template Class_Template

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-method Method

Declaration Facts

node-routine-template Routine_Template

node-method-template Method_Template

Declaration Facts

node-routine-template Routine_Template

node-routine-template Routine_Template

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-type Type

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-variable Variable

Declaration Facts

node-type Type

node-class-template Class_Template

Code Facts, Declaration Facts

node-type Type

node-member Member

Declaration Facts

node-type Type

node-type Type

Code Facts, Declaration Facts

node-type Type

node-variable Variable

Declaration Facts

node-variable Variable

node-class-template Class_Template

Code Facts, Declaration Facts

node-variable Variable

node-type Type

Declaration Facts

Description

An edge-instantiate Instantiate e₁→ e₂ indicates that entity e₁ is using (instantiating) a template instance of a template entity e₂.

Method_Address

edge-method-address

Possible Source and Target Nodes

Source type

Target type

Views

node-method Method

node-method Method

Code Facts, Declaration Facts

node-method-template Method_Template

node-method Method

Declaration Facts

node-routine Routine

node-method Method

Code Facts, Declaration Facts

Description

A edge-method-address Method_Address edge is a special case of a edge-routine-address Routine_Address, but for a pointer-to-method usage.

New_Of_Type

edge-new-of-type

Possible Source and Target Nodes

Source type

Target type

Views

node-method Method

node-class Class

Code Facts, Declaration Facts

node-method Method

node-type Type

Code Facts, Declaration Facts

node-method-template Method_Template

node-class Class

Declaration Facts

node-method-template Method_Template

node-type Type

Declaration Facts

node-routine Routine

node-class Class

Code Facts, Declaration Facts

node-routine Routine

node-type Type

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-class Class

Declaration Facts

node-routine-template Routine_Template

node-type Type

Declaration Facts

Description

An edge e → T of type edge-new-of-type New_Of_Type represents the fact that entity e contains a new() expression, instantiating an object of type T.

Override

edge-override

Possible Source and Target Nodes

Source type

Target type

Views

node-method Method

node-method Method

Code Facts, Declaration Facts

Description

A edge-override Override edge m₁→ m₂ indicates that method m₁ overrides another method m₂ (contained in a type that the type in which m₁ is defined inherits from). Figure  Inherit and Override edges for function members. shows function members inside classes and their inheritance relationships.

Note

Code Example

class GrandParent
{
public:
  virtual void method(void) {};
  int field;
  static void staticMethod(void) {};
};
class Parent : public GrandParent {};
class Child : public Parent
{
public:
  void method (void) {};
  int field; // additional field!
};
void caller1(void)
{
  Child *ch = new Child();
  ch->method();
  ch->field = 42;
  static_cast<GrandParent*>(ch)->field = 42;
  ch->staticMethod();
}
void caller2(void)
{
  Parent *p = new Parent();
  p->method();
  p->field = 42;
}
void caller3(void)
{
  GrandParent *gp = new GrandParent();
  gp->method();
  gp->field = 42;
}
Inherit and Override edges for function members.

Inherit and Override edges for function members.

Template_Argument

edge-template-argument

Possible Source and Target Nodes

Source type

Target type

Views

node-class Class

node-class Class

Code Facts, Declaration Facts

node-class Class

node-class-template Class_Template

Code Facts, Declaration Facts

node-class Class

node-constant Constant

Declaration Facts

node-class Class

node-type Type

Code Facts, Declaration Facts

node-class-template Class_Template

node-class Class

Code Facts, Declaration Facts

node-class-template Class_Template

node-class-template Class_Template

Code Facts, Declaration Facts

node-class-template Class_Template

node-constant Constant

Declaration Facts

node-class-template Class_Template

node-type Type

Code Facts, Declaration Facts

node-class-template Class_Template

node-variable Variable

Code Facts, Declaration Facts

node-member Member

node-class Class

Code Facts, Declaration Facts

node-member Member

node-class-template Class_Template

Code Facts, Declaration Facts

node-member Member

node-constant Constant

Declaration Facts

node-member Member

node-member Member

Code Facts

node-member Member

node-type Type

Code Facts, Declaration Facts

node-member Member

node-variable Variable

Code Facts, Declaration Facts

node-method Method

node-class Class

Code Facts, Declaration Facts

node-method Method

node-class-template Class_Template

Code Facts, Declaration Facts

node-method Method

node-constant Constant

Code Facts, Declaration Facts

node-method Method

node-member Member

Code Facts, Declaration Facts

node-method Method

node-method Method

Code Facts, Declaration Facts

node-method Method

node-routine Routine

Code Facts, Declaration Facts

node-method Method

node-type Type

Code Facts, Declaration Facts

node-method Method

node-variable Variable

Declaration Facts

node-method-template Method_Template

node-class Class

Code Facts, Declaration Facts

node-method-template Method_Template

node-class-template Class_Template

Code Facts, Declaration Facts

node-method-template Method_Template

node-constant Constant

Declaration Facts

node-method-template Method_Template

node-member Member

Code Facts, Declaration Facts

node-method-template Method_Template

node-method Method

Declaration Facts

node-method-template Method_Template

node-type Type

Code Facts, Declaration Facts

node-method-template Method_Template

node-variable Variable

Code Facts, Declaration Facts

node-routine Routine

node-class Class

Code Facts, Declaration Facts

node-routine Routine

node-class-template Class_Template

Code Facts, Declaration Facts

node-routine Routine

node-constant Constant

Declaration Facts

node-routine Routine

node-member Member

Declaration Facts

node-routine Routine

node-method Method

Code Facts, Declaration Facts

node-routine Routine

node-routine Routine

Code Facts, Declaration Facts

node-routine Routine

node-type Type

Code Facts, Declaration Facts

node-routine Routine

node-variable Variable

Declaration Facts

node-routine-template Routine_Template

node-class Class

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-class-template Class_Template

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-constant Constant

Declaration Facts

node-routine-template Routine_Template

node-type Type

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-variable Variable

Code Facts, Declaration Facts

node-type Type

node-class Class

Code Facts, Declaration Facts

node-type Type

node-class-template Class_Template

Code Facts, Declaration Facts

node-type Type

node-constant Constant

Code Facts, Declaration Facts

node-type Type

node-member Member

Code Facts, Declaration Facts

node-type Type

node-method Method

Code Facts, Declaration Facts

node-type Type

node-routine Routine

Code Facts, Declaration Facts

node-type Type

node-type Type

Code Facts, Declaration Facts

node-type Type

node-variable Variable

Declaration Facts

node-variable Variable

node-class Class

Code Facts, Declaration Facts

node-variable Variable

node-class-template Class_Template

Code Facts, Declaration Facts

node-variable Variable

node-routine Routine

Code Facts, Declaration Facts

node-variable Variable

node-type Type

Code Facts, Declaration Facts

node-variable Variable

node-variable Variable

Declaration Facts

Description

An edge e → T of type edge-template-argument Template_Argument represents the fact that T is used as a template argument in the context of entity e. For example, Figure  Template_Argument edge from f to B. shows the generated Template_Argument edge for function f to class B from the code example.

Note

Code Example

class B {};
template <typename T> class A {};

void f() { A<B> a; }
Template_Argument edge from ``f`` to ``B``.

Template_Argument edge from f to B.

Throw

edge-throw

Possible Source and Target Nodes

Source type

Target type

Views

node-method Method

node-class Class

Code Facts, Declaration Facts

node-method Method

node-type Type

Code Facts, Declaration Facts

node-method-template Method_Template

node-class Class

Declaration Facts

node-method-template Method_Template

node-type Type

Declaration Facts

node-routine Routine

node-class Class

Code Facts, Declaration Facts

node-routine Routine

node-type Type

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-class Class

Declaration Facts

node-routine-template Routine_Template

node-class-template Class_Template

Declaration Facts

Description

An edge e → T of type edge-throw Throw represents the fact that in entity e an exception of type t might be thrown (by a throw statement).

Typeid_Of_Type

edge-typeid-of-type

Possible Source and Target Nodes

Source type

Target type

Views

node-method Method

node-class Class

Code Facts, Declaration Facts

node-method Method

node-type Type

Code Facts, Declaration Facts

node-method-template Method_Template

node-class Class

Declaration Facts

node-method-template Method_Template

node-type Type

Declaration Facts

node-routine Routine

node-class Class

Code Facts, Declaration Facts

node-routine Routine

node-type Type

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-class Class

Declaration Facts

node-routine-template Routine_Template

node-type Type

Declaration Facts

Description

An edge e → T of type edge-typeid-of-type Typeid_Of_Type represents the fact that entity e contains a typeid expression using type T as operand.

Typeof_Of_Type

edge-typeof-of-type

Possible Source and Target Nodes

Source type

Target type

Views

node-method Method

node-class Class

Code Facts, Declaration Facts

node-method Method

node-class-template Class_Template

Code Facts, Declaration Facts

node-method Method

node-type Type

Code Facts, Declaration Facts

node-method-template Method_Template

node-class Class

Code Facts, Declaration Facts

node-method-template Method_Template

node-class-template Class_Template

Code Facts, Declaration Facts

node-method-template Method_Template

node-type Type

Code Facts, Declaration Facts

node-routine Routine

node-class Class

Code Facts, Declaration Facts

node-routine Routine

node-class-template Class_Template

Code Facts, Declaration Facts

node-routine Routine

node-type Type

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-class Class

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-class-template Class_Template

Code Facts, Declaration Facts

node-routine-template Routine_Template

node-type Type

Code Facts, Declaration Facts

Description

An edge e → T of type edge-typeof-of-type Typeof_Of_Type represents the fact that entity e contains a typeof expression using type T as operand.