XCSG:Operator

From AtlasWiki
Revision as of 13:28, 6 May 2014 by TheodoreMurdock (Talk | contribs) (TheodoreMurdock moved page Operator to XCSG:Operator)

Jump to: navigation, search

Operators are used to represent relatively simple, highly information-preserving operations, such as mathematical operators, string concatenation, and type casts.

Data is considered to flow through an Operator, even though an Operator may modify both the data and its type. For example, multiplying two floats in Java produces a double, which is considered to carry enough information about both operands for it to be preferable to not disconnect the flow by default.

Some things sometimes considered operators in programming languages, such as the dot operator (represented in XCSG as an IdentityPass node for method calls or a MemberAccess node for fields), are not considered operators in an XCSG graph, because it is less useful to depict information as flowing through them.

Specification

Metaclass Operator
Extends DataFlow (Node)
Description Represents the result of an operator in DataFlow, such as the result of a negation, addition, or type cast.
Direct Subkinds Java:ArrayLengthOperator, BinaryOperator, InstanceOf, UnaryOperator
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

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

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.