Ada Conformity Assessment Authority      Home Conformity Assessment   Test Suite ARGAda Standard
 
Annotated Ada Reference Manual (Ada 202x Draft 25)Legal Information
Contents   Index   References   Search   Previous   Next 

3.6.3 String Types

Static Semantics

1
A one-dimensional array type whose component type is a character type is called a string type.
2/2
{AI95-00285-01} [There are three predefined string types, String, Wide_String, and Wide_Wide_String, each indexed by values of the predefined subtype Positive; these are declared in the visible part of package Standard:] 
3
[subtype Positive is Integer range 1 .. Integer'Last;
4/2
{AI95-00285-01} type String is array(Positive range <>) of Character;
type Wide_String is array(Positive range <>) of Wide_Character;
type Wide_Wide_String is array(Positive range <>) of Wide_Wide_Character;
]
NOTES
5
57  String literals (see 2.6 and 4.2) are defined for all string types. The concatenation operator & is predefined for string types, as for all nonlimited one-dimensional array types. The ordering operators <, <=, >, and >= are predefined for string types, as for all one-dimensional discrete array types; these ordering operators correspond to lexicographic order (see 4.5.2).

Examples

6
Examples of string objects: 
7
Stars      : String(1 .. 120) := (1 .. 120 => '*' );
Question   : constant String  := "How many characters?";
                                                      -- Question'First = 1, Question'Last = 20
                                                      -- Question'Length = 20 (the number of characters)
8
Ask_Twice  : String  := Question & Question;          -- constrained to (1..40)
Ninety_Six : constant Roman   := "XCVI";              -- see 3.5.2 and 3.6

Inconsistencies With Ada 83

8.a
The declaration of Wide_String in Standard hides a use-visible declaration with the same defining_identifier. In rare cases, this might result in an inconsistency between Ada 83 and Ada 95. 

Incompatibilities With Ada 83

8.b
Because both String and Wide_String are always directly visible, an expression like 
8.c
"a" < "bc"
8.d
is now ambiguous, whereas in Ada 83 both string literals could be resolved to type String. 

Extensions to Ada 83

8.e
The type Wide_String is new (though it was approved by ARG for Ada 83 compilers as well). 

Wording Changes from Ada 83

8.f
We define the term string type as a natural analogy to the term character type

Inconsistencies With Ada 95

8.g/2
{AI95-00285-01} The declaration of Wide_Wide_String in Standard hides a use-visible declaration with the same defining_identifier. In the (very) unlikely event that an Ada 95 program had depended on such a use-visible declaration, and the program remains legal after the substitution of Standard.Wide_Wide_String, the meaning of the program will be different.

Extensions to Ada 95

8.h/2
{AI95-00285-01} The type Wide_Wide_String is new. 

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe