6.5.1.1. Nodes (Entities)¶
Node Types¶
Routines¶
A
Routine represents functions, subprograms, methods,
member functions and similar entities representing callable entities of the language.
The concrete kind of callable entity is specified by subtypes of Routine
(e.g.,
Method) and by attribute values (e.g.,
Element.Is_Static).
Types¶
A
Type represents types, structs, classes, records, unions,
type synonyms, interfaces and similar entities of the type systems of the various
languages.
The concrete kind of type is specified by subtypes of Type (e.g.,
Class) and by attribute values (e.g.,
Element.Is_Enum).
Note
Basic types like int or float in C/C++ are not represented.
Typically, such types are frequently used and convey little useful analysis
information. However, it is recorded if a programmer uses typedef in C/C++ to
create an alias type.
Members¶
A
Member represents fields, data members, record items and
similar entities. A
Member is always part of a type (by
means of an
Enclosing edge).
Note
Members do not represent entities that are callable. We use
methods for those entities.
Objects¶
An
Object represents variables and constant-like entities of
the various languages.
Caution
Objects do not represent run time objects. Objects are not directly related to object oriented programming.
Templates¶
A
Template represents uninstantiated template and generic
entities, e.g., a generic class, package, or method.
Depending on the options used for translation, the instances are represented by nodes of
the respective instance types. These nodes are marked by
Element.Is_Template_Instance.