comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Effective use of derived types
Date: Fri, 25 Jul 2014 21:33:15 +0200
Date: 2014-07-25T21:33:15+02:00	[thread overview]
Message-ID: <fb0lrjwhs95g$.7l08fyzgm8gz$.dlg@40tude.net> (raw)
In-Reply-To: 3e94fe4f-c9f4-41dd-95e7-a0e329a2ef48@googlegroups.com

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


  reply	other threads:[~2014-07-25 19:33 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-25 16:40 Effective use of derived types Victor Porton
2014-07-25 17:38 ` Dmitry A. Kazakov
2014-07-25 18:00   ` Victor Porton
2014-07-25 18:40     ` Dan'l Miller
2014-07-25 19:33       ` Dmitry A. Kazakov [this message]
2014-07-26  1:33         ` Dan'l Miller
2014-07-26  3:34 ` Shark8
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox