comp.lang.ada
 help / color / mirror / Atom feed
From: Adam Beneschan <adambeneschan@gmail.com>
Subject: Re: Assembling Complex Strings Containing Carriage Returns Prior to Using Ada.Text_IO.Put?
Date: Wed, 22 Oct 2014 10:44:27 -0700 (PDT)
Date: 2014-10-22T10:44:27-07:00	[thread overview]
Message-ID: <1c18d4c3-aa53-4547-85c9-55477cde7364@googlegroups.com> (raw)
In-Reply-To: <7c1b89e6-9ab8-4faa-b60c-c5c4683f0bff@googlegroups.com>

On Tuesday, October 21, 2014 10:57:39 PM UTC-7, NiGHTS wrote:
> I am converting some code from C to Ada which involves building a complex string containing '\n' characters which would eventually be displayed on the standard output console using the printf() function. 

> I tried to copy the same strategy of building the string in Ada like this:

> Complex_String : Ada.Strings.Unbounded.Unbounded_String;
> 
> EOL            : String := ASCII.CR'Img;

As others have pointed out, 'Img is a GNAT-defined attribute; it depends on the Ada-defined attribute 'Image.  'Image is not intended to convert a Character to a one-character String.  If you say

    C : Character := 'x';
    S : String := Character'Image (C);

S will have length 3 and will be "'x'".

Character is an enumeration type in Ada, although it's somewhat special.  But the rules for 'Image (and its converse, 'Value) are the same as for other enumeration types: they give you (or expect) a string that looks like what the enumeration value would look like in the enumeration declaration.  For example, with this enumeration type:

    type Color is (RED, GREEN, BLUE);

the 'Image attribute will produce "RED", "GREEN", or "BLUE".  (It's always upper-case for identifiers.)  And for an enumeration type that has character literals mixed in:

    type Whatsit is (This, That, '?');

'Image will produce "THIS", "THAT", or "'?'".  (What makes Character special is that if you give it a non-printable character, there are special rules for what 'Image returns; in your case it returned "CR".)

                            -- Adam


  parent reply	other threads:[~2014-10-22 17:44 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-22  5:57 Assembling Complex Strings Containing Carriage Returns Prior to Using Ada.Text_IO.Put? NiGHTS
2014-10-22  6:20 ` mockturtle
2014-10-22  6:28   ` Ludovic Brenta
2014-10-22  8:12     ` mockturtle
2014-10-22 14:36     ` Maciej Sobczak
2014-10-22 14:55       ` Dmitry A. Kazakov
2014-10-24  1:35         ` Keith Thompson
2014-10-22 16:01     ` Shark8
2014-10-22 16:50       ` Jeffrey Carter
2014-10-22 18:59         ` Simon Wright
2014-10-22 23:45           ` Dennis Lee Bieber
2014-10-23 11:38             ` G.B.
2014-10-23 16:22               ` Shark8
2014-10-22 17:32     ` Adam Beneschan
2014-10-22 17:55       ` NiGHTS
2014-10-22 17:16   ` NiGHTS
2014-10-22  6:25 ` Jeffrey Carter
2014-10-22 17:39   ` NiGHTS
2014-10-22 11:16 ` Björn Lundin
2014-10-22 17:44 ` Adam Beneschan [this message]
2014-10-22 17:47   ` Adam Beneschan
2014-10-22 18:01   ` NiGHTS
2014-10-22 22:34     ` Shark8
2014-10-22 23:32     ` Adam Beneschan
2014-10-24  2:45     ` Randy Brukardt
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox