/* friendly for string::String::from_cstring */ String file_new_String_from_cstring( char * str ) { val_t str___nit; String result___nitni; val_t result___nit; str___nit = BOX_NativeString(str); result___nitni = malloc( sizeof( struct s_String ) ); result___nitni->ref.val = NIT_NULL; result___nitni->ref.count = 0; nitni_local_ref_add( (struct nitni_ref *)result___nitni ); result___nit = NEW_String_standard___string___String___from_cstring( str___nit ); result___nitni->ref.val = result___nit; return result___nitni; }
val_t standard___environ___String___environ(val_t p0){ struct {struct stack_frame_t me; val_t MORE_REG[1];} fra; val_t REGB0; val_t REGB1; val_t tmp; static val_t once_value_1; /* Once value */ static val_t once_value_2; /* Once value */ static val_t once_value_4; /* Once value */ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me; fra.me.file = LOCATE_standard___environ; fra.me.line = 22; fra.me.meth = LOCATE_standard___environ___String___environ; fra.me.has_broke = 0; fra.me.REG_size = 2; fra.me.nitni_local_ref_head = NULL; fra.me.REG[0] = NIT_NULL; fra.me.REG[1] = NIT_NULL; fra.me.REG[0] = p0; /* ../lib/standard/environ.nit:26 */ fra.me.REG[0] = CALL_standard___string___String___to_cstring(fra.me.REG[0])(fra.me.REG[0]); fra.me.REG[0] = CALL_standard___environ___NativeString___get_environ(fra.me.REG[0])(fra.me.REG[0]); /* ../lib/standard/environ.nit:28 */ if (!once_value_1) { if (!once_value_2) { fra.me.REG[1] = BOX_NativeString(""); REGB0 = TAG_Int(0); fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0); once_value_2 = fra.me.REG[1]; register_static_object(&once_value_2); } else fra.me.REG[1] = once_value_2; fra.me.REG[1] = fra.me.REG[1]; fra.me.REG[1] = CALL_standard___string___String___to_cstring(fra.me.REG[1])(fra.me.REG[1]); fra.me.REG[1] = CALL_standard___environ___NativeString___get_environ(fra.me.REG[1])(fra.me.REG[1]); once_value_1 = fra.me.REG[1]; register_static_object(&once_value_1); } else fra.me.REG[1] = once_value_1; fra.me.REG[1] = fra.me.REG[1]; /* ../lib/standard/environ.nit:29 */ REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[1])); if (UNTAG_Bool(REGB0)) { } else { REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]); REGB0 = REGB1; } REGB0 = TAG_Bool(!UNTAG_Bool(REGB0)); if (UNTAG_Bool(REGB0)) { /* ../lib/standard/environ.nit:30 */ fra.me.REG[0] = NEW_String_standard___string___String___from_cstring(fra.me.REG[0]); goto label3; } else { /* ../lib/standard/environ.nit:32 */ if (!once_value_4) { fra.me.REG[1] = BOX_NativeString(""); REGB0 = TAG_Int(0); fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0); once_value_4 = fra.me.REG[1]; register_static_object(&once_value_4); } else fra.me.REG[1] = once_value_4; fra.me.REG[1] = fra.me.REG[1]; fra.me.REG[0] = fra.me.REG[1]; goto label3; } label3: while(0); stack_frame_head = fra.me.prev; return fra.me.REG[0]; }