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 X-Google-Thread: 103376,7769c087a4d30c0e X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news4.google.com!news.glorb.com!npeer.de.kpn-eurorings.net!newsfeed.arcor.de!news.arcor.de!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: Unchecked_Conversion and task pointer. Newsgroups: comp.lang.ada User-Agent: 40tude_Dialog/2.0.14.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <1120751455.846822.141050@z14g2000cwz.googlegroups.com> <1xuh1gs97pwwg$.1v4w9ruw1n2x$.dlg@40tude.net> <1PidncjOa5cWA1DfRVn-1Q@megapath.net> <28m5yx3jhzvu$.16u6va8093srl.dlg@40tude.net> Date: Sun, 10 Jul 2005 10:26:09 +0200 Message-ID: NNTP-Posting-Date: 10 Jul 2005 10:26:09 MEST NNTP-Posting-Host: f9677420.newsread4.arcor-online.net X-Trace: DXC=Q4P_]CM?m[NZYo_CH;Uk?N:ejgIfPPldDjW\KbG]kaMHAV6U:Z=fE=On?KXAaed2=H[6LHn;2LCVNI^><>f3dFYJSbW7aDAlhJH X-Complaints-To: abuse@arcor.de Xref: g2news1.google.com comp.lang.ada:11983 Date: 2005-07-10T10:26:09+02:00 List-Id: On Sat, 9 Jul 2005 20:42:33 -0500, Randy Brukardt wrote: > "Dmitry A. Kazakov" wrote in message > news:28m5yx3jhzvu$.16u6va8093srl.dlg@40tude.net... > ... >>> No, you should definitely use an interface. >> >> It depends. Tasks are still non-tagged in the sense that you cannot have a >> "task" interface. > > You can declare a task interface in Ada 200Y: > > type T_Int is task interface; > > I probably should have done that in my example. Can a task interface have entries? >> In an interface Who_Am_I can only be a *procedure*, which >> could be then implemented by an entry. But it should an *entry* from the >> beginning if the intent is to have a dispatching entry Who_Am_I called >> using, say, timed entry call. > > You are allowed to use the primitive procedures of an interface in a timed > entry call, and they will work as an entry in that case. Does it mean that in Ada 200Y any procedure of an interface can be used as if it were an entry? > So while the > *syntax* is that of a procedure, they do not lose their entry > characteristics and still act as an entry. > > I wasn't (and am still not) convinced that this is the right design, but it > certainly works and has the needed effects. I think there will be some > confusion from a readability standpoint, but otherwise you can do everything > with such a procedure that you can do with an entry (other than requeue it; > no one can figure out how a dispatching requeue could work - it couldn't > have been allowed if dispatching entries existed, either). Why? Ignoring misleading prefix notation can be ignored, to have a dispatching requeue, the target task or protected object of the entry must be class-wide: task type A is -- This is not Ada entry Foo; end A; function Factory (...) return A'Class; Object : X'Class := Factory (...); ... requeue Object.Foo; -- Dispatches to Foo ... BTW, similarly to class-wide subroutines there could be class-wide entries. A requeue from a class-wide entry to a "primitive" entry of the same object would be dispatching: protected type A is -- This is not Ada entry Foo'Class; -- A class-wide entry entry Bar; -- A "primitive" entry end A; >> In that case mix-in will be the only workaround. > > Not at all. See above. It seems so. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de