Appendices
Appendix A: Generic Formal Types
The following tables contain examples of available formal types for generics:
Formal type |
Actual type |
---|---|
Incomplete type Format: |
Any type |
Discrete type Format: |
Any integer, modular or enumeration type |
Range type Format: |
Any signed integer type |
Modular type Format: |
Any modular type |
Floating-point type Format: |
Any floating-point type |
Binary fixed-point type Format: |
Any binary fixed-point type |
Decimal fixed-point type Format: |
Any decimal fixed-point type |
Definite nonlimited private type Format: |
Any nonlimited, definite type |
Nonlimited Private type with discriminant Format: |
Any nonlimited type with discriminant |
Access type Format: |
Any access type for type T |
Definite derived type Format: |
Any concrete type derived from base type B |
Limited private type Format: |
Any definite type, limited or not |
Incomplete tagged type Format: |
Any concrete, definite, tagged type |
Definite tagged private type Format: |
Any concrete, definite, tagged type |
Definite tagged limited private type Format: |
Any concrete definite tagged type, limited or not |
Definite abstract tagged private type Format: |
Any nonlimited, definite tagged type, abstract or concrete |
Definite abstract tagged limited private type Format:
|
Any definite tagged type, limited or not, abstract or concrete |
Definite derived tagged type Format: |
Any concrete tagged type derived from base type B |
Definite abstract derived tagged type Format: |
Any tagged type derived from base type B abstract or concrete |
Array type Format: |
Any array type with range R containing elements of type T |
Interface type Format: |
Any interface type T |
Limited interface type Format: |
Any limited interface type T |
Task interface type Format: |
Any task interface type T |
Synchronized interface type Format: |
Any synchronized interface type T |
Protected interface type Format: |
Any protected interface type T |
Derived interface type Format: |
Any type T derived from base type B and interface I |
Derived type with multiple interfaces Format:
|
Any type T derived from base type B and interfaces I1 and I2 |
Abstract derived interface type Format:
|
Any type T derived from abstract base type B and interface I |
Limited derived interface type Format:
|
Any type T derived from limited base type B and limited interface I |
Abstract limited derived interface type Format:
|
Any type T derived from abstract limited base type B and limited interface I |
Synchronized interface type Format:
|
Any type T derived from synchronized interface SI |
Abstract synchronized interface type Format:
|
Any type T derived from synchronized interface SI |
Indefinite version
Many of the examples above can be used for formal indefinite types:
Formal type |
Actual type |
---|---|
Indefinite incomplete type Format: |
Any type |
Indefinite nonlimited private type Format: |
Any nonlimited type indefinite or definite |
Indefinite limited private type Format: |
Any type, limited or not, indefinite or definite |
Incomplete indefinite tagged private type Format: |
Any concrete tagged type, indefinite or definite |
Indefinite tagged private type Format: |
Any concrete, nonlimited tagged type, indefinite or definite |
Indefinite tagged limited private type Format: |
Any concrete tagged type, limited or not, indefinite or definite |
Indefinite abstract tagged private type Format: |
Any nonlimited tagged type, indefinite or definite, abstract or concrete |
Indefinite abstract tagged limited private type Format:
|
Any tagged type, limited or not, indefinite or definite abstract or concrete |
Indefinite derived tagged type Format: |
Any tagged type derived from base type B, indefinite or definite |
Indefinite abstract derived tagged type Format:
|
Any tagged type derived from base type B, indefinite or definite abstract or concrete |
The same examples could also contain discriminants. In this case, (<>)
is replaced by a list of discriminants, e.g.: (D: DT)
.
Appendix B: Containers
The following table shows all containers available in Ada, including their versions (standard, bounded, unbounded, indefinite):
Category |
Container |
Std |
Bounded |
Unbounded |
Indefinite |
---|---|---|---|---|---|
Vector |
|
Y |
Y |
Y |
|
List |
|
Y |
Y |
Y |
|
Map |
|
Y |
Y |
Y |
|
Map |
|
Y |
Y |
Y |
|
Set |
|
Y |
Y |
Y |
|
Set |
|
Y |
Y |
Y |
|
Tree |
|
Y |
Y |
Y |
|
Generic |
|
Y |
|||
Queue |
|
Y |
|||
Queue |
|
Y |
Y |
||
Queue |
|
Y |
Y |
Note
To get the correct container name, replace the whitespace by _
in the
names above. (For example, Hashed Maps
becomes Hashed_Maps
.)
The following table presents the prefixing applied to the container name that depends on its version. As indicated in the table, the standard version does not have a prefix associated with it.
Version |
Naming prefix |
---|---|
Std |
|
Bounded |
|
Unbounded |
|
Indefinite |
|