From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: strange length check error
Date: Wed, 17 Jan 2018 09:49:36 +0100
Date: 2018-01-17T09:49:36+01:00 [thread overview]
Message-ID: <p3n2n0$1npb$1@gioia.aioe.org> (raw)
In-Reply-To: 14a35359-150a-4aa6-b437-19c74381be4b@googlegroups.com
On 16/01/2018 21:48, Mehdi Saada wrote:
> This : Put(Ch_Bounded1 & ' ' );
> Calls on that:
> function "&"
> (Left : in Bounded_String;
> Right : in Character)
> return Bounded_String
> is
> begin
> if LENGTH(LEFT) + 1 > MAX_LENGTH then
> raise LENGTH_ERROR with "ERROR '&': LEFT.LENGTH := " & NATURAL'IMAGE(LENGTH(LEFT)) & " + 1 > MAX_LENGTH";
> else
> @@@ return (LENGTH(LEFT) + 1, LEFT.DATA(1..LENGTH(LEFT)) & RIGHT);
> end if;
> end "&";
>
> The line with @@@ raises this:
> raised CONSTRAINT_ERROR : p_bounded_g-p_new_bounded_g.adb:34 length check failed
> The value of CH_BOUNDED1 at that moment is "pour tester le debut", its length is 21, and MAX_LENGTH est 80.
Why do you care? It is a wrong design anyway. The whole idea of
bounded-length strings is avoid reallocation and copying upon string
modification. [Which is why you should never use them]
Thus, *all* operations on bounded-length strings must be in-place,
except constructors. If you have "&" that defeats the only purpose of
having such strings. Use String.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2018-01-17 8:49 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-16 20:48 strange length check error Mehdi Saada
2018-01-17 1:42 ` Anh Vo
2018-01-17 9:23 ` Simon Wright
2018-01-17 12:13 ` Mehdi Saada
2018-01-17 13:19 ` AdaMagica
2018-01-17 13:41 ` Simon Wright
2018-01-17 21:37 ` Jeffrey R. Carter
2018-01-18 11:12 ` Simon Wright
2018-01-17 13:43 ` Mehdi Saada
2018-01-17 14:03 ` Mehdi Saada
2018-01-17 16:15 ` Mehdi Saada
2018-01-17 19:43 ` Simon Wright
2018-01-17 21:37 ` Mehdi Saada
2018-01-17 23:00 ` Niklas Holsti
2018-01-18 11:07 ` Simon Wright
2018-01-17 13:15 ` Simon Clubley
2018-01-17 8:49 ` Dmitry A. Kazakov [this message]
2018-01-23 16:18 ` Robert Eachus
2018-01-23 16:41 ` Mehdi Saada
2018-01-24 16:22 ` Robert Eachus
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox