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,FREEMAIL_FROM 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!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: Victor Porton Newsgroups: comp.lang.ada Subject: Re: Strict aliasing, is it OK? Date: Wed, 05 Jul 2017 02:39:58 +0300 Organization: Aioe.org NNTP Server Message-ID: References: NNTP-Posting-Host: 5v2/mjF2EZ/Zj3uAcepXoA.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7Bit X-Complaints-To: abuse@aioe.org User-Agent: KNode/4.14.10 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:47293 Date: 2017-07-05T02:39:58+03:00 List-Id: Simon Wright wrote: > Victor Porton writes: > >> type My_Dummy_Access is access constant RDF.Auxiliary.Dummy_Record; >> >> function C_Raptor_Parser_Get_Description (Parser: Handle_Type) return >> My_Dummy_Access >> with Import, Convention=>C, >> External_Name=>"raptor_parser_get_description"; >> >> function Get_Description (Parser: Parser_Type) return >> RDF.Raptor.Syntaxes.Syntax_Description_Type is >> function Conv is new Ada.Unchecked_Conversion(My_Dummy_Access, >> RDF.Raptor.Syntaxes.Syntax_Description_Type); > > (I _wish_ you could use shorter lines!) > > Is an "RDF.Raptor.Syntaxes.Syntax_Description_Type" actually an "access > constant RDF.Auxiliary.Dummy_Record"? If so, why not just declare > C_Raptor_Parser_Get_Description as returning a > RDF.Raptor.Syntaxes.Syntax_Description_Type? And if not, what are you > doing returning an unchecked conversion of one to the other? Yes, I already found that this can be simplified (and updated my code at GitHub). But my question about my old code remains valid. Is that old code erroneous or isn't? By the way, type Syntax_Description_Type is access constant Syntax_Description_Record with Convention => C; This isn't `access constant RDF.Auxiliary.Dummy_Record` but is memory compatible with it. > Your code as it stands is equivalent to > > function C_Raptor_Parser_Get_Description > (Parser : Handle_Type) > return RDF.Raptor.Syntaxes.Syntax_Description_Type > with > Import, > Convention => C, > External_Name => "raptor_parser_get_description"; -- Victor Porton - http://portonvictor.org