From: Lutz Donnerhacke <lutz@iks-jena.de>
Subject: Re: [Spark] Arrays of Strings
Date: Wed, 9 Apr 2003 08:10:06 +0000 (UTC)
Date: 2003-04-09T08:10:06+00:00 [thread overview]
Message-ID: <slrnb97lat.or.lutz@taranis.iks-jena.de> (raw)
In-Reply-To: pan.2003.04.09.07.50.03.727731@Jay-Pee-eSs.net
* Eric G. Miller wrote:
> In <slrnb95ehu.ob.lutz@taranis.iks-jena.de>, Lutz Donnerhacke wrote:
>
>> In order to implement thin an execve binding, I wonder how to emulate the
>> C-Type "char const * const x []". Any bright ideas?
>
> Errm, my local definition of execve looks like:
>
> int execve(const char *filename,
> char *const argv [], char *const envp[]);
>
> What'd the const pointer be for? Even if your definition had such, that'd
> be a burden upon the C function, but shouldn't much affect the Ada side of
> things.
"char const * const []" is an array of constant pointers to constant chars.
The modifier const is a postfix modifier. For the first element an
equivalent prefix notation exists for syntactic shugar.
> Try the following out (rename "/tmp/hello" as appropriate)...
>
> with Ada.Text_Io;
> with Interfaces.C.Strings;
The use of this packages is not possible in Spark. I need an emulation or
shadow of the package Interfaces.C.Strings.
> use Ada.Text_Io;
"use package" is not allowed in Spark.
> Argv : C.Strings.Chars_Ptr_Array :=
> (C.Strings.New_String("John"),
> C.Strings.New_String("Bill"),
> C.Strings.New_String("Bob"),
> C.Strings.Null_Ptr);
This involves dynamic memory, which should be avioded as much as possible in
Spark. Language based dynamic memory management is not supported in Spark.
I hope it's clear, what I expect:
package Interfaces is
end Interfaces;
package Interfaces.C is
type int is range Integer'First .. Integer'Last; -- has to be correct.
end Interfaces.C;
package Interfaces.C.Strings is
type Chars_Ptr is private;
type Chars_Ptr_Array is array (Positive range <>) of Chars_Ptr;
private
type Chars_Ptr is mod 2**32; -- has to be correct.
end Interfaces.C.Strings;
with Interfaces.C.Strings;
--# inherit Interfaces.C.Strings, Interfaces.C;
package Executor is
function Execve (
Filename : Interfaces.C.Strings.Chars_Ptr;
Argv : Interfaces.C.Strings.Chars_Ptr_Array;
Envp : Interfaces.C.Strings.Chars_Ptr_Array)
return Interfaces.C.Int;
pragma Import (Convention => C,
Entity => Execve,
External_Name => "execve");
end Executor;
next prev parent reply other threads:[~2003-04-09 8:10 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 [this message]
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
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