2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								with  H3.Pool ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								with  H3.Limited_Pool ;  
						 
					
						
							
								
									
										
										
										
											2021-10-06 03:56:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								with  H3.Arrays ;  
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								with  H3.Strings ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								with  H3.Storage_Pools ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								with  H3.MM ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								with  GNAT.Debug_Pools ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								with  System.Storage_Pools ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								with  System.Pool_Global ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								with  Ada.Unchecked_Deallocation ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								with  Ada.Text_IO ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								with  Ada.Wide_Text_IO ;  
						 
					
						
							
								
									
										
										
										
											2021-08-24 07:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								with  Ada.Assertions ;  
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 23:54:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								use  type  H3 . System_Size ;  
						 
					
						
							
								
									
										
										
										
											2021-10-03 16:53:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								procedure  hello  is  
						 
					
						
							
								
									
										
										
										
											2021-10-27 15:34:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									package  S  is new  H3.Strings ( Standard.Wide_Character) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 17:30:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									--type Global_Pool is new System.Storage_Pools.Root_Storage_Pool with null record;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									P1 :  aliased  System . Pool_Global . Unbounded_No_Reclaim_Pool ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									P2 :  aliased  GNAT . Debug_Pools . Debug_Pool ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									P3 :  aliased  H3 . Storage_Pools . Global_Pool ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  T  is  record 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										A :  Integer  :=  99 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										B :  Integer  :=  88 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										C :  Float ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									end  record ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  L  is  limited  record 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										A :  Integer  :=  1234 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										B :  Integer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										C :  Float ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									end  record ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  T_Pointer  is  access  T ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									package  TP  is new  H3.Pool ( T,  T_Pointer,  P1'Unchecked_Access) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  L_Pointer  is  access  L ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									package  LP  is new  H3.Limited_Pool ( L,  L_Pointer,  P1'Unchecked_Access) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  I_Pointer  is  access  Integer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									package  IP  is new  H3.Pool ( Integer,  I_Pointer,  P1'Unchecked_Access) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 	procedure  Info  is  new  GNAT . Debug_Pools . Print_Info ( Ada . Text_IO . Put_Line ,  Ada . Text_IO . Put ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									x :  T_Pointer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									i :  I_Pointer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									y :  L_Pointer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									SS :  S . Elastic_String ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 23:54:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									procedure  print_string_info  ( Str :  in  S . Elastic_String ;  Name :  in  Standard . String )  is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										len :  H3 . System_Size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										capa :  H3 . System_Size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										first :  H3 . System_Size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										last :  H3 . System_Size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									begin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										len  :=  S . Get_Length ( Str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										capa  :=  S . Get_Capacity ( Str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										first  :=  S . Get_First_Index ( Str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										last  :=  S . Get_Last_Index ( Str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put  ( Name  &  " len:"  &  len ' Img  &  " capa:"  &  capa ' Img  &  " first:"  &  first ' img  &  " last:"  &  last ' img  &  " => " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 16:53:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Ada . Wide_Text_IO . Put_line  ( Standard . Wide_String ( S . To_Item_Array ( Str ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 16:53:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  S . Terminator_Length  >  0  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											pragma  Assert  ( S . Get_Item ( Str ,  S . Get_Last_Index ( Str )  +  1 )  =  S . Terminator_Value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										end  if ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									end  print_string_info ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								begin  
						 
					
						
							
								
									
										
										
										
											2021-09-30 23:54:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									declare 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										TTT :  H3 . System_Size  :=  H3 . System_Size ' Last ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										--NNN: Standard.Natural := Standard.Natural'Last;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									begin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										TTT  :=  TTT  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ada . text_io . put_line  ( "-----------------" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ada . text_io . put_line  ( TTT ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ada . text_io . put_line  ( "-----------------" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										--NNN := NNN + 1;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										--ada.text_io.put_line ("-----------------");
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										--ada.text_io.put_line (NNN'Img);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										--ada.text_io.put_line ("-----------------");
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									end ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									x  :=  TP . Allocate ( ( A  =>  900 ,  B  =>  800 ,  C  =>  1.1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									i  :=  IP . Allocate ( 200 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									y  :=  LP . Allocate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- can't do this as it's limited
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									--y.all := (A => 1900, B => 1800, C => 11.1);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- this works...
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									--y.A := 1900;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									y . B  :=  1800 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									y . C  :=  11.1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									declare 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										type  LL_Pointer  is  access  L ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  LL_Pointer ' Storage_Pool  use  P3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										z :  LL_Pointer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										procedure  Dealloc  is  new  Ada . Unchecked_Deallocation ( L ,  LL_Pointer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									begin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										z  :=  new  L ' ( A  =>  9900 ,  B  =>  9800 ,  C  =>  99.1 ) ; 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( Z . A ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Dealloc  ( z ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									end ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ada . Text_IO . Put_Line ( Integer ' Image ( x . A ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ada . Text_IO . Put_Line ( Integer ' Image ( x . B ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ada . Text_IO . Put_Line ( Integer ' Image ( i . all ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ada . Text_IO . Put_Line ( Integer ' Image ( y . A ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									IP . Deallocate  ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									TP . Deallocate  ( x ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									LP . Deallocate  ( y ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									--GNAT.Debug_Pools.Print_Info_Stdout(P2);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									--GNAT.Debug_Pools.Dump_Stdout(P2,  100);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									declare 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										str :  S . Elastic_String ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-24 07:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										str2 :  S . Elastic_String ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									begin 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										S . Append ( Str ,  "Hello, world!" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  13 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  13 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Append ( Str ,  "" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  13 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  13 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Append ( Str ,  ' ' ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  13 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  13 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Prepend ( Str ,  ' ' ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  13 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  13 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Append ( Str ,  ' ' ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  15 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  15 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										S . Append ( Str ,  "donkey" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  21 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  21 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Prepend ( Str ,  "Oh! " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  25 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  25 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										declare 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											-- unsafe way to access the internal buffer.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 03:56:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											--arr: constant S.P.Item_Array := S.To_Item_Array(Str);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-30 05:32:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											arr :  constant  S . Rune_Array  :=  S . To_Item_Array ( Str ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										begin 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Ada . Wide_Text_IO . Put  ( "STR[1] => [" ) ; 	
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											for  i  in  arr ' Range  loop 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Ada . Wide_Text_IO . Put  ( arr ( i ) ) ; 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											end  loop ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Ada . Wide_Text_IO . Put_Line  ( "]" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 23:54:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Ada . Wide_Text_IO . Put  ( "STR[2] => [" ) ; 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  i  in  S . Get_First_Index ( Str )  . .  S . Get_Last_Index ( Str )  loop 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Ada . Wide_Text_IO . Put  ( S . Get_Item ( Str ,  i ) ) ; 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											end  loop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ada . Wide_Text_IO . Put_Line  ( "]" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ada . Wide_Text_IO . Put  ( "STR[3] => [" ) ; 	
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 23:54:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Ada . Wide_Text_IO . Put  ( Standard . Wide_String ( arr ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Ada . Wide_Text_IO . Put_Line  ( "]" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										end ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str ,  "Oh! Hello, world!  donkey" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Append  ( Str ,  '>' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  26 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  26 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str ,  "Oh! Hello, world!  donkey>" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Append  ( Str ,  "donkeyX" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  33 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  33 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str ,  "Oh! Hello, world!  donkey>donkeyX" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Append  ( Str ,  "ABCDE" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  38 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  38 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str ,  "Oh! Hello, world!  donkey>donkeyXABCDE" ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-24 07:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Str2  :=  Str ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Append  ( Str2 ,  "EXTRA" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  43 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  43 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "Oh! Hello, world!  donkey>donkeyXABCDEEXTRA" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  38 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  38 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str ,  "Oh! Hello, world!  donkey>donkeyXABCDE" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-24 07:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										S . Append  ( Str2 ,  " THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  91 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  91 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "Oh! Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str )  =  38 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str )  =  38 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str ,  "Oh! Hello, world!  donkey>donkeyXABCDE" ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-24 07:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										S . Replace  ( Str2 ,  1 ,  1 ,  ' Q ' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  91 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  91 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "Qh! Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-01 11:03:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										S . Insert  ( Str2 ,  1 ,  ' B ' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  92 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  92 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "BQh! Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Insert  ( Str2 ,  1 ,  ' A ' ,  3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  95 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  95 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "AAABQh! Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Insert  ( Str2 ,  3 ,  ' C ' ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  97 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  97 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "AACCABQh! Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Insert  ( Str2 ,  5 ,  "" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  97 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  97 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "AACCABQh! Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Insert  ( Str2 ,  S . Get_Last_Index ( Str2 )  +  1 ,  "" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  97 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  97 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "AACCABQh! Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Insert  ( Str2 ,  S . Get_Last_Index ( Str2 )  +  1 ,  " => ABCDEF" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  107 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  107 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "AACCABQh! Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3 => ABCDEF" ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-24 07:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										S . Prepend  ( Str2 ,  '>' ,  3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  110 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  110 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  ">>>AACCABQh! Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3 => ABCDEF" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Delete  ( Str2 ,  1 ,  3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  107 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  107 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "AACCABQh! Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3 => ABCDEF" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Delete  ( Str2 ,  S . Get_Last_Index ( Str2 )  -  9 ,  S . Get_Last_Index ( Str2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  97 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  97 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "AACCABQh! Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Delete  ( Str2 ,  5 ,  9 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  92 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  92 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "AACC Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Replace  ( Str2 ,  1 ,  5 ,  "" ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  87 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  87 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "Hello, world!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Replace  ( Str2 ,  8 ,  12 ,  "cougar" ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  88 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  88 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "Hello, cougar!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR H3" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Replace  ( Str2 ,  S . Get_Last_Index ( Str2 )  -  1 ,  S . Get_Last_Index ( Str2 )  +  100 ,  "HH" ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  88 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  88 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "Hello, cougar!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR HH" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S . Replace  ( Str2 ,  8 ,  13 ,  "bee" ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  85 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  85 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "Hello, bee!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR HH" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 16:53:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										S . Replace  ( Str2 ,  8 ,  10 ,  "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ" ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Length ( Str2 )  =  160 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_First_Index ( Str2 )  =  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . Get_Last_Index ( Str2 )  =  160 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pragma  Assert  ( S . "=" ( Str2 ,  "Hello, ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ!  donkey>donkeyXABCDEEXTRA THIS IS FANTASTIC ELASTIC STRING WRITTEN FOR HH" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										declare 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 03:56:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											--arr: constant S.P.Thin_Item_Array_Pointer := S.Get_Slot_Pointer(Str);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											--arr2: constant S.P.Thin_Item_Array_Pointer := S.Get_Slot_Pointer(Str2);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-30 05:32:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											arr :  constant  S . Thin_Rune_Array_Pointer  :=  S . Get_Slot_Pointer ( Str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											arr2 :  constant  S . Thin_Rune_Array_Pointer  :=  S . Get_Slot_Pointer ( Str2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											use  type  H3 . System_Word ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										begin 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											print_string_info  ( Str ,  "Str" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-24 07:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 23:54:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Ada . Wide_Text_IO . Put  ( "STR(By-Pointer) [" ) ; 	
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 16:53:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for  i  in  S . Get_First_Index ( Str )  . .  S . Get_Last_Index ( Str )  +  S . Terminator_Length  loop  -- this must loop to the terminating null.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												Ada . Wide_Text_IO . Put  ( arr . all ( i ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											end  loop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ada . Wide_Text_IO . Put_Line  ( "]" ) ; 	
							 
						 
					
						
							
								
									
										
										
										
											2021-08-24 07:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 15:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-24 07:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2021-09-30 23:54:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Ada . Wide_Text_IO . Put  ( "Str2(By-Pointer) [" ) ; 	 -- this must loop to the terminating null.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 16:53:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for  i  in  S . Get_First_Index ( Str2 )  . .  S . Get_Last_Index ( Str2 )  +  S . Terminator_Length  loop 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-24 07:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Ada . Wide_Text_IO . Put  ( arr2 . all ( i ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											end  loop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ada . Wide_Text_IO . Put_Line  ( "]" ) ; 	
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										end ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 07:50:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										S . Clear  ( Str2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										print_string_info  ( Str2 ,  "Str2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										--declare
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 16:53:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										--	arr: constant Standard.Wide_String := S.To_Item_Array(str);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										--begin
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										--	Ada.Wide_Text_IO.Put_Line (arr);	
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										--end;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										SS  :=  Str ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 07:50:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									end ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									declare 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										type  R_Record  is  record 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											X :  Standard . Integer  :=  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Y :  Standard . Integer  :=  4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										end  record ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										package  Q  is new  H3.MM ( R_Record) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										T :  Q . Ref_Counted ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										T2 :  Q . Ref_Counted ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										P :  Q . Item_Pointer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									begin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										declare 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											T3 :  Q . Ref_Counted ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										begin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Q . Create  ( T3 ,  ( X  =>  20 ,  Y  =>  30 ) ) ; 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											T  :=  T3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											--Q.Create (T);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										end ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										P  :=  Q . Get_Item_Pointer ( T ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										T2  :=  T ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Q . Get_Item_Pointer ( T ) . X  :=  12345 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line ( Q . Get_Item_Pointer ( T ) . Y ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line ( Q . Get_Item_Pointer ( T ) . X ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line ( Q . Get_Item_Pointer ( T2 ) . Y ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line ( Q . Get_Item_Pointer ( T2 ) . X ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									end ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 16:53:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									declare 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 17:30:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									package  S_I  is new  H3.Arrays ( Integer,  1,  16# FF# ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 03:56:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										t1 :  S_I . Elastic_Array ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 16:53:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									begin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S_I . Append  ( t1 ,  20 ,  5 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										S_I . Prepend  ( t1 ,  30 ,  2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 07:50:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										S_I . Append  ( t1 ,  30 ,  5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 16:53:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( "-------------------------------" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  i  in  S_I . Get_First_Index ( t1 )  . .  S_I . Get_Last_Index ( t1 )  loop 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ada . Text_IO . Put   ( " "  &  S_I . Get_Item ( t1 ,  i ) ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										end  loop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( "" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 07:50:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( t1 . Find ( 30 ,  t1 . Get_Last_Index ,  S_I . DIRECTION_BACKWARD ) ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( t1 . Find ( 30 ,  t1 . Get_First_Index ) ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( t1 . Find ( 90 ,  t1 . Get_First_Index ) ' Img ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 17:30:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( t1 . Find ( 90 ,  t1 . Get_First_Index ) ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( t1 . Find ( ( 30 ,  30 ,  30 ,  30 ) ,  t1 . Get_First_Index ) ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( t1 . Find ( ( 20 ,  20 ) ,  t1 . Get_First_Index ,  S_I . DIRECTION_FORWARD ) ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( t1 . Find ( ( 20 ,  20 ) ,  t1 . Get_Last_Index ,  S_I . DIRECTION_BACKWARD ) ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( t1 . Find ( ( 30 ,  20 ,  20 ) ,  t1 . Get_First_Index ,  S_I . DIRECTION_FORWARD ) ' Img ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ada . Text_IO . Put_Line  ( t1 . Find ( ( 30 ,  20 ,  20 ) ,  t1 . Get_Last_Index ,  S_I . DIRECTION_BACKWARD ) ' Img ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 16:53:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									end ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 23:47:29 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								end ;