home *** CD-ROM | disk | FTP | other *** search
- with GENSORTSH ;
- with Z000021 ;
- with TEXT_IO ; use TEXT_IO ;
-
- procedure Z000023 is -- a test of five types as elements of arrays
- -- using the same generic sort routine
-
- type INT_ARRAY is array( INTEGER range <> ) of INTEGER ;
- INT_DATA : INT_ARRAY(1..4) := ( 3, 4, 1, 2) ;
-
- type FLT_ARRAY is array( INTEGER range <> ) of FLOAT ;
- FLT_DATA : FLT_ARRAY(1..4) := ( 3.0, 4.0, 1.0, 2.0) ;
-
- subtype MY_STRING is STRING(1..3) ;
- type STR_ARRAY is array( INTEGER range <> ) of MY_STRING ;
- STR_DATA : STR_ARRAY(1..4) := ( "CCC", "DDD", "AAA", "BBB") ;
-
- type MY_ENUM is ( FIRST , SECOND, THIRD, FOURTH ) ;
- type ENU_ARRAY is array( INTEGER range <> ) of MY_ENUM ;
- ENU_DATA : ENU_ARRAY(1..4) := ( THIRD, FOURTH, FIRST, SECOND ) ;
-
- type MY_FIXED is delta 0.01 range - 20.0 .. 20.0 ;
- type FIX_ARRAY is array ( INTEGER range <> ) of MY_FIXED ;
- FIX_DATA : FIX_ARRAY(1..4) :=( 3.1, 4.1, 1.1, 2.1 ) ;
-
- package INT_SORT_UP is new GENSORTSH(INTEGER,INT_ARRAY) ;
- package INT_SORT_DN is new GENSORTSH(INTEGER,INT_ARRAY,"<") ;
- package FLT_SORT_UP is new GENSORTSH(FLOAT,FLT_ARRAY) ;
- package FLT_SORT_DN is new GENSORTSH(FLOAT,FLT_ARRAY,"<") ;
- package STR_SORT_UP is new GENSORTSH(MY_STRING,STR_ARRAY) ;
- package STR_SORT_DN is new GENSORTSH(MY_STRING,STR_ARRAY,"<") ;
- package ENU_SORT_UP is new GENSORTSH(MY_ENUM,ENU_ARRAY) ;
- package ENU_SORT_DN is new GENSORTSH(MY_ENUM,ENU_ARRAY,"<") ;
- package FIX_SORT_UP is new GENSORTSH(MY_FIXED,FIX_ARRAY) ;
- package FIX_SORT_DN is new GENSORTSH(MY_FIXED,FIX_ARRAY,"<") ;
-
- package INT_IO is new INTEGER_IO(INTEGER) ; use INT_IO ;
- package FLT_IO is new FLOAT_IO(FLOAT) ; use FLT_IO ;
- package ENU_IO is new ENUMERATION_IO(MY_ENUM) ; use ENU_IO ;
- package FIX_IO is new FIXED_IO(MY_FIXED) ; use FIX_IO ;
-
- begin
- INT_SORT_UP.SHSORT(INT_DATA) ;
- FLT_SORT_UP.SHSORT(FLT_DATA) ;
- STR_SORT_UP.SHSORT(STR_DATA) ;
- ENU_SORT_UP.SHSORT(ENU_DATA) ;
- FIX_SORT_UP.SHSORT(FIX_DATA) ;
-
- PUT_LINE(" UP SORTED DATA ") ;
- for I in INT_DATA'RANGE loop
- PUT(INT_DATA(I)); PUT(' ');
- PUT(FLT_DATA(I)); PUT(' ');
- PUT(STR_DATA(I)); PUT(' ');
- PUT(ENU_DATA(I)); PUT(' ');
- PUT(FIX_DATA(I)); NEW_LINE;
- end loop ;
-
- INT_SORT_DN.SHSORT(INT_DATA) ;
- FLT_SORT_DN.SHSORT(FLT_DATA) ;
- STR_SORT_DN.SHSORT(STR_DATA) ;
- ENU_SORT_DN.SHSORT(ENU_DATA) ;
- FIX_SORT_DN.SHSORT(FIX_DATA) ;
-
- PUT_LINE(" DOWN SORTED DATA ") ;
- for I in INT_DATA'RANGE loop
- PUT(INT_DATA(I)); PUT(' ');
- PUT(FLT_DATA(I)); PUT(' ');
- PUT(STR_DATA(I)); PUT(' ');
- PUT(ENU_DATA(I)); PUT(' ');
- PUT(FIX_DATA(I)); NEW_LINE;
- end loop ;
- Z000021 ;
- end Z000023 ;
-