From: Colin Paul Gloster <Colin_Paul_Gloster@ACM.org>
Subject: Re: Processing array subsections, a newbie question.
Date: Mon, 14 Jun 2010 19:23:24 +0100
Date: 2010-06-14T19:23:24+01:00 [thread overview]
Message-ID: <alpine.LRH.2.00.1006141902370.14982@64bit-RedHat-Enterprise-Linux6beta> (raw)
In-Reply-To: <4c13db30$0$2391$4d3efbfe@news.sover.net>
On Sat, 12 Jun 2010, Peter C. Chapin sent:
|------------------------------------------------------------------------------|
|"[..] |
| |
|I want to invoke this procedure repeatedly on a particular buffer such that |
|each invocation picks up where the previous invocation left off. For example |
| |
|Ok : Boolean := True; |
|Index_Fst : Natural := Buffer'First; |
|Index_Lst : Natural; |
|... |
| |
|while Ok and Index_Fst <= Buffer'Last loop |
| Do_Something(Buffer, Index_Fst, Index_Lst, Ok); |
| Index_Fst := Index_Lst + 1; |
|end loop; |
| |
|The problem with this code is that the assignment to Index_Fst inside the loop|
|might raise Constraint_Error if Index_Lst = Buffer'Last after Do_Something |
|finishes. I can work around this problem but my solutions tend to be rather |
|ungainly looking. Surely there must be an easy way to handle this. |
| |
|Peter" |
|------------------------------------------------------------------------------|
You seemed to dislike the good idea of using different ranges for the
cursors and the array mentioned elsewhere in this thread.
So how about something like
...
Index_Lst : integer := Buffer'First-1; --Hmm, perhaps I have merely
--moved your disliked extra 1.
...
while Ok and Index_Lst + 1 <= Buffer'Last loop
Index_Fst := Index_Lst + 1;
Do_Something(Buffer, Index_Fst, Index_Lst, Ok);
end loop;
?
It is a pity that I have introduced code cloning, but looping without
sticking to predominant forms can have this consequence in any
language I can think of (well, just the languages which have already
been defined, that is, excluding languages we can devise).
I really do not approve of the names Index_Fst and Index_Lst. How many
people reading this have still not noticed Index_Fst is not in this
version's condition? Be candid.
I wish Ada success on student satellites!
Regards,
Colin Paul
next prev parent reply other threads:[~2010-06-14 18:23 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-12 19:11 Processing array subsections, a newbie question Peter C. Chapin
2010-06-12 19:38 ` Yannick Duchêne (Hibou57)
2010-06-12 19:41 ` Yannick Duchêne (Hibou57)
2010-06-12 20:54 ` Ludovic Brenta
2010-06-13 1:20 ` Gene
2010-06-13 14:01 ` Peter C. Chapin
2010-06-13 15:48 ` Yannick Duchêne (Hibou57)
2010-06-13 16:57 ` Phil Thornley
2010-06-13 18:39 ` Yannick Duchêne (Hibou57)
2010-06-13 19:04 ` Phil Thornley
2010-06-13 18:58 ` Peter C. Chapin
2010-06-13 6:28 ` Niklas Holsti
2010-06-13 6:54 ` Jeffrey R. Carter
2010-06-16 19:03 ` Niklas Holsti
2010-06-16 19:22 ` Ludovic Brenta
2010-06-13 14:09 ` Peter C. Chapin
2010-06-13 11:00 ` Stephen Leake
2010-06-13 11:04 ` Simon Wright
2010-06-14 1:45 ` Stephen Leake
2010-06-14 18:23 ` Colin Paul Gloster [this message]
2010-06-14 19:41 ` Simon Wright
2010-06-14 23:54 ` Peter C. Chapin
2010-06-15 3:28 ` Jeffrey R. Carter
2010-06-15 6:13 ` Simon Wright
2010-06-15 11:24 ` Peter C. Chapin
2010-06-15 9:45 ` Phil Thornley
2010-06-15 11:27 ` Peter C. Chapin
2010-06-15 12:11 ` Yannick Duchêne (Hibou57)
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox