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 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Effective use of derived types Date: Fri, 25 Jul 2014 21:33:15 +0200 Organization: cbb software GmbH Message-ID: References: <1xeciz1z2smla$.lxa15ypfbre9$.dlg@40tude.net> <3e94fe4f-c9f4-41dd-95e7-a0e329a2ef48@googlegroups.com> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: qHNcUCBwwd01dPSBp/L1cg.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:21222 Date: 2014-07-25T21:33:15+02:00 List-Id: On Fri, 25 Jul 2014 11:40:58 -0700 (PDT), Dan'l Miller wrote: > On Friday, July 25, 2014 1:00:06 PM UTC-5, Victor Porton wrote: >> Dmitry A. Kazakov wrote: >>> On Fri, 25 Jul 2014 19:40:27 +0300, Victor Porton wrote: >>>> I write an Ada library (in fact thick bindings to a C library), which >>>> (among other) deals with some strings, including URIs. >>>> Should I introduce new type for URI strings? >> >>> Yes. >> >>>> type URI_String is new String; >> >>> No. >> >>> URI is not a string. It has a textual representation, which is a string >>> (one of many types of strings). If you want a type for URI it should keep >>> its fields. You will have functions alike to attributes Value and Image to >>> convert URI from and to String. > > Dmitry, at some shallow level your statements are trivially correct, but > are quite misleading as stated if taken to heart deeply. Victor is not > asking whether URI should be a tagged record; of course it should. Victor > is not asking whether that URI tagged record should have its package > associated functions taking the URI tagged record as their first > parameter; of course it should. Instead, Victor is asking whether the > URI_string member of the URI tagged record (and return/out-bound value of > dispatched functions & procedures thereof) should be a subtype of string > or not. The question was about thick bindings. The difference between thin and thick bindings is in particular that in the latter you use Ada types for arguments and results and C types in the former. In both cases the answer is no, URI should never be String. For thin bindings it would likely be char_array for an input and chars_ptr for an output. For thick bindings it should be a properly designed type, not necessarily tagged. (Many Ada bindings are semi-thick, they use Boolean and String where appropriate and remain thin in other cases.) > I say of course URI should be a subtype of string in Ada2012 so that it > can Dynamic_Predicate post-conditions that enforce the regular expression > that URIs must obey. I doubt that were realistic. In any case the amount of work required to design such a predicate would be far bigger than in the case of a proper type. Usefulness would be near to zero. It is like designing a predicate that yields true of the string contains a valid Ada program... -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de