From: "Ian Ward" <iward@drawnai.demon.co.uk>
Subject: Re: Constraint or what?
Date: 2000/02/16
Date: 2000-02-16T00:00:00+00:00 [thread overview]
Message-ID: <950722970.15331.0.nnrp-08.d4f0c606@news.demon.co.uk> (raw)
In-Reply-To: 38A2A395.FD028B73@alcatel.be
Dat denk je maar, nieuw Ariel Gaat diep in de vezels...
I have seen this before, I seem to recall that the compiler thought
that, as it was only a subtype of POSITIVE, it did not think that
it was constrained. I demonstrated this on the compiler in question,
by creating a huge range, within a Type
eg. Type x is range 0 .. 2**30-1, or whatever
Then derived the subtype constraint fron the new type,
instead of positive.
subtype arrayrng is x range 0..30;
It then worked. I did not investigate
this any further, once I'd got it to work.
Groetjes,
Ian.
Jan Wuyts wrote in message <38A2A395.FD028B73@alcatel.be>...
>Hi guys,
>
>We're doing a port Alsys -> VADS or whatever they are called these
>days. This maybe a stupid question but I'll take the risk.
>
>The Alsys didn't complain on the construct below but the VADS one does.
>I know about the restrictions on UNCHECKED_CONVERSION and the VADS
>documentation says the target type cannot be an unconstraint array but I
>assumed it was constraint. So, why does the VADS compiler issue an
>error...
>
>Can anyone help me?
>
>Here is what I do:
>
>--------------------
>...in ADT_ADU...
> MAX_BINARY_BUFFER_SIZE : constant integer
> := ADT_ADU_DESCRIPTION.MAX_BINARY_BUFFER_SIZE;
> subtype T_BINARY_BUFFER_SIZE is
> INTEGER range 0..MAX_BINARY_BUFFER_SIZE;
> type T_BINARY_BUFFER is array (T_BINARY_BUFFER_SIZE range <>) of
> NUMERIC_TYPES.UNSIGNED_INTEGER8;
>
>... in NUMERIC_TYPES ...
> type UNSIGNED_INTEGER8 is range 0 .. 255;
> for UNSIGNED_INTEGER8'size use 8;
>
> type UNSIGNED_INTEGER8_ARRAY is
> array (POSITIVE range <>) of UNSIGNED_INTEGER8;
> pragma PACK (UNSIGNED_INTEGER8_ARRAY);
>
> subtype BYTE_ARRAY is UNSIGNED_INTEGER8_ARRAY;
>
>... in the failing procedure...
>DUMP_BIN_BUF:
>declare
> BUFSIZ : constant ADT_ADU.T_BINARY_BUFFER_SIZE
> := ADT_ADU.BINARY_BUFFER_SIZE(ADU);
> BUF : ADT_ADU.T_BINARY_BUFFER(1..BUFSIZ);
> subtype LIMITED_BYTE_ARRAY_RANGE is
> POSITIVE range 1..BUFSIZ +1;
>
> subtype LIMITED_BYTE_ARRAY is NUMERIC_TYPES.BYTE_ARRAY
> (LIMITED_BYTE_ARRAY_RANGE);
> function TO_BYTE_ARRAY is new
> UNCHECKED_CONVERSION (TARGET=> LIMITED_BYTE_ARRAY,
> SOURCE=> ADT_ADU.T_BINARY_BUFFER);
> ---- This is where the VADS compiler says...
> ---- error: RM Appendix F: target type must not be
> ---- unconstrained array or record type
>
>begin
> ADT_ADU.GET_BINARY_BUFFER(ADU, BUF);
> return "BUFFER_SIZE=>"& INTEGER'IMAGE(BUFSIZ) & ","
> & ASCII.LF & "BUFFER=>("
> & ASCII.LF &
.DUMP_BYTE_ARRAY(
> TO_BYTE_ARRAY( BUF )
> )
> & ASCII.LF & ASCII.HT & ")";
>exception
>--------------------
>
>In my opinion LIMITED_BYTE_ARRAY is constraint so...
>
>Thanks for the help
>--
> _____________
> Jan Wuyts (RX) \ ^ /
> \ALC/_\TEL/
>------------------------------------------\ /----
> Internet: wuytsj@rsd.bel.alcatel.be \ ,,, /
> jan.wuyts@alcatel.be (. .)
>-----------------------------------------o00-(_)-00o---
>Alcatel Bell Space V
> Berkenrodelei 33 Phone: (+32) 3/829.5479
> B-2660 Hoboken Fax: (+32) 3/829.5763
> Belgium.
prev parent reply other threads:[~2000-02-16 0:00 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-02-10 0:00 Constraint or what? Jan Wuyts
2000-02-10 0:00 ` reason67
2000-02-11 0:00 ` Pascal Martin
2000-02-13 0:00 ` Robert Dewar
2000-02-18 0:00 ` Robert Dewar
2000-02-16 0:00 ` Ian Ward [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox