comp.lang.ada
 help / color / mirror / Atom feed
From: "Grein, Christoph" <christoph.grein@eurocopter.com>
Subject: Re: class wide object in generic package
Date: Mon, 10 Jun 2002 13:07:47 +0200 (MET DST)
Date: 2002-06-10T13:07:47+02:00	[thread overview]
Message-ID: <mailman.1023772024.30712.comp.lang.ada@ada.eu.org> (raw)

> first: is it possible to declare a procedure in the
> generic part so that it will be a primitive operation of
> Object?
> second: why isn't a class-wide argument not allowed
> in this place?
>
> generic_pac.ads:
> generic
> 	type Object is abstract tagged private;
> 	type Pointer is access all Object'class;
> 	with procedure eval(o : in out Object);

You can instantiate with any procedure that matches the profile, so the worst is 
assumed and Eval is not a primitive operation.

> 	
> package generic_pac is
> 	type gen is record
> 		p : Pointer;
> 	end record;
> 
> 	procedure use_it(g : in out gen);
> 	
> end generic_pac;
> ===========================================
> generic_pac.adb:
> with Ada.Text_IO; use Ada.Text_IO;
> 
> package body generic_pac is
> 	procedure use_it(g : in out gen) is
> 	begin
> 		Put_Line("generic_pac.use_it");
> 		eval(g.p.all);

Since Pointer is classwide, this is a dispatching call, but Eval is not 
primitive, so can't be used in a dispatching call.


> 	end use_it;
> end generic_pac;



             reply	other threads:[~2002-06-10 11:07 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-10 11:07 Grein, Christoph [this message]
  -- strict thread matches above, loose matches on Subject: below --
2002-06-10  7:38 class wide object in generic package Thomas Maier-Komor
2002-06-10 12:28 ` Craig Carey
2002-06-10 13:14   ` Thomas Maier-Komor
2002-06-10 13:00 ` Stephen Leake
2002-06-10 13:25   ` Thomas Maier-Komor
2002-06-11 20:57   ` Ehud Lamm
2002-06-12 17:33     ` Stephen Leake
2002-06-13  1:58       ` Robert A Duff
2002-06-13 14:07         ` Stephen Leake
replies disabled

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