From: mheaney@on2.com (Matthew Heaney)
Subject: Re: [Spark] Arrays of Strings
Date: 11 Apr 2003 11:41:34 -0700
Date: 2003-04-11T18:41:34+00:00 [thread overview]
Message-ID: <1ec946d1.0304111041.7edae9a@posting.google.com> (raw)
In-Reply-To: cf2c6063.0304110211.596b6b2b@posting.google.com
rod.chapman@praxis-cs.co.uk (Rod Chapman) wrote in message news:<cf2c6063.0304110211.596b6b2b@posting.google.com>...
> Lutz Donnerhacke <lutz@iks-jena.de> wrote in message news:<slrnb95ehu.ob.lutz@taranis.iks-jena.de>...
> > In order to implement thin an execve binding, I wonder how to emulate the
> > C-Type "char const * const x []". Any bright ideas?
>
>
> Lutz and others,
> Here are some thoughts and a possible solution to this problem.
> The execve() API is indeed a complex one for SPARK, since the
> type "pointer to unconstrained array of pointer to null terminated
> C String" is a tricky one for SPARK to model.
[Rod's example snipped]
Personally, I find Rod's solution way too heavy.
Why can't Spark model an access constant to a constant object? For
example:
declare
X : aliased constant String := "arg1";
Y : aliased constant String := "arg2":
type String_Constant_Access is
access constant String;
type String_Constant_Access_Array is
(Postiive range <>) of aliased String_Constant_Access;
A : constant String_Constant_Access_Array :=
(X'Access, Y'Access);
begin
Op (A (A'First)'Access);
end;
Everything is static. Yes, X and Y are aliased by the components of
array A, but neither X nor Y is variable, and the aliased view through
A is only a constant view. So what's the problem?
I could understand your difficulty if X and Y were variable, but that
is not the case here.
I must say, I think the simplest solution is:
exec (filename, X); -- for argv with one arg
exec (filename, X, Y); --for argv with two args
etc
and then turn off Spark checking in the body of exec.
Contrary to some of the views expressed in this thread, I find the C
syntax perfectly natural and perfectly elegant. Rod's solution is
neither.
next prev parent reply other threads:[~2003-04-11 18:41 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-08 12:02 [Spark] Arrays of Strings Lutz Donnerhacke
2003-04-08 18:08 ` Martin Krischik
2003-04-09 9:23 ` Lutz Donnerhacke
2003-04-09 12:38 ` Hyman Rosen
2003-04-09 12:47 ` Vinzent Hoefler
2003-04-09 14:27 ` Hyman Rosen
2003-04-09 15:13 ` Vinzent Hoefler
2003-04-09 17:21 ` Hyman Rosen
2003-04-09 18:41 ` Vinzent Hoefler
2003-04-09 21:04 ` Randy Brukardt
2003-04-10 23:21 ` John R. Strohm
2003-04-11 12:19 ` Hyman Rosen
2003-04-11 13:14 ` John R. Strohm
2003-04-09 7:50 ` Eric G. Miller
2003-04-09 8:10 ` Lutz Donnerhacke
2003-04-09 18:23 ` Matthew Heaney
2003-04-09 17:42 ` Matthew Heaney
2003-04-09 21:06 ` Randy Brukardt
2003-04-10 8:23 ` Lutz Donnerhacke
2003-04-10 14:09 ` Matthew Heaney
2003-04-10 14:48 ` Hyman Rosen
2003-04-11 6:20 ` Chad R. Meiners
2003-04-11 12:31 ` Hyman Rosen
2003-04-11 18:27 ` Chad R. Meiners
2003-04-11 7:35 ` Phil Thornley
2003-04-11 12:05 ` Marin David Condic
2003-04-11 13:19 ` John R. Strohm
2003-04-12 23:09 ` Robert A Duff
2003-04-11 18:47 ` Chad R. Meiners
2003-04-12 23:51 ` Robert A Duff
2003-04-13 5:47 ` Hyman Rosen
2003-04-14 8:05 ` Lutz Donnerhacke
2003-04-10 15:02 ` Lutz Donnerhacke
2003-04-10 15:50 ` Hyman Rosen
2003-04-10 18:32 ` Randy Brukardt
2003-04-11 6:28 ` Chad R. Meiners
2003-04-11 8:11 ` Lutz Donnerhacke
2003-04-11 12:32 ` Rod Chapman
2003-04-11 14:50 ` Peter Amey
2003-04-11 18:41 ` Matthew Heaney [this message]
2003-04-11 21:25 ` Chad R. Meiners
2003-04-12 10:08 ` Peter Amey
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox