comp.lang.ada
 help / color / mirror / Atom feed
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;




  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