From: "Steve" <nospam_steved94@attbi.com>
Subject: Re: Interfacing Ada with C
Date: Wed, 16 Apr 2003 02:56:21 GMT
Date: 2003-04-16T02:56:21+00:00 [thread overview]
Message-ID: <pD3na.499811$sf5.816502@rwcrnsc52.ops.asp.att.net> (raw)
In-Reply-To: 3e9b28f8$1_4@newsfeed
A different way of doing this:
In Ada you should be able to use Interfaces.C.Pointers and then declare your
procedure as follows:
package Interface_Wide_String is
new Interfaces.C.Pointers( Interfaces.C.size_T,
Interfaces.C.WChar_T,
Interfaces.C.WChar_Array,
Interfaces.C.Wide_Nul );
procedure One( Name : in Interface_Wide_String.Pointer );
pragma Export( C, One );
Within procedure "One" you can use:
myName : Wide_String := Interfaces.C.To_Ada(
Interface_Wide_String.Value( Name ) );
If you need to look at the string as a wide string.
I haven't tested this, but I think it will work (it compiles anyway).
Steve
(The Duck)
"Paul Anderson" <notme@nowhere.com> wrote in message
news:3e9b28f8$1_4@newsfeed...
> Hi:
>
> I have a need to interface an Ada library with a C program.
> I am having trouble finding the best way to convert
> strings between the two worlds.
>
> I have a declaration:
>
> procedure One(Name : in Wide_String);
> pragma Export(C, One, "one");
>
> When I compile I get:
>
> foo.ads:29:42: warning: type of argument "One" is unconstrained array
> foo.ads:29:42: warning: foreign caller must pass bounds explicitly
>
> Fine, except how do I "pass bounds explicitly" when I call
> this function in C? The prototype for this function in C
> would normally be:
>
> void one(wide_string w);
>
> which doesn't have a slot for the bounds. So where does it
> go?
>
> Alternatively, is there an different way of doing this that
> avoids this problem?
>
> I am using gnat-3.15p.
>
> Thanks,
>
> Paul.
>
next prev parent reply other threads:[~2003-04-16 2:56 UTC|newest]
Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-14 21:39 Interfacing Ada with C Paul Anderson
2003-04-14 23:05 ` tmoran
2003-04-16 2:56 ` Steve [this message]
2003-04-16 4:25 ` Steve
-- strict thread matches above, loose matches on Subject: below --
2010-07-24 11:57 Ada novice
2010-07-24 12:08 ` Robert A Duff
2010-07-24 12:32 ` Ada novice
2010-07-24 14:52 ` Marco
2010-07-24 16:38 ` Simon Wright
2010-07-24 17:58 ` Ada novice
2010-07-25 8:29 ` Simon Wright
2010-07-25 12:21 ` Ada novice
2010-07-25 13:50 ` Dmitry A. Kazakov
2010-07-25 14:12 ` Ada novice
2010-07-25 14:17 ` Ada novice
2010-07-25 14:26 ` Simon Wright
2010-07-25 16:18 ` Ada novice
2010-07-25 17:06 ` Dmitry A. Kazakov
2010-07-25 17:42 ` Ada novice
[not found] ` <a5ba4513-ce2b-45d1-a5f4-ff1a7945b0b0@q12g2000yqj.googlegroups.com>
2010-07-25 18:26 ` Dmitry A. Kazakov
2010-07-25 18:52 ` Ada novice
2010-07-25 18:58 ` Dmitry A. Kazakov
2010-07-25 19:13 ` Ada novice
2010-07-25 19:19 ` Dmitry A. Kazakov
2010-07-25 19:28 ` Ada novice
2010-07-25 20:04 ` Dmitry A. Kazakov
2010-07-26 13:40 ` Ada novice
2010-07-26 14:52 ` Dmitry A. Kazakov
2010-07-26 17:14 ` Ada novice
[not found] ` <a2da2804-c19b-44cf-9855-834c602c4520@y11g2000yqm.googlegroups.com>
2010-07-26 17:32 ` Dmitry A. Kazakov
2010-07-26 17:50 ` Ada novice
2010-07-27 12:24 ` Peter Hermann
2010-07-27 19:01 ` Ada novice
2010-07-27 5:50 ` Ada novice
2010-07-27 7:27 ` Dmitry A. Kazakov
2010-07-27 7:43 ` Georg Bauhaus
2010-07-27 18:37 ` Ada novice
2010-07-27 18:40 ` Ada novice
2010-07-25 17:24 ` Simon Wright
2010-07-25 17:47 ` Simon Wright
2010-07-25 17:58 ` Ada novice
2010-07-25 23:21 ` Simon Wright
2010-07-26 1:24 ` John B. Matthews
2010-07-26 14:01 ` Ada novice
2010-07-26 15:46 ` sjw
[not found] ` <da987804-3948-4871-ab52-4a8e95f06d44@k39g2000yqb.googlegroups.com>
2010-07-26 19:46 ` Simon Wright
2010-07-26 20:39 ` Dmitry A. Kazakov
2010-07-27 5:46 ` Ada novice
2010-07-27 5:43 ` Ada novice
2010-07-27 17:33 ` Simon Wright
2010-07-27 18:34 ` Ada novice
2010-07-28 22:26 ` Simon Wright
2010-07-29 9:19 ` Ada novice
2010-07-29 19:14 ` Simon Wright
2010-07-29 20:25 ` Ada novice
2010-07-30 1:46 ` John B. Matthews
2010-07-30 9:09 ` sjw
2010-07-30 12:41 ` Ada novice
2010-07-30 15:13 ` John B. Matthews
2010-07-30 17:25 ` Ada novice
2010-07-30 19:41 ` John B. Matthews
2010-07-30 21:08 ` Ada novice
2010-07-30 22:19 ` Simon Wright
2010-07-31 12:19 ` Ada novice
2010-07-31 13:25 ` Simon Wright
2010-07-31 19:39 ` Ada novice
2010-07-31 21:02 ` Simon Wright
2010-08-01 9:36 ` Ada novice
2010-08-01 16:14 ` Simon Wright
2010-08-01 16:27 ` Ada novice
2010-08-01 17:33 ` Simon Wright
[not found] ` <997036dd-ca13-4cdf-8f88-9b47a9f83b2d@s9g2000yqd.googlegroups.com>
2010-07-31 13:08 ` Simon Wright
2010-07-31 13:17 ` Simon Wright
2010-07-30 15:10 ` John B. Matthews
2010-08-01 10:47 ` John B. Matthews
2010-08-01 17:08 ` Simon Wright
2010-08-02 1:08 ` John B. Matthews
2010-08-02 16:36 ` Simon Wright
2010-08-02 16:55 ` Ada novice
2010-08-05 9:14 ` Ada novice
2010-08-05 13:23 ` John B. Matthews
2010-08-05 13:57 ` sjw
2010-08-05 17:24 ` Ada novice
2010-08-05 17:59 ` Jeffrey Carter
2010-08-05 20:25 ` Simon Wright
2010-08-06 1:15 ` John B. Matthews
2010-08-06 9:11 ` Ada novice
2010-08-06 9:17 ` Ada novice
2010-08-06 8:04 ` Jacob Sparre Andersen
2010-08-06 8:42 ` Dmitry A. Kazakov
2010-08-06 9:26 ` Ada novice
2010-08-06 9:51 ` Dmitry A. Kazakov
2010-08-06 12:04 ` Ada novice
2010-08-06 16:49 ` Simon Wright
2010-08-06 17:27 ` Dmitry A. Kazakov
2010-08-06 18:15 ` Ada novice
2010-08-06 20:26 ` Simon Wright
2010-08-07 0:46 ` John B. Matthews
2010-08-07 7:59 ` Dmitry A. Kazakov
2010-08-07 9:09 ` Georg Bauhaus
2010-08-07 12:33 ` John B. Matthews
2010-08-06 9:49 ` Peter Hermann
2010-08-06 12:03 ` Ada novice
2010-08-07 4:07 ` Randy Brukardt
2010-08-07 8:10 ` Ada novice
2010-08-06 16:41 ` Simon Wright
2010-08-06 8:39 ` sjw
2010-07-24 16:44 ` Dmitry A. Kazakov
2010-07-24 18:04 ` Ada novice
2010-07-24 19:16 ` Dmitry A. Kazakov
2010-07-25 0:22 ` tmoran
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox