comp.lang.ada
 help / color / mirror / Atom feed
From: Dmitry A. Kazakov <mailbox@dmitry-kazakov.de>
Subject: Re: Overloading procedures with Float and Long_Float types
Date: Mon, 08 Mar 2004 15:37:45 +0100
Date: 2004-03-08T15:37:45+01:00	[thread overview]
Message-ID: <f20p4057h0ui8pj2bmja5ualk3c0j9v9sa@4ax.com> (raw)
In-Reply-To: 404c7e53.0@entanet

On Mon, 8 Mar 2004 14:05:27 -0000, "Luke Guest" <lguest@bubball.com>
wrote:

>> >Translate is another st of overloaded functions with the same signature
>as
>> >Vertex;
>> >
>> > procedure Translate(X, Y, Z : in GLdouble);
>> > procedure Translate(X, Y, Z : in GLfloat);
>> >
>> >It's just that I've 3 Translate calls and about 40 Vertex calls in my
>test
>> >program.
>>
>> This is only possible if you are using literals:
>>
>>    Translate (1.0, 1.0, 1.0);  -- This is ambiguous
>>
>> The compiler does not knwo which kind of Float you mean.
>>
>>    Translate (GLfloat (1.0), 1.0, 1.0); -- This is OK
>>
>> Now the compiler has a hint.
>
>It seems that Outlook Express crap, didn't send my last reply *sigh*
>
>It's a shame that you would have to type GLfloat(1.0) to give the compiler a
>hint, is there some float notation that can differentitate bewteen FLoat's
>and Long_Float's?

GLfloat (1.0) or better GLfloat'(1.0) is exactly that hint. It tells
that the numeric literal 1.0 has to be converted to (the first case),
or expected to be of (the second case) the designated type. How could
it be otherwise? Carefully observe that the type of 1.0 is neither
Float nor Long_Float. It is Universal_Real. (see ARM 2.4)

However, you can also *imagine* 1.0 as a set of overloaded functions:

function "1.0" return Float;
function "1.0" return Long_Float;
... -- + many others in presense of other floating/fixed-point types

as you see there is no way to decide which one you mean!

>Basically, it just seems to be wasting a good opportunity for overloading
>here.

Surely not.

Generally, oveloading is not a very brilliant idea in the case like
yours. Overloading is a way to make different things look similar.
(polymorphic as it called in OO) And what is a difference between
Float and Long_Float? The length of mantissa? This is a pure
implementation detal, which has to be hidden. IMO the actual problem
here is bad design. If you are witting an OpenGL application you have
to choose which precision is suitable for this concrete application.
If you are designing bindings to OpenGL, then it is better to place
float and double things in two different [paths of] packages. And
finally, calling subroutines with "magic" numeric literals is the most
obscure way of programming.

--
Regards,
Dmitry Kazakov
www.dmitry-kazakov.de



  parent reply	other threads:[~2004-03-08 14:37 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-08  0:17 Overloading procedures with Float and Long_Float types Luke A. Guest
2004-03-08  3:49 ` James Rogers
2004-03-08  8:16   ` Luke A. Guest
2004-03-08  8:20     ` Preben Randhol
2004-03-08  9:06       ` Luke A. Guest
2004-03-08 10:10         ` Dmitry A. Kazakov
2004-03-08 14:05           ` Luke Guest
2004-03-08 14:07             ` Preben Randhol
2004-03-08 15:10               ` Luke Guest
2004-03-08 16:20                 ` Preben Randhol
2004-03-08 16:28                   ` Luke Guest
2004-03-08 17:58                     ` Preben Randhol
2004-03-09  8:55                       ` Dmitry A. Kazakov
2004-03-08 16:50                   ` Hyman Rosen
2004-03-08 16:55                     ` Luke Guest
2004-03-08 17:32                       ` Hyman Rosen
2004-03-08 14:37             ` Dmitry A. Kazakov [this message]
2004-03-08 15:18               ` Luke Guest
2004-03-08 19:52                 ` Gautier Write-only
2004-03-08 20:34                   ` Luke A. Guest
2004-03-09  8:40                 ` Dmitry A. Kazakov
2004-03-08 12:46 ` David C. Hoos
2004-03-08 14:03   ` Luke Guest
2004-03-08 14:54     ` Georg Bauhaus
2004-03-08 15:19       ` Luke Guest
2004-03-08 16:04     ` David C. Hoos
2004-03-08 16:17       ` Luke Guest
2004-03-09  9:24         ` Dmitry A. Kazakov
2004-03-08 19:58       ` Gautier Write-only
     [not found]     ` <1faf01c40527$0a364a10$b101a8c0@sy.com>
2004-03-08 16:21       ` Preben Randhol
replies disabled

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