comp.lang.ada
 help / color / mirror / Atom feed
* Constructing a modular type based on the size of an arbitrary type
@ 1999-09-14  0:00 Mike Bates
  1999-09-14  0:00 ` Mark A Biggar
  0 siblings, 1 reply; 3+ messages in thread
From: Mike Bates @ 1999-09-14  0:00 UTC (permalink / raw)


I am writing a generic package in which I need to be able to construct
a modular type with the same size in bits as an arbitrary packed type
passed in as a generic parameter.  (This is to be able to do unchecked
conversions between the arbitrary type and modular types; so they need
to be the same size.)  This is what I tried:

generic
    type Arbitrary_Type is private;
package Foo is

    type Modular_Type is mod Arbitrary_Type'Size ** 2;

end Foo;

The definition of Modular_Type fails because the value
Arbitrary_Type'Size ** 2 is not static.  (This surprises me, because
the value is determinable at compile time.)

I also tried the following, relying on the instantiator to pass in
the value of Arbitrary_Type'Size ** 2:

generic
    Arbitrary_Modulus : Natural;
package Foo is

    type Modular_Type is mod Arbitrary_Type;

end Foo;

This also fails, again because the modulus expression is not
static, even though it seems that it should determinable at compile
time.  It fails even if I use a numeric literal as the actual
parameter in the instantiation.

Is there any way to construct a modular type to match the size of
an arbitrary type?  Or is this as impossible as trisecting the angle?

Mike Bates
FlightSafety Simulation
mikeb@ssd.fsi.com





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~1999-09-14  0:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-09-14  0:00 Constructing a modular type based on the size of an arbitrary type Mike Bates
1999-09-14  0:00 ` Mark A Biggar
1999-09-14  0:00   ` Robert I. Eachus

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