6.5.3.2. Nodes (Entities)

The node types that are used for modeling C are also used for C++. In addition, the following node types are either used for C++ only or their meaning is extended for C++; also several node attributes are added.

Additional Common Attributes

The attribute Element.Is_Anonymous is used to model entities without a name (like unnamed structs etc.). Entities declared within the body of either a method of a template type or within the body of a template routine are also marked with Element.Is_Anonymous.

Class

node-class Class (inherits from: node-type Type)

Subtypes

none

Containing Views

Code Facts, Declaration Facts, File, Module

Description

The node-class Class node type represents C++ classes (and also structs, unions as well as enums).

Attributes

Attribute name

Attribute type

Inherited from

Element.Has_Ambiguous_Declaration

Toggle

-

Element.Has_Private_Visibility

Toggle

-

Element.Has_Protected_Visibility

Toggle

-

Element.Has_Public_Visibility

Toggle

-

Element.Is_Abstract

Toggle

-

Element.Is_Anonymous

Toggle

-

Element.Is_Artificial

Toggle

-

Element.Is_Enum

Toggle

-

Element.Is_Interface

Toggle

-

Element.Is_Struct

Toggle

-

Element.Is_Template_Instance

Toggle

-

Element.Is_Template_Specialization

Toggle

-

Element.Is_Typedef_To_Anonymous

Toggle

-

Element.Is_Union

Toggle

-

Linkage.Is_Definition

Toggle

-

Element.Has_Ambiguous_Declaration

Toggle

Type

Element.Has_Private_Visibility

Toggle

Type

Element.Has_Protected_Visibility

Toggle

Type

Element.Has_Public_Visibility

Toggle

Type

Element.Is_Abstract

Toggle

Type

Element.Is_Anonymous

Toggle

Type

Element.Is_Artificial

Toggle

Type

Element.Is_Enum

Toggle

Type

Element.Is_Struct

Toggle

Type

Element.Is_Template_Instance

Toggle

Type

Element.Is_Template_Parameter

Toggle

Type

Element.Is_Typedef_To_Anonymous

Toggle

Type

Element.Is_Union

Toggle

Type

Linkage.Is_Ambiguous_Name

Toggle

Source_Entity

Linkage.Is_Definition

Toggle

Source_Entity

Linkage.Is_ODR_Violation

Toggle

Source_Entity

Linkage.LIR_Node

Integer

Source_Entity

Linkage.Name

String

Source_Entity

Linkage.PIR_Node

Integer

Source_Entity

Source.Body_End_Column

Integer

Source_Entity

Source.Body_End_Line

Integer

Source_Entity

Source.Body_Start_Column

Integer

Source_Entity

Source.Body_Start_Line

Integer

Source_Entity

Source.Column

Integer

Source_Entity

Source.Declaration_Start

Integer

Source_Entity

Source.File

String

Source_Entity

Source.Line

Integer

Source_Entity

Source.Name

String

Source_Entity

Source.Path

String

Source_Entity

Source.Physical_File

String

Source_Entity

Source.Physical_Path

String

Source_Entity

Source.Physical_Region_Length

Integer

Source_Entity

Source.Physical_Region_Start

Integer

Source_Entity

Source.Region_Length

Integer

Source_Entity

Source.Region_Start

Integer

Source_Entity

Source.Signature_Start

Integer

Source_Entity

Source.Template_Line

Integer

Source_Entity

The Element.Is_Abstract (is_abstract-icon) attribute indicates that the class contains pure virtual methods (i.e., the class is abstract).

The attribute Element.Is_Lambda is used in Code Facts to mark compiler-generated lambda closure classes.

Figure  Example: Inheritance edges for function members and data members. shows data and function members inside classes and their inheritance relationships.

Note

Code Example

class GrandParentClass
{
public:
  virtual void virtualMethod(void);
  void normalMethod(void);
  int dataMember;
};

class ParentClass : public GrandParentClass
{
public:
  int newDataMember;
};

class ChildClass : public ParentClass
{
public:
  virtual void virtualMethod(void);
  void normalMethod(void);
  int dataMember; // overlays the one in GrandParentClass
};
Example: Inheritance edges for function members and data members.

Example: Inheritance edges for function members and data members.

Member

node-member Member (inherits from: node-object Source_Entity)

Subtypes

none

Containing Views

Code Facts, Declaration Facts, File, Module

Description

node-member Member node type represents data members inside of classes for C++.

Attributes

Attribute name

Attribute type

Inherited from

Element.Has_Ambiguous_Declaration

Toggle

-

Element.Has_Private_Visibility

Toggle

-

Element.Has_Protected_Visibility

Toggle

-

Element.Has_Public_Visibility

Toggle

-

Element.Is_Anonymous

Toggle

-

Element.Is_Artificial

Toggle

-

Element.Is_Const

Toggle

-

Element.Is_Inherited

Toggle

-

Element.Is_Mutable

Toggle

-

Element.Is_Static

Toggle

-

Element.Is_Template_Instance

Toggle

-

Element.Is_Volatile

Toggle

-

Linkage.Is_Ambiguous_Name

Toggle

Source_Entity

Linkage.Is_Definition

Toggle

Source_Entity

Linkage.Is_ODR_Violation

Toggle

Source_Entity

Linkage.LIR_Node

Integer

Source_Entity

Linkage.Name

String

Source_Entity

Linkage.PIR_Node

Integer

Source_Entity

Source.Body_End_Column

Integer

Source_Entity

Source.Body_End_Line

Integer

Source_Entity

Source.Body_Start_Column

Integer

Source_Entity

Source.Body_Start_Line

Integer

Source_Entity

Source.Column

Integer

Source_Entity

Source.Declaration_Start

Integer

Source_Entity

Source.File

String

Source_Entity

Source.Line

Integer

Source_Entity

Source.Name

String

Source_Entity

Source.Path

String

Source_Entity

Source.Physical_File

String

Source_Entity

Source.Physical_Path

String

Source_Entity

Source.Physical_Region_Length

Integer

Source_Entity

Source.Physical_Region_Start

Integer

Source_Entity

Source.Region_Length

Integer

Source_Entity

Source.Region_Start

Integer

Source_Entity

Source.Signature_Start

Integer

Source_Entity

Source.Template_Line

Integer

Source_Entity

The attribute is_static-iconElement.Is_Static resp. is_const-icon Element.Is_Const resp. is_volatile-icon Element.Is_Volatile indicate that the node-member Member is a static resp. const resp. volatile data member.

Visibility

Visibility is expressed by the attributes

  • has_private_visibility-iconElement.Has_Private_Visibility,

  • has_protected_visibility-iconElement.Has_Protected_Visibility,

  • has_public_visibility-iconElement.Has_Public_Visibility.

Method

node-method Method (inherits from: node-routine Routine)

Subtypes

none

Containing Views

Call, Code Facts, Declaration Facts, File, Module

Description

The node-method Method node type is a subtype of the node-routine Routine node type. It is used for modeling member functions (either static or non-static, virtual or non-virtual ones, destructors and constructors, and in-class operators).

Attributes

Attribute name

Attribute type

Inherited from

Element.Has_Private_Visibility

Toggle

-

Element.Has_Protected_Visibility

Toggle

-

Element.Has_Public_Visibility

Toggle

-

Element.Is_Abstract

Toggle

-

Element.Is_Const_Method

Toggle

-

Element.Is_Constructor

Toggle

-

Element.Is_Defaulted

Toggle

-

Element.Is_Deleted

Toggle

-

Element.Is_Destructor

Toggle

-

Element.Is_Explicit

Toggle

-

Element.Is_Inherited

Toggle

-

Element.Is_Template_Instance

Toggle

-

Element.Is_Virtual_Method

Toggle

-

Analysis.Dead_Code

Toggle

Routine

Element.Has_Ambiguous_Declaration

Toggle

Routine

Element.Has_Ellipsis

Toggle

Routine

Element.Is_Anonymous

Toggle

Routine

Element.Is_Artificial

Toggle

Routine

Element.Is_Const_Method

Toggle

Routine

Element.Is_Constexpr

Toggle

Routine

Element.Is_Deleted

Toggle

Routine

Element.Is_Final

Toggle

Routine

Element.Is_Inherited

Toggle

Routine

Element.Is_Inline

Toggle

Routine

Element.Is_Operator

Toggle

Routine

Element.Is_Static

Toggle

Routine

Element.Is_Template_Instance

Toggle

Routine

Element.Is_Template_Parameter

Toggle

Routine

Element.Is_Template_Specialization

Toggle

Routine

Element.Is_Volatile_Method

Toggle

Routine

Linkage.Is_Ambiguous_Name

Toggle

Source_Entity

Linkage.Is_Definition

Toggle

Source_Entity

Linkage.Is_ODR_Violation

Toggle

Source_Entity

Linkage.LIR_Node

Integer

Source_Entity

Linkage.Name

String

Source_Entity

Linkage.PIR_Node

Integer

Source_Entity

Source.Body_End_Column

Integer

Source_Entity

Source.Body_End_Line

Integer

Source_Entity

Source.Body_Start_Column

Integer

Source_Entity

Source.Body_Start_Line

Integer

Source_Entity

Source.Column

Integer

Source_Entity

Source.Declaration_Start

Integer

Source_Entity

Source.File

String

Source_Entity

Source.Line

Integer

Source_Entity

Source.Name

String

Source_Entity

Source.Path

String

Source_Entity

Source.Physical_File

String

Source_Entity

Source.Physical_Path

String

Source_Entity

Source.Physical_Region_Length

Integer

Source_Entity

Source.Physical_Region_Start

Integer

Source_Entity

Source.Region_Length

Integer

Source_Entity

Source.Region_Start

Integer

Source_Entity

Source.Signature_Start

Integer

Source_Entity

Source.Template_Line

Integer

Source_Entity

Visibility

Visibility is expressed by the attributes

  • has_private_visibility-iconElement.Has_Private_Visibility,

  • has_protected_visibility-iconElement.Has_Protected_Visibility,

  • has_public_visibility-iconElement.Has_Public_Visibility.

The attributes is_static-icon Element.Is_Static resp. is_abstract-icon Element.Is_Abstract resp. is_virtual_method-icon Element.Is_Virtual resp. is_const-icon resp. Element.Is_Const resp. is_inline-icon Element.Is_Inline resp.is_final-icon Element.Is_Final indicate that the method is a static resp. abstract (pure virtual) resp. virtual resp. const resp. inline resp. final method.

The attributes Element.Is_Constructor (is_constructor-icon) and Element.Is_Destructor (is_destructor-icon) indicate that the method is a constructor/destructor.

The attribute Element.Number_Of_Parameters of type Integer contains the number of parameters of the method (the implicit this parameter is not counted) .

Note

In the RFG, a method is not indicated by a subclass of node type node-member Member but of node type node-routine Routine. This attempts to reflect that a method is an executable element like a routine.

Note

Some routines and methods are generated by the C++ compiler and are not directly written in the source code. This includes special operators, default constructors, destructors, and copy constructors. The C++ front end creates nodes for these elements and in the RFG they have the attribute Element.Is_Artificial set.

Note

Code Example

class SomeClass {
public:
  SomeClass (void);
  ~SomeClass (void);
};
Example: Constructors and destructors.

Example: Constructors and destructors.

Note

Code Example

class SomeClass {
public:
  void method (void);
  static void staticMethod (void);
  virtual void abstractMethod(void) = 0;
  virtual void virtualMethod(void);
  void constMethod(void) const;
  void inlineMethod(void) {};
};
Example: Ordinary class members.

Example: Ordinary class members.

Note

Code Example

class SomeClass {
public:
  void publicMethod (void);
protected:
  void protectedMethod (void);
private:
  void privateMethod (void);
};
Example: Visibility of class members: public, private, protected.

Example: Visibility of class members: public, private, protected.

Method_Template

node-method-template Method_Template (inherits from: node-routine-template Routine_Template)

Subtypes

none

Containing Views

Code Facts, Declaration Facts, File, Module

Description

node-method-template Method_Template is used for modeling template member functions inside classes. It is connected to its instances (which are node-method Method nodes) by edge-instantiate Instantiate edges.

Attributes

Attribute name

Attribute type

Inherited from

Analysis.Dead_Code

Toggle

-

Element.Has_Private_Visibility

Toggle

-

Element.Has_Protected_Visibility

Toggle

-

Element.Has_Public_Visibility

Toggle

-

Element.Is_Artificial

Toggle

-

Element.Is_Const_Method

Toggle

-

Element.Is_Constructor

Toggle

-

Element.Is_Deleted

Toggle

-

Element.Is_Destructor

Toggle

-

Element.Is_Explicit

Toggle

-

Element.Is_Inline

Toggle

-

Element.Is_Static

Toggle

-

Element.Is_Template_Instance

Toggle

-

Element.Is_Template_Parameter

Toggle

-

Element.Is_Volatile_Method

Toggle

-

Analysis.Dead_Code

Toggle

Routine_Template

Element.Has_Ellipsis

Toggle

Routine_Template

Element.Is_Deleted

Toggle

Routine_Template

Element.Is_Inline

Toggle

Routine_Template

Element.Is_Static

Toggle

Routine_Template

Element.Has_Ambiguous_Declaration

Toggle

Template

Element.Is_Template_Parameter

Toggle

Template

Linkage.Is_Ambiguous_Name

Toggle

Source_Entity

Linkage.Is_Definition

Toggle

Source_Entity

Linkage.Is_ODR_Violation

Toggle

Source_Entity

Linkage.LIR_Node

Integer

Source_Entity

Linkage.Name

String

Source_Entity

Linkage.PIR_Node

Integer

Source_Entity

Source.Body_End_Column

Integer

Source_Entity

Source.Body_End_Line

Integer

Source_Entity

Source.Body_Start_Column

Integer

Source_Entity

Source.Body_Start_Line

Integer

Source_Entity

Source.Column

Integer

Source_Entity

Source.Declaration_Start

Integer

Source_Entity

Source.File

String

Source_Entity

Source.Line

Integer

Source_Entity

Source.Name

String

Source_Entity

Source.Path

String

Source_Entity

Source.Physical_File

String

Source_Entity

Source.Physical_Path

String

Source_Entity

Source.Physical_Region_Length

Integer

Source_Entity

Source.Physical_Region_Start

Integer

Source_Entity

Source.Region_Length

Integer

Source_Entity

Source.Region_Start

Integer

Source_Entity

Source.Signature_Start

Integer

Source_Entity

Source.Template_Line

Integer

Source_Entity

Namespace

node-namespace Namespace (inherits from: node-object Source_Entity)

Subtypes

none

Containing Views

Code Facts, Declaration Facts, File

Description

A node-namespace Namespace groups elements of a C++ namespace. The namespace hierarchy is an orthogonal hierarchy to the module and file hierarchy. Elements are contained in namespaces by edge-enclosing Enclosing edges just like members are enclosed in types.

Attributes

Attribute name

Attribute type

Inherited from

Element.Is_Anonymous

Toggle

-

Linkage.Is_Ambiguous_Name

Toggle

Source_Entity

Linkage.Is_Definition

Toggle

Source_Entity

Linkage.Is_ODR_Violation

Toggle

Source_Entity

Linkage.LIR_Node

Integer

Source_Entity

Linkage.Name

String

Source_Entity

Linkage.PIR_Node

Integer

Source_Entity

Source.Body_End_Column

Integer

Source_Entity

Source.Body_End_Line

Integer

Source_Entity

Source.Body_Start_Column

Integer

Source_Entity

Source.Body_Start_Line

Integer

Source_Entity

Source.Column

Integer

Source_Entity

Source.Declaration_Start

Integer

Source_Entity

Source.File

String

Source_Entity

Source.Line

Integer

Source_Entity

Source.Name

String

Source_Entity

Source.Path

String

Source_Entity

Source.Physical_File

String

Source_Entity

Source.Physical_Path

String

Source_Entity

Source.Physical_Region_Length

Integer

Source_Entity

Source.Physical_Region_Start

Integer

Source_Entity

Source.Region_Length

Integer

Source_Entity

Source.Region_Start

Integer

Source_Entity

Source.Signature_Start

Integer

Source_Entity

Source.Template_Line

Integer

Source_Entity

Routine

node-routine Routine (inherits from: node-object Source_Entity)

Subtypes

node-method Method

Containing Views

Call, Code Facts, Declaration Facts, File, Module

Description

A node-routine Routine represents a function (i.e., a non-member routine).

Attributes

Attribute name

Attribute type

Inherited from

Analysis.Dead_Code

Toggle

-

Element.Has_Ambiguous_Declaration

Toggle

-

Element.Has_Ellipsis

Toggle

-

Element.Is_Anonymous

Toggle

-

Element.Is_Artificial

Toggle

-

Element.Is_Const_Method

Toggle

-

Element.Is_Constexpr

Toggle

-

Element.Is_Deleted

Toggle

-

Element.Is_Final

Toggle

-

Element.Is_Inherited

Toggle

-

Element.Is_Inline

Toggle

-

Element.Is_Operator

Toggle

-

Element.Is_Static

Toggle

-

Element.Is_Template_Instance

Toggle

-

Element.Is_Template_Parameter

Toggle

-

Element.Is_Template_Specialization

Toggle

-

Element.Is_Volatile_Method

Toggle

-

Linkage.Is_Ambiguous_Name

Toggle

Source_Entity

Linkage.Is_Definition

Toggle

Source_Entity

Linkage.Is_ODR_Violation

Toggle

Source_Entity

Linkage.LIR_Node

Integer

Source_Entity

Linkage.Name

String

Source_Entity

Linkage.PIR_Node

Integer

Source_Entity

Source.Body_End_Column

Integer

Source_Entity

Source.Body_End_Line

Integer

Source_Entity

Source.Body_Start_Column

Integer

Source_Entity

Source.Body_Start_Line

Integer

Source_Entity

Source.Column

Integer

Source_Entity

Source.Declaration_Start

Integer

Source_Entity

Source.File

String

Source_Entity

Source.Line

Integer

Source_Entity

Source.Name

String

Source_Entity

Source.Path

String

Source_Entity

Source.Physical_File

String

Source_Entity

Source.Physical_Path

String

Source_Entity

Source.Physical_Region_Length

Integer

Source_Entity

Source.Physical_Region_Start

Integer

Source_Entity

Source.Region_Length

Integer

Source_Entity

Source.Region_Start

Integer

Source_Entity

Source.Signature_Start

Integer

Source_Entity

Source.Template_Line

Integer

Source_Entity

The attribute Element.Is_Lambda is used in Declaration Facts to mark lambda functions (which can appear nested inside other routine nodes).

Routine_Template

node-routine-template Routine_Template (inherits from: node-template Template)

Subtypes

node-method-template Method_Template

Containing Views

Code Facts, Declaration Facts, File, Module

Description

A node-routine-template Routine_Template represents uninstantiated template functions. It is connected to its instances (which are node-routine Routine nodes) by edge-instantiate Instantiate edges.

Attributes

Attribute name

Attribute type

Inherited from

Analysis.Dead_Code

Toggle

-

Element.Has_Ellipsis

Toggle

-

Element.Is_Deleted

Toggle

-

Element.Is_Inline

Toggle

-

Element.Is_Static

Toggle

-

Element.Has_Ambiguous_Declaration

Toggle

Template

Element.Is_Template_Parameter

Toggle

Template

Linkage.Is_Ambiguous_Name

Toggle

Source_Entity

Linkage.Is_Definition

Toggle

Source_Entity

Linkage.Is_ODR_Violation

Toggle

Source_Entity

Linkage.LIR_Node

Integer

Source_Entity

Linkage.Name

String

Source_Entity

Linkage.PIR_Node

Integer

Source_Entity

Source.Body_End_Column

Integer

Source_Entity

Source.Body_End_Line

Integer

Source_Entity

Source.Body_Start_Column

Integer

Source_Entity

Source.Body_Start_Line

Integer

Source_Entity

Source.Column

Integer

Source_Entity

Source.Declaration_Start

Integer

Source_Entity

Source.File

String

Source_Entity

Source.Line

Integer

Source_Entity

Source.Name

String

Source_Entity

Source.Path

String

Source_Entity

Source.Physical_File

String

Source_Entity

Source.Physical_Path

String

Source_Entity

Source.Physical_Region_Length

Integer

Source_Entity

Source.Physical_Region_Start

Integer

Source_Entity

Source.Region_Length

Integer

Source_Entity

Source.Region_Start

Integer

Source_Entity

Source.Signature_Start

Integer

Source_Entity

Source.Template_Line

Integer

Source_Entity

Template

node-template Template (inherits from: node-object Source_Entity)

Subtypes

node-class-template Class_Template, node-routine-template Routine_Template

Containing Views

none (only subtypes of node-template Template are contained in views)

Description

A node-class-template Class_Template represents prototype instantiations of template classes. It is connected to its instances (which are node-class Class nodes) by edge-instantiate Instantiate edges. The same holds for node-routine-template Routine_Template and node-method-template Method_Template.

Note

The instantiated elements are also part of the Code Facts view. Instances are tagged by the toggle attribute Element.Is_Template_Instance is_template_instance-icon .

Attributes

Attribute name

Attribute type

Inherited from

Element.Has_Ambiguous_Declaration

Toggle

-

Element.Is_Template_Parameter

Toggle

-

Linkage.Is_Ambiguous_Name

Toggle

Source_Entity

Linkage.Is_Definition

Toggle

Source_Entity

Linkage.Is_ODR_Violation

Toggle

Source_Entity

Linkage.LIR_Node

Integer

Source_Entity

Linkage.Name

String

Source_Entity

Linkage.PIR_Node

Integer

Source_Entity

Source.Body_End_Column

Integer

Source_Entity

Source.Body_End_Line

Integer

Source_Entity

Source.Body_Start_Column

Integer

Source_Entity

Source.Body_Start_Line

Integer

Source_Entity

Source.Column

Integer

Source_Entity

Source.Declaration_Start

Integer

Source_Entity

Source.File

String

Source_Entity

Source.Line

Integer

Source_Entity

Source.Name

String

Source_Entity

Source.Path

String

Source_Entity

Source.Physical_File

String

Source_Entity

Source.Physical_Path

String

Source_Entity

Source.Physical_Region_Length

Integer

Source_Entity

Source.Physical_Region_Start

Integer

Source_Entity

Source.Region_Length

Integer

Source_Entity

Source.Region_Start

Integer

Source_Entity

Source.Signature_Start

Integer

Source_Entity

Source.Template_Line

Integer

Source_Entity

Note

Code Example

template <class T>
class Stack
{
public:
  Stack(int s);
  ~Stack() { delete [] stackPtr; }
  int push(const T&);
  int pop(T&);
  int isEmpty() const { return top == -1; }
  int isFull() const { return top == size - 1; }
private:
  int size;
  int top;
  T* stackPtr;
} ;

template <class T>
Stack<T>::Stack(int s)
{
  size = s;
  top = -1;
  stackPtr = new T[size];
}

template <class T>
int Stack<T>::push(const T& item)
{
  if (!isFull())
  {
    stackPtr[++top] = item;
    return 1;
  }
  return 0;
}

template <class T>
int Stack<T>::pop(T& popValue)
{
  if (!isEmpty())
  {
    popValue = stackPtr[top--];
    return 1;
  }
  return 0;
}

Stack<int> myStack(100);
Example: Class template and class template instance.

Example: Class template and class template instance.

Type

node-type Type (inherits from: node-object Source_Entity)

Subtypes

node-class Class

Containing Views

Code Facts, Declaration Facts, File, Module

Description

As in C, a node-type Type represents a user-defined type alias introduced by typedef, as well as enum types. Moreover, additional attributes might be set for a node-type Type.

Attributes

Attribute name

Attribute type

Inherited from

Element.Has_Ambiguous_Declaration

Toggle

-

Element.Has_Private_Visibility

Toggle

-

Element.Has_Protected_Visibility

Toggle

-

Element.Has_Public_Visibility

Toggle

-

Element.Is_Abstract

Toggle

-

Element.Is_Anonymous

Toggle

-

Element.Is_Artificial

Toggle

-

Element.Is_Enum

Toggle

-

Element.Is_Struct

Toggle

-

Element.Is_Template_Instance

Toggle

-

Element.Is_Template_Parameter

Toggle

-

Element.Is_Typedef_To_Anonymous

Toggle

-

Element.Is_Union

Toggle

-

Linkage.Is_Ambiguous_Name

Toggle

Source_Entity

Linkage.Is_Definition

Toggle

Source_Entity

Linkage.Is_ODR_Violation

Toggle

Source_Entity

Linkage.LIR_Node

Integer

Source_Entity

Linkage.Name

String

Source_Entity

Linkage.PIR_Node

Integer

Source_Entity

Source.Body_End_Column

Integer

Source_Entity

Source.Body_End_Line

Integer

Source_Entity

Source.Body_Start_Column

Integer

Source_Entity

Source.Body_Start_Line

Integer

Source_Entity

Source.Column

Integer

Source_Entity

Source.Declaration_Start

Integer

Source_Entity

Source.File

String

Source_Entity

Source.Line

Integer

Source_Entity

Source.Name

String

Source_Entity

Source.Path

String

Source_Entity

Source.Physical_File

String

Source_Entity

Source.Physical_Path

String

Source_Entity

Source.Physical_Region_Length

Integer

Source_Entity

Source.Physical_Region_Start

Integer

Source_Entity

Source.Region_Length

Integer

Source_Entity

Source.Region_Start

Integer

Source_Entity

Source.Signature_Start

Integer

Source_Entity

Source.Template_Line

Integer

Source_Entity

A node-type Type can be tagged with visibility attributes, and can be abstract (tagged by is_abstract-icon Element.Is_Abstract). It can also be an instance of a template resp. a template parameter, which is represented by the Element.Is_Template_Instance and the Element.Is_Template_Parameter attribute, respectively.