comp.lang.ada
 help / color / mirror / Atom feed
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;                                                                 




  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