comp.lang.ada
 help / color / mirror / Atom feed
* Constraint or what?
@ 2000-02-10  0:00 Jan Wuyts
  2000-02-10  0:00 ` reason67
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Jan Wuyts @ 2000-02-10  0:00 UTC (permalink / raw)


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 & LOG.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.




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

end of thread, other threads:[~2000-02-18  0:00 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox