XCSG:Assignment
An Assignment is the location at which a value is assigned to a Variable.
In most languages, an assignment returns a value, often the value assigned, after any automatic type conversion (such as integer to floating point, or autoboxing an int to an Integer); such values may flow forward from the Assignment node, if they are used.
In addition, it is common for an analysis expressed as an XCSG graph to choose to use Assignment nodes in a manner resembling the variable subscripts of static single assignment form. That is, an Assignment node itself may represent the new value of a variable in continuing DataFlow, becoming directly connected by LocalDataFlow edges to each read of the corresponding variable that receives the assigned value (for at least one execution path).
Alternatively, and commonly for Fields and GlobalVariables, the Assignment node may be connected to the Variable by an InterproceduralDataFlow edge, with future reads of the same Variable receiving their incoming InterproceduralDataFlow edges from the Variable itself.
Specification
Metaclass | Assignment |
---|---|
Extends | DataFlow (Node) |
Description | Represents the location in a Method at which a value is assigned to a Variable. |
Direct Subkinds | ArrayWrite, Initialization, InstanceVariableAssignment |
---|
All Superkinds | DataFlow (Node), Node, ModelElement |
---|
Specified In Edges
| ||||
---|---|---|---|---|
Inherited From | In Edge | Predecessor | Multiplicity | Description |
DataFlow (Node) | DataFlow (Edge) | DataFlow (Node) | ✱ | Connects DataFlow nodes to one another and to Variables, linking the origin of data to locations that it is modified or consumed. |
Variable | ✱ |
Specified Out Edges | ||||
---|---|---|---|---|
Out Edge | Successor | Multiplicity | Description | |
InterproceduralDataFlow | ProgramVariable | 0..1 | Represents data flows between Functions, or involving Variables visible to multiple Functions.
| |
Inherited From | Out Edge | Successor | Multiplicity | Description |
DataFlow (Node) | ArrayIdentityFor | ArrayAccess | 1 | Connects a DataFlow (Node) containing an array reference or pointer to the ArrayAccess representing the associated ArrayRead or ArrayWrite.
|
ArrayIndexFor | ArrayAccess | 1 | Connects a DataFlow (Node) containing a value used as an array index to the ArrayAccess representing the associated ArrayRead or ArrayWrite. | |
Java:ArrayLengthPassedTo | ArrayInstantiation | 1 | Connects a DataFlow (Node) representing the integer length expression to an ArrayInstantiation. | |
DataFlow (Edge) | DataFlow (Node) | ✱ | Connects DataFlow nodes to one another and to Variables, linking the origin of data to locations that it is modified or consumed.
| |
Variable | ✱ | |||
DefinedAs | TypeAlias | 0..1 | Connects a Variable or DataFlow node which received its Type via a TypeAlias (such as a C/C++ typedef) to that TypeAlias. | |
InstanceVariableWritten | InstanceVariableAssignment | ✱ | Connects a value (DataFlow (Node) or Variable) representing an object instance to an InstanceVariableAssignment representing a write to a field of that object. | |
TypeOf | Type | 1 | Links a Variable or DataFlow node to its Type |
Known Possible In Edges
| ||||
---|---|---|---|---|
Inherited From | In Edge | Predecessor | Multiplicity | Description |
DataFlow (Node) | InterproceduralDataFlow | Variable | ✱ | Represents data flows between Functions, or involving Variables visible to multiple Functions.
|
LocalDataFlow | Parameter | ✱ | Within the scope of a particular Function, connects Parameters to DataFlow nodes, and DataFlow nodes to one another, indicating flow of information within that Function.
| |
DataFlow (Node) | ✱ | |||
ProgramVariable | ✱ | |||
Node | Contains | Node | 1 | Indicates that the predecessor contains the successor in a sense specified by the specific type of Contains edge. |
Known Possible Out Edges | ||||
---|---|---|---|---|
Out Edge | Successor | Multiplicity | Description | |
InterproceduralDataFlow | Variable | 0..1 | Represents data flows between Functions, or involving Variables visible to multiple Functions.
| |
Inherited From | Out Edge | Successor | Multiplicity | Description |
DataFlow (Node) | LocalDataFlow | DataFlow (Node) | ✱ | Within the scope of a particular Function, connects Parameters to DataFlow nodes, and DataFlow nodes to one another, indicating flow of information within that Function. |
Node | Contains | Node | ✱ | Indicates that the predecessor contains the successor in a sense specified by the specific type of Contains edge. |