text: /*
   * Code for class ARRAY_ITERATION_CURSOR [REAL_32]
   */
  
  #include "eif_eiffel.h"
  #include "../E1/estructure.h"
  
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  extern void F453_4402(EIF_REFERENCE, EIF_TYPED_VALUE);
  extern EIF_TYPED_VALUE F453_4403(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F453_4404(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F453_4405(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F453_4406(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F453_4407(EIF_REFERENCE);
  extern void EIF_Minit453(void);
  
  #ifdef __cplusplus
  }
  #endif
  
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  
  #ifdef __cplusplus
  }
  #endif
  
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /* {ARRAY_ITERATION_CURSOR}.make */
  void F453_4402 (EIF_REFERENCE Current, EIF_TYPED_VALUE arg1x)
  {
  	GTCX
  	char *l_feature_name = "make";
  	RTEX;
  #define arg1 arg1x.it_r
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_TYPED_VALUE up2x = {{0}, SK_POINTER};
  #define up2 up2x.it_p
  	EIF_REFERENCE tr1 = NULL;
  	EIF_REFERENCE tr2 = NULL;
  	EIF_INTEGER_32 ti4_1;
  	EIF_INTEGER_32 ti4_2;
  	EIF_BOOLEAN tb1;
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	
  	RTLI(4);
  	RTLR(0,arg1);
  	RTLR(1,Current);
  	RTLR(2,tr1);
  	RTLR(3,tr2);
  	RTLIU(4);
  	RTLU (SK_VOID, NULL);
  	RTLU(SK_REF,&arg1);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 452, Current, 0, 1, 9155);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(452, Current, 9155);
  	RTCC(arg1, 452, l_feature_name, 1, RTWCT(3238, dtype, Dftype(Current)), 0x00);
  	RTIV(Current, RTAL);
  	if ((RTAL & CK_REQUIRE) || RTAC) {
  		RTHOOK(1);
  		RTCT("t_attached", EX_PRE);
  		RTTE((EIF_BOOLEAN)(arg1 != NULL), label_1);
  		RTCK;
  		RTJB;
  label_1:
  		RTCF;
  	}
  body:;
  	RTHOOK(2);
  	RTDBGAA(Current, dtype, 3238, 0xF80001A1, 0); /* target */
  	tr1 = RTCCL(arg1);
  	RTAR(Current, tr1);
  	*(EIF_REFERENCE *)(Current + RTWA(3238, dtype)) = (EIF_REFERENCE) tr1;
  	RTHOOK(3);
  	RTDBGAA(Current, dtype, 3225, 0xF80001B5, 0); /* area */
  	tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3238, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  	RTNHOOK(3,1);
  	tr2 = ((up2x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(2156, "area", tr1))(tr1)), (((up2x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up2x.it_r = RTBU(up2x))), (up2x.type = SK_POINTER), up2x.it_r);
  	RTAR(Current, tr2);
  	*(EIF_REFERENCE *)(Current + RTWA(3225, dtype)) = (EIF_REFERENCE) tr2;
  	RTHOOK(4);
  	RTDBGAA(Current, dtype, 3239, 0x10000000, 1); /* first_index */
  	ti4_1 = *(EIF_INTEGER_32 *)(arg1 + RTVA(2664, "lower", arg1));
  	*(EIF_INTEGER_32 *)(Current + RTWA(3239, dtype)) = (EIF_INTEGER_32) ti4_1;
  	RTHOOK(5);
  	RTDBGAA(Current, dtype, 3228, 0x10000000, 1); /* area_last_index */
  	ti4_1 = *(EIF_INTEGER_32 *)(arg1 + RTVA(2663, "upper", arg1));
  	ti4_2 = *(EIF_INTEGER_32 *)(Current + RTWA(3239, dtype));
  	*(EIF_INTEGER_32 *)(Current + RTWA(3228, dtype)) = (EIF_INTEGER_32) (EIF_INTEGER_32) (ti4_1 - ti4_2);
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(6);
  		RTCT("target_set", EX_POST);
  		tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3238, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  		if (RTCEQ(tr1, arg1)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(7);
  		RTCT("is_valid", EX_POST);
  		tb1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3208, dtype))(Current)).it_b);
  		if (tb1) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(8);
  		RTCT("default_step", EX_POST);
  		ti4_1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3202, dtype))(Current)).it_i4);
  		if ((EIF_BOOLEAN)(ti4_1 == ((EIF_INTEGER_32) 1L))) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(9);
  		RTCT("ascending_traversal", EX_POST);
  		tb1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3207, dtype))(Current)).it_b);
  		if ((EIF_BOOLEAN) !tb1) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(10);
  		RTCT("first_index_set", EX_POST);
  		ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3239, dtype));
  		ti4_2 = *(EIF_INTEGER_32 *)(arg1 + RTVA(2664, "lower", arg1));
  		if ((EIF_BOOLEAN)(ti4_1 == ti4_2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(11);
  		RTCT("last_index_set", EX_POST);
  		ti4_1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3201, dtype))(Current)).it_i4);
  		ti4_2 = *(EIF_INTEGER_32 *)(arg1 + RTVA(2663, "upper", arg1));
  		if ((EIF_BOOLEAN)(ti4_1 == ti4_2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(12);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(3);
  	RTEE;
  #undef up1
  #undef up2
  #undef arg1
  }
  
  /* {ARRAY_ITERATION_CURSOR}.first_index */
  EIF_TYPED_VALUE F453_4403 (EIF_REFERENCE Current)
  {
  	EIF_TYPED_VALUE r;
  	r.type = SK_INT32;
  	r.it_i4 = *(EIF_INTEGER_32 *)(Current + RTWA(3239,Dtype(Current)));
  	return r;
  }
  
  
  /* {ARRAY_ITERATION_CURSOR}.new_cursor */
  EIF_TYPED_VALUE F453_4404 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "new_cursor";
  	RTEX;
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_TYPED_VALUE ur1x = {{0}, SK_REF};
  #define ur1 ur1x.it_r
  	EIF_REFERENCE tr1 = NULL;
  	EIF_REFERENCE tr2 = NULL;
  	EIF_REFERENCE Result = ((EIF_REFERENCE) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(5);
  	RTLR(0,Current);
  	RTLR(1,tr1);
  	RTLR(2,tr2);
  	RTLR(3,ur1);
  	RTLR(4,Result);
  	RTLIU(5);
  	RTLU (SK_REF, &Result);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 452, Current, 0, 0, 9157);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(452, Current, 9157);
  	RTIV(Current, RTAL);
  	RTHOOK(1);
  	RTDBGAL(0, 0xF80001C4, 0,0); /* Result */
  	{
  		EIF_TYPE_INDEX typarr0[] = {0xFF01,452,0,0,0xFFFF};
  		EIF_TYPE typres0;
  		{
  			EIF_TYPE l_type;
  			l_type = RTWCT(3148, dtype, Dftype(Current));
  			typarr0[2] = l_type.annotations | 0xFF00;
  			typarr0[3] = l_type.id;
  		}
  		
  		typres0 = eif_compound_id(Dftype(Current), typarr0);
  		tr1 = RTLN(typres0.id);
  	}
  	tr2 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3238, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  	ur1 = RTCCL(tr2);
  	(FUNCTION_CAST(void, (EIF_REFERENCE, EIF_TYPED_VALUE)) RTWC(3237, Dtype(tr1)))(tr1, ur1x);
  	RTNHOOK(1,1);
  	Result = (EIF_REFERENCE) RTCCL(tr1);
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(2);
  		RTCT("result_attached", EX_POST);
  		if ((EIF_BOOLEAN)(Result != NULL)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(3);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(2);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_REF; r.it_r = Result; return r; }
  #undef up1
  #undef ur1
  }
  
  /* {ARRAY_ITERATION_CURSOR}.is_valid */
  EIF_TYPED_VALUE F453_4405 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "is_valid";
  	RTEX;
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_TYPED_VALUE up2x = {{0}, SK_POINTER};
  #define up2 up2x.it_p
  	EIF_REFERENCE tr1 = NULL;
  	EIF_REFERENCE tr2 = NULL;
  	EIF_BOOLEAN tb1;
  	EIF_BOOLEAN tb2;
  	EIF_BOOLEAN Result = ((EIF_BOOLEAN) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(3);
  	RTLR(0,Current);
  	RTLR(1,tr1);
  	RTLR(2,tr2);
  	RTLIU(3);
  	RTLU (SK_BOOL, &Result);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 452, Current, 0, 0, 9158);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(452, Current, 9158);
  	RTIV(Current, RTAL);
  	RTHOOK(1);
  	RTDBGAL(0, 0x04000000, 1,0); /* Result */
  	tb1 = '\0';
  	tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3238, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  	RTNHOOK(1,1);
  	tr2 = ((up2x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(2156, "area", tr1))(tr1)), (((up2x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up2x.it_r = RTBU(up2x))), (up2x.type = SK_POINTER), up2x.it_r);
  	tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3225, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  	if ((EIF_BOOLEAN)(tr2 == tr1)) {
  		tb2 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3208, 436))(Current)).it_b);
  		tb1 = tb2;
  	}
  	Result = (EIF_BOOLEAN) tb1;
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(2);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(2);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_BOOL; r.it_b = Result; return r; }
  #undef up1
  #undef up2
  }
  
  /* {ARRAY_ITERATION_CURSOR}.target */
  EIF_TYPED_VALUE F453_4406 (EIF_REFERENCE Current)
  {
  	EIF_TYPED_VALUE r;
  	r.type = SK_REF;
  	r.it_r = *(EIF_REFERENCE *)(Current + RTWA(3238,Dtype(Current)));
  	return r;
  }
  
  
  /* {ARRAY_ITERATION_CURSOR}.area_first_index */
  EIF_TYPED_VALUE F453_4407 (EIF_REFERENCE Current)
  {
  	EIF_TYPED_VALUE r;
  	r.type = SK_INT32;
  	r.it_i4 = (EIF_INTEGER_32) ((EIF_INTEGER_32) 0L);
  	return r;
  }
  
  void EIF_Minit453 (void)
  {
  	GTCX
  }
  
  
  #ifdef __cplusplus
  }
  #endif
  