Difference between revisions of "XCSG:TypeAlias"
From AtlasWiki
(→Specifications: switching to Node template, broadening to allow representation of all typedefs) |
(simplifying semantics) |
||
Line 1: | Line 1: | ||
− | An AliasType introduces a synonym for an existing type analogous to the use of typedef in C++. | + | An AliasType introduces a synonym for an existing type analogous to the use of typedef in C and C++. |
− | + | An AliasType does not introduce a new type, but provides a synonym (alias) for a given type, the [[AliasedType]] . This type may be an existing type, or an instantiation of a type with template parameters. | |
− | + | ||
− | An AliasType does not introduce a new type, but provides a synonym (alias) for a given type, the | + | |
An AliasType may appear anywhere the referenced type may appear. | An AliasType may appear anywhere the referenced type may appear. | ||
− | The semantics of the model are unchanged if all | + | The semantics of the model are unchanged if all occurrences of an AliasType are replaced by occurrences of the referenced type. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
== Specification == | == Specification == | ||
Line 20: | Line 14: | ||
== Language mappings == | == Language mappings == | ||
− | AliasType maps to typedef in C++. | + | AliasType maps to typedef in C and C++. |
Revision as of 12:00, 29 April 2014
An AliasType introduces a synonym for an existing type analogous to the use of typedef in C and C++.
An AliasType does not introduce a new type, but provides a synonym (alias) for a given type, the AliasedType . This type may be an existing type, or an instantiation of a type with template parameters.
An AliasType may appear anywhere the referenced type may appear.
The semantics of the model are unchanged if all occurrences of an AliasType are replaced by occurrences of the referenced type.
Specification
Metaclass | TypeAlias |
---|---|
Extends | Type |
Description | An alias for an existing type. |
Direct Subkinds | C:Enum |
---|
All Superkinds | Node, ModelElement |
---|
Specified In Edges | |||
---|---|---|---|
In Edge | Predecessor | Multiplicity | Description |
AliasedType | TypeAlias | ✱ | Connects a TypeAlias to the Type or TypeAlias it was declared to duplicate. |
DefinedAs | Variable | ✱ | Connects a Variable or DataFlow node which received its Type via a TypeAlias (such as a C/C++ typedef) to that TypeAlias. |
DataFlow (Node) | ✱ |
Specified Out Edges | |||
---|---|---|---|
Out Edge | Successor | Multiplicity | Description |
AliasedType | Type | 0..1 | Connects a TypeAlias to the Type or TypeAlias it was declared to duplicate. |
TypeAlias | 0..1 |
Known Possible In Edges
| ||||
---|---|---|---|---|
Inherited From | In Edge | Predecessor | Multiplicity | Description |
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 |
Node | Contains | Node | ✱ | Indicates that the predecessor contains the successor in a sense specified by the specific type of Contains edge. |
Language mappings
AliasType maps to typedef in C and C++.