From: "David C. Hoos, Sr." <david.c.hoos.sr@ada95.com>
Subject: Re: Reflection (was: Re: The best thing/greatest feature summary)
Date: Thu, 2 Nov 2000 05:19:01 -0600
Date: 2000-11-02T05:19:01-06:00 [thread overview]
Message-ID: <U2cM5.33036$Q8.6984150@newsrump.sjc.telocity.net> (raw)
In-Reply-To: 0O9M5.381209$i5.6373651@news1.frmt1.sfba.home.com
Here is what might be considered an improvement on your package:
with Ada.Tags;
generic
package Reflection is
Unit_Name : constant String;
private -- Reflection
type T is abstract tagged null record;
S : constant String := Ada.Tags.Expanded_Name (T'Tag);
Unit_Name : constant String := S (1 .. S'Last - 2);
end Reflection;
package One is
procedure P;
procedure Q;
end One;
with Reflection,
Ada.Text_Io;
package body One is
package Me is new Reflection;
procedure P is
begin
Ada.Text_Io.Put_Line (Me.Unit_Name);
end P;
procedure Q is
package Me is new Reflection;
begin
Ada.Text_Io.Put_Line (Me.Unit_Name);
end Q;
end One;
with Reflection,
One,
Ada.Text_Io;
procedure Test_Reflection is
package Me is new Reflection;
begin
One.P; --> ONE.ME
One.Q; --> ONE.Q.ME
Ada.Text_Io.Put_Line (Me.Unit_Name); --> TEST_REFLECTION.ME
end Test_Reflection;
<tmoran@acm.org> wrote in message
news:0O9M5.381209$i5.6373651@news1.frmt1.sfba.home.com...
> >Or does instantiating this package within a routine actually work? (I
don't
> >have an Ada compiler near me at the moment.)
> Using Gnat 3.13p,
>
> with Ada.Tags;
> generic package Reflection is
> Unit_Name : constant String;
> private -- Reflection
> type T is abstract tagged null record;
> Unit_Name : constant String := Ada.Tags.Expanded_Name (T'Tag);
> end Reflection;
>
> package one is
> procedure p;
> procedure q;
> end one;
>
> with reflection,
> ada.text_io;
> package body one is
> package me is new reflection;
> procedure p is
> begin ada.text_io.put_line(me.unit_name);end p;
> procedure q is
> package myself is new reflection;
> begin
> ada.text_io.put_line(myself.unit_name);
> end q;
> end one;
>
> with reflection,
> one,
> ada.text_io;
> procedure test is
> package me is new reflection;
> begin
> one.p; --> ONE.ME.T
> one.q; --> ONE.Q.MYSELF.T
> ada.text_io.put_line(me.unit_name); --> TEST.ME.T
> end test;
next prev parent reply other threads:[~2000-11-02 11:19 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <39DCB9E3.EAE8F426@ftw.rsc.raytheon.com>
2000-10-27 22:08 ` The best thing/greatest feature summary Wes Groleau
2000-10-28 1:01 ` Lothar Scholz
2000-11-24 2:15 ` Peter Horan
2000-11-24 0:00 ` Lothar Scholz
2000-11-24 0:00 ` Friedrich Dominicus
2000-10-28 1:03 ` Lothar Scholz
2000-10-31 14:44 ` Tom Hargraves
2000-10-31 18:07 ` tmoran
2000-10-31 19:58 ` Larry Kilgallen
2000-11-01 1:56 ` Tom Hargraves
2000-10-31 19:28 ` James Rogers
2000-11-01 2:13 ` Tom Hargraves
2000-11-01 3:27 ` James Rogers
2000-11-01 12:48 ` Ken Garlington
2000-11-01 14:03 ` Pat Rogers
2000-11-01 15:30 ` James Rogers
2000-11-01 22:12 ` Tom Hargraves
2000-11-01 22:44 ` Ted Dennison
2000-11-01 22:54 ` Pat Rogers
2000-11-01 23:47 ` James Rogers
2000-11-02 5:25 ` Pat Rogers
2000-11-02 5:28 ` Pat Rogers
2000-11-02 22:00 ` Wes Groleau
2000-11-02 3:45 ` Reflection (was: Re: The best thing/greatest feature summary) Jeff Carter
2000-11-02 6:57 ` Ray Blaak
2000-11-02 8:42 ` tmoran
2000-11-02 11:19 ` David C. Hoos, Sr. [this message]
2000-11-02 18:09 ` tmoran
2000-11-02 12:51 ` David C. Hoos, Sr.
2000-11-03 2:26 ` Jeff Carter
2000-11-02 14:33 ` Tucker Taft
2000-11-02 16:02 ` Ted Dennison
2000-11-04 0:00 ` Florian Weimer
2000-11-03 2:23 ` Jeff Carter
2000-11-03 5:05 ` Randy Brukardt
2000-11-03 5:28 ` Ken Garlington
2000-11-04 4:13 ` Jeff Carter
2000-11-10 0:00 ` The best thing/greatest feature summary jacob navia
2000-10-31 21:01 ` Wes Groleau
2000-10-30 20:19 ` Roger Browne
2000-10-31 16:24 ` Greg
2000-10-31 16:55 ` Roger Browne
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox