comp.lang.ada
 help / color / mirror / Atom feed
From: Adam Beneschan <adam@irvine.com>
Subject: Re: Problem using Ada.Text_IO.Modular_IO
Date: Wed, 9 Jul 2008 14:50:10 -0700 (PDT)
Date: 2008-07-09T14:50:10-07:00	[thread overview]
Message-ID: <ea236c84-6478-458e-a655-64d671cfa52c@i76g2000hsf.googlegroups.com> (raw)
In-Reply-To: 4eab7055-df3d-4d56-87da-8248829da1da@26g2000hsk.googlegroups.com

On Jul 9, 9:52 am, jujo...@googlemail.com wrote:
> Dear All,
>
> I'm tying to print variables of a defined modular type to the standard
> io and a file.
> The type I'm working with is: type Unsigned is mod 2**64;
>
> Therefore I define a modular_io package to do this:
> package mio is new ada.text_io.modular_io(usigned);
>
> However, when compile my little test program (using gnatmake -gnato),
> the compiler tells me that a "Constraint Error" will be raised at
> runtime. So I tried it with only 63 bit (mod 2**63), which works fine
> with the GNAT 4.3.1 (20080420) on a 32bit Ubuntu-Linux machine.
>
> ----------- test program -----------
> with ada.text_io; use ada.text_io;
> procedure test is
>         type Unsigned is mod 2**64;
>         package M_IO is new Ada.Text_IO.Modular_IO (Unsigned);
>         u : Unsigned := -1;
> begin
>         m_io.put(Item =>  u, Width =>  20, Base  => 16);
> end;
> -----------------------------------------
>
> I guess that this is a bug. However, what can I do instead of this, to
> get 64 bit words printed as hex, octal and binary?

Here's an even simpler workaround than my last suggestion: After the
declaration of "u", just add this:

  pragma Volatile (u);

This prevents the compiler from thinking it knows what "u" is going to
hold, and everything works fine.  Of course, in real-life code, you're
a lot more likely to using "put" on a value that the compiler won't be
able to determine at compile time, so the above bug isn't going to
appear anyway and you don't need a workaround.

                               -- Adam




  parent reply	other threads:[~2008-07-09 21:50 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-09 16:52 Problem using Ada.Text_IO.Modular_IO jujosei
2008-07-09 19:03 ` Anh Vo
2008-07-09 19:22   ` Adam Beneschan
2008-07-09 21:50 ` Adam Beneschan [this message]
2008-07-10 15:00   ` jujosei
2008-07-10  0:48 ` anon
2008-07-10  1:52   ` Adam Beneschan
2008-07-10  7:25     ` anon
2008-07-10 14:59       ` Adam Beneschan
2008-07-11  0:34         ` anon
2008-07-11  9:49           ` Georg Bauhaus
2008-07-11 10:05             ` christoph.grein
2008-07-11 13:21               ` John McCormick
2008-07-11 12:16             ` anon
2008-07-11 13:26               ` petter_fryklund
2008-07-11 21:10                 ` anon
2008-07-12 10:06                   ` Georg Bauhaus
2008-07-13  0:51                     ` anon
2008-07-13 16:03                     ` Georg Bauhaus
2008-07-14  2:03                       ` anon
2008-07-14 13:12                         ` Georg Bauhaus
2008-07-16  6:16                           ` micronian2
2008-07-16  7:47                             ` anon
2008-07-17 16:33                               ` micronian2
2008-07-14 16:34                       ` micronian2
2008-07-14 17:26                         ` Georg Bauhaus
2008-07-16  6:28                           ` micronian2
replies disabled

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