From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,5a84d5077c54a29d X-Google-Attributes: gid103376,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news2.google.com!news1.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!wn13feed!worldnet.att.net!bgtnsc05-news.ops.worldnet.att.net.POSTED!53ab2750!not-for-mail Newsgroups: comp.lang.ada From: anon@anon.org (anon) Subject: Re: Ada array vs C pointer (call by reference) Reply-To: anon@anon.org (anon) References: <5d649522-50be-4aa5-9dce-cd1daa2bcd0d@p39g2000prm.googlegroups.com> X-Newsreader: IBM NewsReader/2 2.0 Message-ID: Date: Sun, 29 Jun 2008 03:48:52 GMT NNTP-Posting-Host: 12.65.72.236 X-Complaints-To: abuse@worldnet.att.net X-Trace: bgtnsc05-news.ops.worldnet.att.net 1214711332 12.65.72.236 (Sun, 29 Jun 2008 03:48:52 GMT) NNTP-Posting-Date: Sun, 29 Jun 2008 03:48:52 GMT Organization: AT&T Worldnet Xref: g2news1.google.com comp.lang.ada:947 Date: 2008-06-29T03:48:52+00:00 List-Id: All credited languages and their compilers use "Standards" for their Data representation, such as IEEE. Which means that as along as you use the compilers that share the same standard or you code an understand of these differences in those standards in your routine you can be safe that your code will perform correctly. In <5d649522-50be-4aa5-9dce-cd1daa2bcd0d@p39g2000prm.googlegroups.com>, Adrian Hoe writes: >On Jun 28, 6:54 am, "Jeffrey R. Carter" > wrote: >> Adrian Hoe wrote: >> >> > Can I use Float instead of Interfaces.C.C_Float? >> >> You can use anything you want: Boolean, Duration, a task type, ... >> >> But if you want to be sure it will work, you'll use Interfaces.C.C_Float. >> >> > Why use Interfaces.C.Int, Interfaces.C.C_Float since they are all new >> > declaration of Ada types. >> >> > I know it is for readability and maintainability but the question is >> > logical as the declaration in Interfaces.C is just merely creating a >> > new Ada type with a new name, unless there is pragma Convention >> > statement after every such declaration in Interfaces.C. >> >> I suggest you read ARM B.3. There you'll find, "Each of the types declared in >> Interfaces.C is C-compatible." >> >> > Wouldn't it be better to write as such? >> >> > type C_Data is array (Positive range <>) of Float; >> > pragma Convention (C, C_Data); >> >> Not if you want to be sure it will work. >> >> > Is PWM_Data passed as pointer to pwmRead? >> >> B.3 also contains, "An Ada parameter of an array type with component type T, of >> any mode, is passed as a t* argument to a C function, where t is the C type >> corresponding to the Ada type T." > > >Ok. Ada somewhat guarantees a safe environment of its own. The >ultimate concern is how Ada (or we) can guarantee a safe interfacing >to C? > >Like those previous posts in this thread (by Maciej, Keith, et al), it >depends on compiler implementation. The question is, the C library >(which I am interfacing with) is compiled by unknown C compiler with >unknown switches and the author cannot be contacted. The only >documentation I have is the C header file. Can Ada safe implementation >guarantee a safe interface in this case? Or rather, how Ada can >guarantee a safe interface? > >This does not limit to float * but can be anything else. The reason I/ >we ask this (stupid) question is that I want to eliminate undesired >results because the results returned will be difficult to trace/prove >for correctness. >-- >Adrian Hoe >http://adrianhoe.com