comp.lang.ada
 help / color / mirror / Atom feed
From: "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org>
Subject: Re: Bounded String question
Date: Wed, 11 Nov 2015 10:27:37 -0700
Date: 2015-11-11T10:27:37-07:00	[thread overview]
Message-ID: <n1vtm0$db7$1@dont-email.me> (raw)
In-Reply-To: <faede672-7158-4c24-9647-8bd6f0cb5742@googlegroups.com>

On 11/11/2015 06:43 AM, Serge Robyns wrote:
> On Wednesday, 11 November 2015 11:52:13 UTC+1, Serge Robyns  wrote:
>> I've had to write loads of functions like "To_Client_Name (Name : in
>> String) >return T_Client_Name is (T_Client_Name
>> (P_Strings.To_Bounded_String (Name));"

Only if you want a name other than To_Bounded_String.

> What does escape my understanding is why can I use To_String with any type
> defined from P_Strings but have to define all the To_xyz explicitly.  Is
> there a kind of "hidden" conversion applied in that case?

When you create a derived type, such as T_Client_Name, it inherits all the
primitive operations of its parent. In this case, that includes To_String and
To_Bounded_String. So you get functions

function To_String (S : T_Client_Name) return String;
function To_Bounded_String (S : String) return T_Client_Name;

Basically, all the operations in Generic_Bounded_Length that have a parameter or
return type of Bounded_String, with Bounded_String replaced by the name of the
derived type.

If you want something named To_T_Client_Name then of course you have to define
it yourself:

function To_T_Client_Name (S : String ) return T_Client_Name renames
To_Bounded_String;

The following compiles:

with Ada.Strings.Bounded;

procedure BS_Test is
   package BS is new Ada.Strings.Bounded.Generic_Bounded_Length (20);

   type OS is new BS.Bounded_String;

   B : OS     := To_Bounded_String ("asdfghjkl");
   S : String := To_String (B);
begin -- BS_Test
   null;
end BS_Test;

-- 
Jeff Carter
"When Roman engineers built a bridge, they had to stand under it
while the first legion marched across. If programmers today
worked under similar ground rules, they might well find
themselves getting much more interested in Ada!"
Robert Dewar
62

  parent reply	other threads:[~2015-11-11 17:27 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-10 22:00 Bounded String question Serge Robyns
2015-11-11  0:48 ` Bob Duff
2015-11-11  2:01   ` Jeffrey R. Carter
2015-11-11 15:34     ` Bob Duff
2015-11-11 17:36       ` Jeffrey R. Carter
2015-11-11 19:22         ` Bob Duff
2016-03-06 18:59       ` Xavier Petit
2016-03-07 23:16         ` Randy Brukardt
2016-03-08  0:08           ` Jeffrey R. Carter
2016-03-09  1:18             ` Randy Brukardt
2015-11-11 10:52   ` Serge Robyns
2015-11-11 13:43     ` Serge Robyns
2015-11-11 14:32       ` brbarkstrom
2015-11-11 16:08         ` Serge Robyns
2015-11-11 17:27       ` Jeffrey R. Carter [this message]
2015-11-11 20:06         ` Serge Robyns
2015-11-11 20:23           ` AdaMagica
2015-11-11 20:27             ` AdaMagica
2015-11-11 20:32             ` Serge Robyns
2015-11-11 20:40               ` AdaMagica
2015-11-12 17:31                 ` Serge Robyns
2015-11-12 19:10                   ` AdaMagica
2015-11-12 21:29                     ` Randy Brukardt
2015-11-12 18:03                 ` G.B.
2015-11-12 18:13                   ` Serge Robyns
2015-11-12 18:14                     ` Serge Robyns
2015-11-12 19:37                   ` Randy Brukardt
2015-11-11 20:42           ` Jeffrey R. Carter
2015-11-12 16:59             ` Serge Robyns
2015-11-12 18:39               ` Jeffrey R. Carter
2015-11-12 21:19                 ` Randy Brukardt
2015-11-12 21:27               ` Randy Brukardt
2015-11-12 22:32                 ` Jeffrey R. Carter
2015-11-13  0:07                   ` Randy Brukardt
2015-11-13  1:01                     ` Jeffrey R. Carter
2015-11-11 15:41     ` Bob Duff
replies disabled

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