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=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Jeffrey Carter Newsgroups: comp.lang.ada Subject: Re: Interface with C codes Date: Fri, 17 Oct 2014 19:20:42 -0700 Organization: Also freenews.netfront.net; news.tornevall.net; news.eternal-september.org Message-ID: References: <7dec5a01-4376-4f86-b4f3-b28948474828@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Injection-Date: Sat, 18 Oct 2014 02:20:40 +0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="206f88a41f45fc94d25d07d064d738e2"; logging-data="14669"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18tIg+hFFTNISv6BSRnu1r5s28DdD5OFUs=" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.2 In-Reply-To: <7dec5a01-4376-4f86-b4f3-b28948474828@googlegroups.com> Cancel-Lock: sha1:9CctXyBXgurGTR9SSgMgEIm6ZkU= Xref: news.eternal-september.org comp.lang.ada:22563 Date: 2014-10-17T19:20:42-07:00 List-Id: On 10/17/2014 04:22 PM, Anh Vo wrote: > What Ada spec should be for the following C prototype where BOOT_PARAMS is a struct and responding Ada type is > > type Boot_Parameter_Type is > record > Boot_Dev : Interfaces.C.Strings.Chars_Ptr; This doesn't match the C quoted below. Use Interfaces.C.Char_Array (0 .. 19); > -- ... > end record; > pragma Convention (C, Boot_Parameter_Type); > > type Boot_Parameter_Type_Access is access Boot_Parameter_Type; > pragma Convention (C, Boot_Parameter_Type_Access); You don't need this access type. > char * bootStringToStruct (char * bootString, BOOT_PARAMS * pBootParams); I would probably use function To_Record (Boot_String : Intefaces.C.Char_Array; Boot_Parameter : Boot_Parameter_Type) return Interfaces.C.Strings.Chars_Ptr; and rely on the advice in B.3(69-70): both parameters will be passed by reference. -- Jeff Carter "Whatever it is, I'm against it." Horse Feathers 46