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¶
Class (inherits from:
Type)
Subtypes
none
Containing Views
Code Facts, Declaration Facts, File, Module
Description
The
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 (
) 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.¶
Member¶
Member (inherits from:
Source_Entity)
Subtypes
none
Containing Views
Code Facts, Declaration Facts, File, Module
Description
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
Element.Is_Static resp.
Element.Is_Const resp.
Element.Is_Volatile indicate that the
Member
is a static resp. const resp. volatile data member.
Visibility
Visibility is expressed by the attributes
Element.Has_Private_Visibility,
Element.Has_Protected_Visibility,
Element.Has_Public_Visibility.
Method¶
Method (inherits from:
Routine)
Subtypes
none
Containing Views
Call, Code Facts, Declaration Facts, File, Module
Description
The
Method node type is a subtype of the
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
Element.Has_Private_Visibility,
Element.Has_Protected_Visibility,
Element.Has_Public_Visibility.
The attributes
Element.Is_Static resp.
Element.Is_Abstract resp.
Element.Is_Virtual resp.
resp.
Element.Is_Const resp.
Element.Is_Inline
resp.
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 (
) and
Element.Is_Destructor (
) 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
Member but of node type
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.¶
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.¶
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.¶
Method_Template¶
Method_Template (inherits from:
Routine_Template)
Subtypes
none
Containing Views
Code Facts, Declaration Facts, File, Module
Description
Method_Template is used for modeling template
member functions inside classes. It is connected to its instances (which are
Method nodes) by
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¶
Namespace (inherits from:
Source_Entity)
Subtypes
none
Containing Views
Code Facts, Declaration Facts, File
Description
A
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
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¶
Routine (inherits from:
Source_Entity)
Subtypes
Method
Containing Views
Call, Code Facts, Declaration Facts, File, Module
Description
A
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¶
Routine_Template (inherits from:
Template)
Subtypes
Method_Template
Containing Views
Code Facts, Declaration Facts, File, Module
Description
A
Routine_Template represents uninstantiated
template functions. It is connected to its instances (which are
Routine nodes) by
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¶
Template (inherits from:
Source_Entity)
Subtypes
Class_Template,
Routine_Template
Containing Views
none (only subtypes of
Template are contained in views)
Description
A
Class_Template represents prototype instantiations
of template classes. It is connected to its instances (which are
Class nodes) by
Instantiate edges. The
same holds for
Routine_Template and
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
.
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.¶
Type¶
Type (inherits from:
Source_Entity)
Subtypes
Class
Containing Views
Code Facts, Declaration Facts, File, Module
Description
As in C, a
Type represents a user-defined type alias
introduced by typedef, as well as enum types. Moreover, additional
attributes might be set for a
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
Type can be tagged with visibility attributes, and can be
abstract (tagged by
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.