home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 3
/
AACD03.BIN
/
AACD
/
Programming
/
sofa
/
archive
/
SmallEiffel.lha
/
SmallEiffel
/
lib_show
/
directory
/
example011.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-06-05
|
79KB
|
3,485 lines
/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.78Beta#1)--
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN - colnet@loria.fr --
-- http://SmallEiffel.loria.fr/ --
*/
#include "example01.h"
void se_prinT2135(T2135*o){
fprintf(SE_ERR,"NATIVE_ARRAY[STRING]");
fprintf(SE_ERR,"#%p",*o);
}
T660 M660={660,NULL,0};
void se_prinT660(T660**o){
if(*o==NULL){
fprintf(SE_ERR,"Void");
return;
}
fprintf(SE_ERR,"DIRECTORY");
fprintf(SE_ERR,"#%p",*o);
fprintf(SE_ERR,"\n\t[ ");
fprintf(SE_ERR,"basic_directory = ");
se_prinT0((void*)(&((*o)->_basic_directory)));
fprintf(SE_ERR,"\n\t ");
fprintf(SE_ERR,"is_connected = ");
se_prinT6((void*)(&((*o)->_is_connected)));
fprintf(SE_ERR,"\n\t]");
}
T474 M474={474,0};
void se_prinT474(T474**o){
if(*o==NULL){
fprintf(SE_ERR,"Void");
return;
}
fprintf(SE_ERR,"BOOLEAN_REF");
fprintf(SE_ERR,"#%p",*o);
fprintf(SE_ERR,"\n\t[ ");
fprintf(SE_ERR,"item = ");
se_prinT6((void*)(&((*o)->_item)));
fprintf(SE_ERR,"\n\t]");
}
T1405 M1405={1405,NULL,NULL};
void se_prinT1405(T1405**o){
if(*o==NULL){
fprintf(SE_ERR,"Void");
return;
}
fprintf(SE_ERR,"BASIC_DIRECTORY");
fprintf(SE_ERR,"#%p",*o);
fprintf(SE_ERR,"\n\t[ ");
fprintf(SE_ERR,"path = ");
se_prinT7((void*)(&((*o)->_path)));
fprintf(SE_ERR,"\n\t ");
fprintf(SE_ERR,"name_list = ");
se_prinT0((void*)(&((*o)->_name_list)));
fprintf(SE_ERR,"\n\t]");
}
T701 M701={701};
void se_prinT701(T701**o){
if(*o==NULL){
fprintf(SE_ERR,"Void");
return;
}
fprintf(SE_ERR,"EXAMPLE01");
fprintf(SE_ERR,"#%p",*o);
}
T1886 M1886={1886,NULL,0,0};
void se_prinT1886(T1886**o){
if(*o==NULL){
fprintf(SE_ERR,"Void");
return;
}
fprintf(SE_ERR,"FIXED_ARRAY[STRING]");
fprintf(SE_ERR,"#%p",*o);
fprintf(SE_ERR,"\n\t[ ");
fprintf(SE_ERR,"storage = ");
se_prinT2135((void*)(&((*o)->_storage)));
fprintf(SE_ERR,"\n\t ");
fprintf(SE_ERR,"capacity = ");
se_prinT2((void*)(&((*o)->_capacity)));
fprintf(SE_ERR,"\n\t ");
fprintf(SE_ERR,"upper = ");
se_prinT2((void*)(&((*o)->_upper)));
fprintf(SE_ERR,"\n\t]");
}
void se_prinT9(T9*o){
fprintf(SE_ERR,"NATIVE_ARRAY[CHARACTER]");
fprintf(SE_ERR,"#%p",*o);
}
T7 M7={7,NULL,0,0};
T878 M878={878};
void se_prinT878(T878**o){
if(*o==NULL){
fprintf(SE_ERR,"Void");
return;
}
fprintf(SE_ERR,"STD_OUTPUT");
fprintf(SE_ERR,"#%p",*o);
}
T2074 M2074={2074};
void se_prinT2074(T2074**o){
if(*o==NULL){
fprintf(SE_ERR,"Void");
return;
}
fprintf(SE_ERR,"STD_INPUT_OUTPUT");
fprintf(SE_ERR,"#%p",*o);
}
T714 M714={714,0};
void se_prinT714(T714**o){
if(*o==NULL){
fprintf(SE_ERR,"Void");
return;
}
fprintf(SE_ERR,"CHARACTER_REF");
fprintf(SE_ERR,"#%p",*o);
fprintf(SE_ERR,"\n\t[ ");
fprintf(SE_ERR,"item = ");
se_prinT3((void*)(&((*o)->_item)));
fprintf(SE_ERR,"\n\t]");
}
T528 M528={528,0};
void se_prinT528(T528**o){
if(*o==NULL){
fprintf(SE_ERR,"Void");
return;
}
fprintf(SE_ERR,"INTEGER_REF");
fprintf(SE_ERR,"#%p",*o);
fprintf(SE_ERR,"\n\t[ ");
fprintf(SE_ERR,"item = ");
se_prinT2((void*)(&((*o)->_item)));
fprintf(SE_ERR,"\n\t]");
}
T7*se_ms(int c,char*e){
T7*s=malloc(sizeof(gc7));
((gc7*)s)->header.flag=FSOH_MARKED;
s->id=7;
s->_count=c;
s->_capacity=c+1;
s->_storage=new9(c+2);
memcpy(s->_storage,e,c);
return s;}
T7*e2s(char*e){
return se_ms(strlen(e),e);}
char*s2e(T7*s){
char*e=malloc(1+s->_count);
memcpy(e,s->_storage,s->_count);
e[s->_count]='\0';
return e;}
/*
-- This file is free software, which comes along with SmallEiffel. This
-- software is distributed in the hope that it will be useful, but WITHOUT
-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE. You can modify it as you want, provided
-- this header is kept unaltered, and a notification of the changes is added.
-- You are allowed to redistribute it and sell it, alone or as a part of
-- another product.
-- Copyright (C) 1994-98 LORIA - UHP - CRIN - INRIA - FRANCE
-- Dominique COLNET and Suzanne COLLIN - colnet@loria.fr
-- http://www.loria.fr/SmallEiffel
--
*/
/*
This file (no_check.c) is automatically included when `run_control.no_check'
is true (ie. all modes ecxept -boost).
*/
/*
The upper most context (SmallEiffel Dump stack Top) :
*/
se_dump_stack* se_dst=NULL;
void se_print_run_time_stack(void) {
/* GENERAL.print_run_time_stack */
se_dump_stack* ds = NULL;
se_dump_stack* ds2;
int frame_count = 1;
ds = se_dst;
if (ds == NULL) {
fprintf(SE_ERR,"Empty stack.\n");
return ;
}
else {
while (ds->caller != NULL) {
ds = ds->caller;
frame_count++;
}
}
fprintf(SE_ERR,"%d frames in current stack.\n",frame_count);
fprintf(SE_ERR,"===== Bottom of run-time stack =====\n");
while (ds != NULL) {
if (ds->fd != NULL) {
se_print_one_frame(ds);
}
else {
fprintf(SE_ERR,"External CECIL call.\n");
}
/* Next frame : */
if (ds == se_dst) {
ds = NULL;
}
else {
ds2 = se_dst;
while (ds2->caller != ds) {
ds2 = ds2->caller;
}
ds = ds2;
}
if (--frame_count) {
fprintf(SE_ERR,"======================================\n");
}
}
fprintf(SE_ERR,"===== Top of run-time stack =====\n");
}
void se_print_one_frame(se_dump_stack* ds) {
se_frame_descriptor* fd = ds->fd;
int i = 0;
int local_count = 0;
char* local_format = fd->local_format;
int expanded;
int id;
void** var;
fprintf(SE_ERR,"%s\n",fd->name);
if (fd->use_current) {
fprintf(SE_ERR,"Current = ");
i = 2;
id = 0;
while (local_format[i] != '%') {
id = (id * 10) + (local_format[i] - '0');
i++;
}
i++;
(se_prinT[id])(ds->current);
fprintf(SE_ERR,"\n");
}
while (local_count < fd->local_count) {
while (local_format[i] != '%') {
fprintf(SE_ERR,"%c",local_format[i]);
i++;
}
i++;
expanded = ((local_format[i++] == 'E')?1:0);
fprintf(SE_ERR," = ");
id = 0;
while (local_format[i] != '%') {
id = (id * 10) + (local_format[i] - '0');
i++;
}
i++;
var = (ds->locals)[local_count];
if (expanded) {
(se_prinT[id])((void**)(var));
}
else if (*var == NULL) {
fprintf(SE_ERR,"Void");
}
else {
(se_prinT[((T0*)(*var))->id])((void**)(var));
}
fprintf(SE_ERR,"\n");
local_count++;
}
fprintf(SE_ERR,"line %d ",ds->l);
fflush(SE_ERR);
fprintf(SE_ERR,"column %d ",ds->c);
fflush(SE_ERR);
fprintf(SE_ERR,"file %s \n",p[ds->f]);
fflush(SE_ERR);
}
void se_core_dump(char*msg) {
if (msg != NULL) {
fprintf(SE_ERR,"%s\n",msg);
}
#ifdef SE_EXCEPTIONS
print_exception();
#endif
se_print_run_time_stack();
exit(1);
}
int se_require_uppermost_flag;
/*
Require Last Result :
*/
int se_require_last_result;
int se_rci(void*C) {
/* Return 1 if class invariant must be checked for Current
before leaving the routine.
*/
se_dump_stack*ds = se_dst;
ds = ds->caller;
if (ds != NULL) {
se_frame_descriptor* fd = ds->fd;
if (fd == NULL) {
/* As for example when coming via CECIL. */
return 0;
}
else {
if (fd->use_current) {
if (fd->local_format[1] == 'R') {
if (((void*)*(ds->current)) == C) {
return 0;
}
}
}
}
}
return 1;
}
void error0(char*m) {
static char*f1="*** Error at Run Time *** : %s\n";
fprintf(SE_ERR,f1,m);
#ifdef SE_EXCEPTIONS
print_exception();
#endif
se_print_run_time_stack();
fprintf(SE_ERR,f1,m);
exit(1);
}
void error1(char*m,int l,int c,int f) {
char*f1="Line : %d column %d in %s.\n";
char*f2="*** Error at Run Time *** : %s\n";
fprintf(SE_ERR,f1,l,c,p[f]);
fprintf(SE_ERR,f2,m);
#ifdef SE_EXCEPTIONS
print_exception();
#endif
se_print_run_time_stack();
fprintf(SE_ERR,f1,l,c,p[f]);
fprintf(SE_ERR,f2,m);
exit(1);
}
void error2(T0*o,int l,int c,int f) {
char*f1="Target Type %s not legal.\n";
fprintf(SE_ERR,f1,s2e(t[o->id]));
error1("Bad target.",l,c,f);
}
T0* vc(void*o,int l,int c,int f) {
/* VoidCheck for reference target.*/
if (o != NULL) {
return o;
}
else {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Void_call_target);
#else
error1("Call with a Void target.",l,c,f);
#endif
return NULL;
}
}
T0* ci(int id,void*o,int l,int c,int f) {
/* Check Id for reference target. */
vc(o,l,c,f);
if (id == (((T0*)o)->id)) {
return o;
}
else {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Routine_failure);
#else
fprintf(SE_ERR,"Line : %d column %d in %s.\n",l,c,p[f]);
fprintf(SE_ERR,"*** Error at Run Time *** : ");
fprintf(SE_ERR,"Target is not valid (not the good type).\n");
fprintf(SE_ERR,"Expected: %s, Actual: %s.\n",
s2e(t[id]),s2e(t[((T0*)o)->id]));
se_print_run_time_stack();
exit(1);
#endif
}
}
void ac_req(int v) {
if (!v && se_require_uppermost_flag) {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Precondition);
#else
error0("Require Assertion Violated.");
#endif
}
se_require_last_result=se_require_last_result&&v;
}
void ac_ens(int v) {
if (!v) {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Postcondition);
#else
error0("Ensure Assertion Violated.");
#endif
}
}
void ac_inv(int v) {
if (!v) {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Class_invariant);
#else
error0("Class Invariant Violation.");
#endif
}
}
void ac_liv(int v) {
/* Assertion Check : Loop Invariant check. */
if (!v) {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Loop_invariant);
#else
error0("Loop Invariant Violation.");
#endif
}
}
int ac_lvc(int lc,int lv1,int lv2) {
/* Assertion Check : Loop Variant check. */
if (lc == 0) {
if (lv2 < 0) {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Loop_variant);
#else
se_print_run_time_stack();
fprintf(SE_ERR,"Bad First Variant Value = %d\n",lv2);
exit(1);
#endif
}
else {
return lv2;
}
}
else if ((lv2 < 0) || (lv2 >= lv1)) {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Loop_variant);
#else
se_print_run_time_stack();
fprintf(SE_ERR,"Loop Body Count = %d (done)\n",lc);
fprintf(SE_ERR,"New Variant = %d\n",lv2);
fprintf(SE_ERR,"Previous Variant = %d\n",lv1);
exit(1);
#endif
}
else {
return lv2;
}
}
void ac_civ(int v) {
if (!v) {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Check_instruction);
#else
error0("Check Assertion Violated.");
#endif
}
}
void se_evobt(void*o,int l,int c,int f) {
/* Error Void Or Bad Type. */
if (!o) {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Void_call_target);
#else
error1("Target is Void.",l,c,f);
#endif
}
else {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Void_call_target);
#else
error2(o,l,c,f);
#endif
}
}
void sigrsp(int sig) {
printf("Received signal %d (man signal).\n",sig);
se_print_run_time_stack();
exit(1);
}
void se_gc_check_id(void*o,int id) {
if (id != (((T0*)o)->id)) {
#ifdef SE_EXCEPTIONS
internal_exception_handler(Routine_failure);
#else
fprintf(SE_ERR,"System-validity error detected during GC cycle.\n");
fprintf(SE_ERR,"Target is not valid (not the good type).\n");
fprintf(SE_ERR,"Expected: %s, Actual: %s.\n",
s2e(t[id]),s2e(t[((T0*)o)->id]));
se_print_run_time_stack();
exit(1);
#endif
}
}
/*
-- This file is free software, which comes along with SmallEiffel. This
-- software is distributed in the hope that it will be useful, but WITHOUT
-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE. You can modify it as you want, provided
-- this header is kept unaltered, and a notification of the changes is added.
-- You are allowed to redistribute it and sell it, alone or as a part of
-- another product.
-- Copyright (C) 1994-98 LORIA - UHP - CRIN - INRIA - FRANCE
-- Dominique COLNET and Suzanne COLLIN - colnet@loria.fr
-- http://www.loria.fr/SmallEiffel
--
*/
/*
This file (trace.c) is automatically included when `run_control.no_check' is
true (ie. all modes ecxept -boost).
This file comes after no_check.[hc] to implements the -trace flag as well as
some other printing stuff.
*/
/*
To print object into the trace-stack :
*/
void se_prinT0(T0** o) {
if (*o == NULL) {
fprintf(SE_ERR,"Void");
}
else {
fprintf(SE_ERR,"#%p",*o);
}
}
void se_prinT2(T2* o) {
fprintf(SE_ERR,"%d",*o);
}
void se_prinT3(T3* o) {
fprintf(SE_ERR,"'%c'",*o);
}
void se_prinT4(T4* o) {
fprintf(SE_ERR,"%f",((double)*o));
}
void se_prinT5(T5* o) {
fprintf(SE_ERR,"%f",*o);
}
void se_prinT6(T6* o) {
if (*o) {
fprintf(SE_ERR,"true");
}
else {
fprintf(SE_ERR,"false");
}
}
void se_prinT7(T7** o) {
if (*o == NULL) {
fprintf(SE_ERR,"Void");
}
else {
char*storage = (*o)->_storage;
int count = (*o)->_count;
int i = 0;
fprintf(SE_ERR,"\"");
while (i < count) {
fprintf(SE_ERR,"%c",storage[i]);
i++;
}
fprintf(SE_ERR,"\"");
}
}
void se_prinT8(T8* o) {
if (*o == NULL) {
fprintf(SE_ERR,"NULL");
}
else {
fprintf(SE_ERR,"POINTER#%p",*o);
}
}
#ifndef SE_TRACE
void se_trace(se_dump_stack*ds,int l,int c,int f) {
ds->l=l;
ds->c=c;
ds->f=f;
}
# endif
#ifdef SE_TRACE
/*
Basic SmallEiffel step-by-step execution.
*/
static FILE* se_trace_file = NULL;
static int se_write_trace_flag = 0;
static int se_trace_ready_flag = 0;
static int se_step_by_step_flag = 1;
int get_answer(void) {
int result = 0;
char c = getc(stdin);
if (c != '\n') {
result = c;
}
while (c != '\n') {
c = getc(stdin);
}
return result;
}
static void sedb_help_command(void) {
printf("SmallEiffel debugger.\n");
printf("List of classes of commands:\n");
printf(" (h) Help.\n");
printf(" (s) Stack view.\n");
printf(" (q) Quit.\n");
printf(" Return to see the current Eiffel source line.");
printf(" \n");
printf("Please, feel free to debug or to complete this simple\n");
printf("step-by-step debugger (see source file in\n");
printf("\"SmallEiffel/sys/runtime/trace.c\".\n");
}
static void sedb_show_source_line(int l,int c,int f) {
static int f_memo = 0;
if (p[f] == NULL) {
printf("line %d column %d of ???\t\t",l,c);
}
else {
FILE *file = fopen(p[f],"r");
if (file != NULL) {
int line = 1;
int column = 1;
char cc;
while (line < l) {
cc = fgetc(file);
if (cc == '\n') {
line++;
}
}
cc = fgetc(file);
while (cc != '\n') {
if (cc == '\t') {
printf(" ");
column+=7;
}
else {
fputc(cc,stdout);
}
cc = fgetc(file);
column++;
}
while (column < 72) {
fputc(' ',stdout);
column++;
}
printf("l%dc%d ",l,c);
if (f_memo != f) {
printf(" %s ",p[f]);
}
f_memo = f;
fclose(file);
}
else {
printf("line %d column %d of %s\t\t",l,c,p[f]);
}
}
}
void se_trace(se_dump_stack*ds,int l,int c,int f) {
static char cmd_memo = 1;
static char cmd;
ds->l=l;
ds->c=c;
ds->f=f;
if (se_trace_ready_flag) {
if (se_write_trace_flag) {
fprintf(se_trace_file,"line %d column %d in %s\n",l,c,p[f]);
fflush(se_trace_file);
}
next_command:
if (se_step_by_step_flag) {
if (cmd_memo != 0) {
printf("(sedb) ");
}
fflush(stdout);
cmd = get_answer();
cmd_memo = cmd;
if ((cmd == 'h') || (cmd == 'H') || (cmd == '?')) {
sedb_help_command();
goto next_command;
}
else if ((cmd == 's') || (cmd == 'S')) {
se_print_run_time_stack();
goto next_command;
}
else if ((cmd == 'q') || (cmd == 'Q')) {
exit(1);
}
else if (cmd == 0) {
sedb_show_source_line(l,c,f);
}
else {
printf("Unknown command.\nTtype H for help\n");
goto next_command;
}
}
}
else {
se_trace_ready_flag = 1;
printf("Write the execution trace in \"trace.se\" file (y/n) ? [n]");
fflush(stdout);
if (get_answer() == 'y') {
se_write_trace_flag = 1;
se_trace_file = fopen("trace.se","w");
}
printf("Step-by-step execution (y/n) ? [y]");
fflush(stdout);
if (get_answer() == 'n') {
se_step_by_step_flag = 0;
}
else {
sedb_help_command();
}
}
}
# endif
/*
-- This file is free software, which comes along with SmallEiffel. This
-- software is distributed in the hope that it will be useful, but WITHOUT
-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE. You can modify it as you want, provided
-- this header is kept unaltered, and a notification of the changes is added.
-- You are allowed to redistribute it and sell it, alone or as a part of
-- another product.
-- Copyright (C) 1994-98 LORIA - UHP - CRIN - INRIA - FRANCE
-- Dominique COLNET and Suzanne COLLIN - colnet@loria.fr
-- http://www.loria.fr/SmallEiffel
--
*/
/*
This file (basic_directory.c) is automatically included when some external
"SmallEiffel" feature of class BASIC_DIRECTORY is live.
*/
/*
The current active entry while scanning a directory :
*/
static struct dirent* se_dir_entry = NULL;
void* se_dir_open(void* path) {
/* Try to open directory `path'. */
DIR* dirstream = opendir(((char*) path));
if (dirstream != NULL) {
se_dir_entry = readdir((DIR*) dirstream);
}
else {
se_dir_entry = NULL;
}
return ((void*) dirstream);
}
void* se_dir_name(void* dirstream) {
/* Return the name of the current entry. */
char* entry;
if (se_dir_entry != NULL) {
entry = se_dir_entry->d_name;
return entry;
}
else {
return NULL;
}
}
void* se_dir_next(void* dirstream_pointer) {
/* Try to read the next entry. */
DIR* dirstream = dirstream_pointer;
if (se_dir_entry != NULL) {
se_dir_entry = readdir(dirstream);
if (se_dir_entry == NULL) {
closedir(dirstream);
return NULL;
}
else {
return dirstream;
}
}
else {
return NULL;
}
}
void* se_dir_gcwd(int unused) {
static char* buf = NULL;
static size_t size = 0;
if (buf == NULL) {
size = 256;
buf = (char*)malloc(size);
}
if (getcwd(buf,size) != NULL) {
return buf;
}
else {
free(buf);
size = size * 2;
buf = (char*)malloc(size);
return se_dir_gcwd(0);
}
}
unsigned int fsoc_count_ceil=56;
unsigned int rsoc_count_ceil=8;
/*
-- This file is free software, which comes along with SmallEiffel. This
-- software is distributed in the hope that it will be useful, but WITHOUT
-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-- FITNESS FOR A PARTICULAR PURPOSE. You can modify it as you want, provided
-- this header is kept unaltered, and a notification of the changes is added.
-- You are allowed to redistribute it and sell it, alone or as a part of
-- another product.
-- Copyright (C) 1994-98 LORIA - UHP - CRIN - INRIA - FRANCE
-- Dominique COLNET and Suzanne COLLIN - colnet@loria.fr
-- http://www.loria.fr/SmallEiffel
--
*/
/* This file is automatically included when the Garbage Collector
is used (default, unless option -no_gc has been selected).
*/
void**stack_bottom;
mch**gcmt=NULL;
int gcmt_max=2048;
int gcmt_used=0;
fsoc*fsocfl=NULL;
rsoc*rsocfl=NULL;
int gc_is_off=1;
unsigned int fsoc_count=0;
unsigned int rsoc_count=0;
void*gcmt_tail_addr=NULL;
void gc_sweep(void) {
mch** p2 = gcmt;
mch** p1 = gcmt+1;
mch**eogcmt=gcmt+gcmt_used;
if (FREE_CHUNK((*p2)->state_type)) {
if (RSO_FREE_CHUNK == ((*p2)->state_type)) {
((rsoc*)(*p2))->next=NULL;
rsocfl=((rsoc*)(*p2));
}
else {
rsocfl=NULL;
}
}
else {
((*gcmt)->swfp)(*p2);
if (RSO_FREE_CHUNK==((*p2)->state_type)) {
((rsoc*)(*p2))->next=NULL;
rsocfl=((rsoc*)(*p2));
}
else {
rsocfl=NULL;
}
}
while (p1 < eogcmt) {
if (FREE_CHUNK((*p1)->state_type)) {
if (RSO_FREE_CHUNK == ((*p1)->state_type)) {
if (RSO_FREE_CHUNK == ((*p2)->state_type)) {
if (((char*)(*p2))+(*p2)->size == ((char*)(*p1))) {
((*p2)->size)+=((*p1)->size);
p1++;
}
else {
((rsoc*)(*p1))->next=rsocfl;
rsocfl=((rsoc*)(*p1));
*(p2+1)=*p1; p2++; p1++;
}
}
else {
((rsoc*)(*p1))->next=rsocfl;
rsocfl=((rsoc*)(*p1));
*(p2+1)=*p1; p2++; p1++;
}
}
else {
*(p2+1)=*p1; p2++; p1++;
}
}
else {
((*p1)->swfp)(*p1);
if (RSO_FREE_CHUNK == ((*p1)->state_type)) {
if (RSO_FREE_CHUNK == ((*p2)->state_type)) {
if (((char*)(*p2))+(*p2)->size == ((char*)(*p1))) {
((*p2)->size)+=((*p1)->size);
p1++;
}
else {
((rsoc*)(*p1))->next=rsocfl;
rsocfl=((rsoc*)(*p1));
*(p2+1)=*p1; p2++; p1++;
}
}
else {
((rsoc*)(*p1))->next=rsocfl;
rsocfl=((rsoc*)(*p1));
*(p2+1)=*p1; p2++; p1++;
}
}
else {
*(p2+1)=*p1; p2++; p1++;
}
}
}
gcmt_used=(p2-gcmt)+1;
}
void gc_mark(void*p) {
if ((p>((void*)*gcmt))&&(p<=gcmt_tail_addr)) {
int i1=0;
int i2=gcmt_used-1;
int m=i2>>1;
mch*c;
for (;i2>i1;m=((i1+i2)>>1)) {
if (p<=((void*)gcmt[m+1])) {
i2=m;
}
else {
i1=m+1;
}
}
c=gcmt[i2];
if (!(FREE_CHUNK(c->state_type))) {
(c->amfp)(c,p);
}
}
}
int gc_stack_size(void) {
void*stack_top[2]={NULL,NULL};
if (stack_top > stack_bottom) {
return ((void**)stack_top)-((void**)stack_bottom);
}
else {
return ((void**)stack_bottom)-((void**)stack_top);
}
}
/*
To delay Garbage Collection when the stack is too large.
To allow fast increase of ceils.
*/
#define FSOC_LIMIT (10240/((FSOC_SIZE)>>10))
#define RSOC_LIMIT (10240/((RSOC_SIZE)>>10))
/*
When stack is too large, collection may be delayed.
*/
#define GCLARGESTACK 50000
int garbage_delayed(void) {
if (gc_stack_size() > GCLARGESTACK) {
if (fsoc_count_ceil <= fsoc_count) {
if (rsoc_count_ceil <= rsoc_count) {
if ((fsoc_count<FSOC_LIMIT)&&(rsoc_count<RSOC_LIMIT)) {
fsoc_count_ceil++;
rsoc_count_ceil++;
return 1;
}
else return 0;
}
else {
if (fsoc_count<FSOC_LIMIT) {
fsoc_count_ceil++;
return 1;
}
else return 0;
}
}
else {
if (rsoc_count_ceil <= rsoc_count) {
if (rsoc_count<RSOC_LIMIT) {
rsoc_count_ceil++;
return 1;
}
else return 0;
}
else return 0;
}
}
else {
return 0;
}
}
void gc_update_ceils(void) {
int c;
/* Compute fsoc_count_ceil :
*/
if (fsocfl==NULL) {
if (fsoc_count >= fsoc_count_ceil) {
if (fsoc_count_ceil<FSOC_LIMIT) {
fsoc_count_ceil<<=1;
}
else {
c=fsoc_count+(fsoc_count/3);
if (fsoc_count_ceil < c)
fsoc_count_ceil=c;
}
}
}
else
if (fsoc_count_ceil < fsoc_count)
fsoc_count_ceil=fsoc_count;
/* Compute rsoc_count_ceil :
*/
if (rsocfl==NULL) {
if (rsoc_count>=rsoc_count_ceil) {
if (rsoc_count_ceil<RSOC_LIMIT) {
rsoc_count_ceil<<=1;
}
else {
c=rsoc_count+(rsoc_count/3);
if (rsoc_count_ceil < c)
rsoc_count_ceil=c;
}
}
}
else
if (rsoc_count_ceil < rsoc_count)
rsoc_count_ceil=rsoc_count;
}
static void add_to_gcmt(mch*c) {
mch**p;
if (gcmt_used==gcmt_max) {
gcmt_max<<=1;
gcmt=realloc(gcmt,(gcmt_max+1)*sizeof(void*));
}
for(p=gcmt+(gcmt_used++ -1);(p>=gcmt)&&(*p>c);p--)
*(p+1)=*p;
*(p+1)=c;
}
fsoc*new_fsoc(void) {
if(fsocfl!=NULL){
fsoc*r=fsocfl;
fsocfl=fsocfl->next;
return r;
}
else {
mch*r=malloc(FSOC_SIZE);
mch**p;
gc_update_ceils();
fsoc_count++;
if (gcmt_used==gcmt_max) {
gcmt_max<<=1;
gcmt=realloc(gcmt,(gcmt_max+1)*sizeof(void*));
}
for (p=gcmt+(gcmt_used++ -1);(p>=gcmt)&&(*p>r);p--)
*(p+1)=*p;
*(p+1)=r;
return (fsoc*)r;
}
}
static char*rso_from_store(na_env*nae,int size) {
rsoh*r=(nae->store);
nae->store_left-=size;
if ((nae->store_left) > sizeof(rsoh)) {
r->header.size=size;
nae->store=((rsoh*)(((char*)(nae->store))+size));
}
else {
r->header.size=size+nae->store_left;
nae->store_left=0;
}
(r->header.magic_flag)=RSOH_UNMARKED;
((void)memset((r+1),0,r->header.size-sizeof(rsoh)));
return (char*)(r+1);
}
static void rsoc_sweep(rsoc*c) {
na_env*nae=c->nae;
rsoh*gp=(rsoh*)&(c->first_header);
rsoh*pp;
rsoh*eoc=((rsoh*)(((char*)c)+c->header.size));
c->free_list_of_large=NULL;
if (c->header.size > RSOC_SIZE) {
if (gp->header.magic_flag == RSOH_MARKED) {
gp->header.magic_flag=RSOH_UNMARKED;
c->next=nae->chunk_list;
nae->chunk_list=c;
}
else {
c->header.state_type=RSO_FREE_CHUNK;
}
return;
}
while (gp<eoc) {
while (gp->header.magic_flag == RSOH_MARKED) {
gp->header.magic_flag=RSOH_UNMARKED;
gp=((rsoh*)(((char*)gp)+gp->header.size));
if(gp>=eoc) {
c->next=nae->chunk_list;
nae->chunk_list=c;
return;
}
}
gp->header.magic_flag=RSOH_FREE;
pp=(rsoh*)(((char*)gp)+gp->header.size);
while ((pp<eoc)&&(pp->header.magic_flag != RSOH_MARKED)) {
pp->header.magic_flag=RSOH_FREE;
gp->header.size+=pp->header.size;
pp=((rsoh*)(((char*)pp)+pp->header.size));
}
if (gp->header.size >= RSOC_MIN_STORE) {
if (nae->store_left==0) {
nae->store_left=gp->header.size;
nae->store=gp;
nae->store_chunk=c;
}
else if (nae->store->header.size < gp->header.size) {
((fll_rsoh*)nae->store)->nextflol=nae->store_chunk->free_list_of_large;
nae->store_chunk->free_list_of_large=((fll_rsoh*)nae->store);
nae->store_left=gp->header.size;
nae->store=gp;
nae->store_chunk=c;
}
else {
((fll_rsoh*)gp)->nextflol=c->free_list_of_large;
c->free_list_of_large=((fll_rsoh*)gp);
}
}
gp=pp;
}
if (((rsoh*)(&c->first_header))->header.size >=
(c->header.size-sizeof(rsoc)+sizeof(rsoh))){
c->header.state_type=RSO_FREE_CHUNK;
nae->store_chunk=NULL;
nae->store_left=0;
}
else{
c->next=nae->chunk_list;
nae->chunk_list=c;
}
}
static rsoc MRSOC = {
{
RSOC_SIZE,
RSO_USED_CHUNK,
((void(*)(mch*,void*))gcna_align_mark),
((void(*)(mch*))rsoc_sweep)
},
NULL,
NULL,
NULL,
{
{
0,
RSOH_MARKED
}
}
};
static void rsoc_malloc(na_env*nae){
rsoc*r=malloc(RSOC_SIZE);
rsoc_count++;
*r=MRSOC;
r->nae=nae;
nae->store=(&(r->first_header));
nae->store_left=RSOC_SIZE-sizeof(rsoc)+sizeof(rsoh);
nae->store_chunk=r;
r->next=nae->chunk_list;
nae->chunk_list=r;
add_to_gcmt((mch*)r);
}
static rsoc* rsocfl_best_fit(int size) {
int best_size;
rsoc *pc,*best_pc,*best_c, *c;
if (rsocfl==NULL)
return NULL;
pc=NULL;
best_pc=NULL;
best_c=NULL;
c=rsocfl;
while ((NULL!=c)&&(NULL==best_c)){
if (c->header.size>=size){
best_c=c;
best_pc=pc;
best_size=c->header.size;
}
pc=c;
c=c->next;
}
if (NULL==c){
if (best_pc != NULL)
best_pc->next=best_c->next;
else if (best_c==rsocfl)
rsocfl=best_c->next;
return best_c;
}
do{
if ((c->header.size>=size)&&(c->header.size<best_size)){
best_c=c;
best_pc=pc;
best_size=c->header.size;
}
pc=c;
c=c->next;
} while(c!=NULL);
if (NULL==best_pc) {
rsocfl = best_c->next;
}
else {
best_pc->next=best_c->next;
}
return best_c;
}
static int get_store_in(rsoc*c,int size) {
na_env*nae=c->nae;
fll_rsoh*pf=NULL;
fll_rsoh*f=c->free_list_of_large;
while (f != NULL) {
if (f->rsoh_field.size >= size) {
nae->store_left=f->rsoh_field.size;
nae->store=(rsoh*)f;
nae->store_chunk=c;
if (pf == NULL) {
c->free_list_of_large=f->nextflol;
}
else {
pf->nextflol=f->nextflol;
}
return 1;
}
pf = f;
f = f->nextflol;
}
return 0;
}
char*new_na_from_chunk_list(na_env*nae,int size) {
rsoc*c=nae->chunk_list;
int csize;
while (c != NULL) {
if (get_store_in(c,size)) {
return rso_from_store(nae,size);
}
c = c->next;
}
csize=size+(sizeof(rsoc)-sizeof(rsoh));
c=rsocfl_best_fit(csize);
if (c != NULL){
if ((c->header.size > RSOC_SIZE)
&&
(c->header.size-csize > RSOC_MIN_STORE*4)) {
int csize_left=c->header.size-csize;
if ((csize_left%sizeof(double))!=0) {
csize_left-=(csize_left%sizeof(double));
csize=c->header.size-csize_left;
}
c->header.size=csize_left;
c->next=rsocfl;
rsocfl=c;
c=(rsoc*)(((char*)c)+csize_left);
add_to_gcmt((mch*)c);
c->header.amfp=(void(*)(mch*,void*))gcna_align_mark;
c->header.swfp=(void(*)(mch*))rsoc_sweep;
}
else {
csize=c->header.size;
}
c->header.size=csize;
c->header.state_type=RSO_USED_CHUNK;
c->free_list_of_large=NULL;
c->nae=nae;
nae->store=(&(c->first_header));
nae->store_left=csize-sizeof(rsoc)+sizeof(rsoh);
nae->store_chunk=c;
c->next=nae->chunk_list;
nae->chunk_list=c;
return rso_from_store(nae,size);
}
return NULL;
}
char*new_na(na_env*nae,int size) {
if (nae->store_left>0) {
nae->store->header.size=nae->store_left;
nae->store->header.magic_flag=RSOH_FREE;
if (nae->store_left >= RSOC_MIN_STORE) {
((fll_rsoh*)(nae->store))->nextflol=nae->store_chunk->free_list_of_large;
nae->store_chunk->free_list_of_large=((fll_rsoh*)nae->store);
}
nae->store_left=0;
}
if ((nae->store_chunk!=NULL)&&(get_store_in(nae->store_chunk,size))) {
return rso_from_store(nae,size);
}
{
char*r=new_na_from_chunk_list(nae,size);
if (r!=NULL)
return r;
}
if (rsoc_count<rsoc_count_ceil) {
if((size+sizeof(rsoc)-sizeof(rsoh))>RSOC_SIZE){
rsoc*c=malloc(size+sizeof(rsoc)-sizeof(rsoh));
rsoh*r=(&(c->first_header));
rsoc_count++;
*c=MRSOC;
c->header.size=size+sizeof(rsoc)-sizeof(rsoh);
c->nae=nae;
c->next=nae->chunk_list;
nae->chunk_list=c;
add_to_gcmt((mch*)c);
r->header.size=size;
(r->header.magic_flag)=RSOH_UNMARKED;
((void)memset((r+1),0,size-sizeof(rsoh)));
return (char*)(r+1);
}
else {
rsoc_malloc(nae);
return rso_from_store(nae,size);
}
}
gc_start();
if (size<=(nae->store_left)) {
return rso_from_store(nae,size);
}
{
char*r=new_na_from_chunk_list(nae,size);
if (r!=NULL) {
return r;
}
}
if((size+sizeof(rsoc)-sizeof(rsoh))>RSOC_SIZE){
rsoc*c=malloc(size+sizeof(rsoc)-sizeof(rsoh));
rsoh*r=(&(c->first_header));
rsoc_count++;
*c=MRSOC;
c->header.size=size+sizeof(rsoc)-sizeof(rsoh);
c->nae=nae;
c->next=nae->chunk_list;
nae->chunk_list=c;
add_to_gcmt((mch*)c);
r->header.size=size;
(r->header.magic_flag)=RSOH_UNMARKED;
((void)memset((r+1),0,size-sizeof(rsoh)));
gc_update_ceils();
return (char*)(r+1);
}
else {
rsoc_malloc(nae);
gc_update_ceils();
return rso_from_store(nae,size);
}
}
void gcna_align_mark(rsoc*c,void*o) {
na_env* nae = c->nae;
fll_rsoh* f;
fll_rsoh* pf;
char* b = (char*)&(c->first_header);
if (((char*)o) > (((char*)c)+c->header.size)) {
return;
}
if (((((char*)o)-((char*)c))%sizeof(int)) != 0) {
return;
}
if ((((rsoh*)o)-1)->header.magic_flag != RSOH_UNMARKED) {
return;
}
if (((char*)o) < ((char*)(c+1))) {
return;
}
if (c->header.size > RSOC_SIZE) {
if (o == (c+1)) {
nae->gc_mark(o);
}
return;
}
pf=NULL;
f=c->free_list_of_large;
while ((f != NULL) && (f < ((fll_rsoh*)o))) {
pf=f;
f=f->nextflol;
}
if (pf == NULL) {
pf=(fll_rsoh*)b;
}
while ((((rsoh*)pf)+1) < (rsoh*)o) {
pf = ((fll_rsoh*)(((char*)pf)+pf->rsoh_field.size));
}
{void* tmp = (((rsoh*)pf)+1);
if (o == tmp) {
nae->gc_mark(o);
}
}
}
int rsocfl_count(void) {
int r=0;
rsoc*p=rsocfl;
while (p!=NULL) {
r++;
p=p->next;
}
return r;
}
int fsocfl_count(void) {
int r=0;
fsoc*p=fsocfl;
while (p!=NULL) {
r++;
p=p->next;
}
return r;
}
void rsocfl_info(void) {
int max=0;
rsoc*p=rsocfl;
printf(" rsocfl count = %d\n",rsocfl_count());
if (p!=NULL) {
printf(" rsocfl = [");
p=rsocfl;
while (p!=NULL) {
printf("%d",p->header.size);
if(max < p->header.size) max=p->header.size;
p=p->next;
if (p!=NULL)printf(",");
}
printf("]\n");
printf(" rsocfl max = %d\n",max);
}
}
unsigned int gc_start_count=0;
T6 r2in_range(se_dump_stack*caller,T2 C,T2 a1,T2 a2){
T6 R=0;
void**locals[3];
se_dump_stack ds;
ds.fd=&f2in_range;
ds.current=((void**)&C);
ds.l=59;
ds.c=4;
ds.f=375;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,62,3,375);
R=((C)>=(a1))&&((C)<=(a2));
if(f2in_range.assertion_flag){
f2in_range.assertion_flag=0;
se_trace(&ds,64,10,375);
ac_ens((R)==(r6_px_and(&ds,(C)>=(a1),(C)<=(a2))));
f2in_range.assertion_flag=1;
}
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f2in_range={"in_range of COMPARABLE",1,3,"%E2%lower%E2%upper%E2%Result%E6%",1};
void r2append_in(se_dump_stack*caller,T2 C,T0* a1){
T2 _i=0;
T2 _val=0;
void**locals[3];
se_dump_stack ds;
ds.fd=&f2append_in;
ds.current=((void**)&C);
ds.l=183;
ds.c=4;
ds.f=2;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&_i;
locals[2]=(void**)&_val;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f2append_in.assertion_flag){
f2append_in.assertion_flag=0;
se_trace(&ds,188,7,2);
ac_req((a1)!=((void*)(NULL)));
f2append_in.assertion_flag=1;
}
/*[IF*/
if((se_trace(&ds,192,14,2),(C)==(0))){
se_trace(&ds,193,10,2);
r7extend(&ds,se_i7(&ds,((T7*)ci(7,a1,193,6,2))),'0');
}
else{
/*[IF*/
if((se_trace(&ds,195,17,2),(C)>(0))){
se_trace(&ds,197,5,2);
_i=((se_i7(&ds,((T7*)ci(7,a1,197,10,2))))->_count/*8*/)+(1);
se_trace(&ds,198,5,2);
_val=C;
while (!((se_trace(&ds,200,9,2),(_val)==(0)))) {
se_trace(&ds,202,9,2);
r7extend(&ds,se_i7(&ds,((T7*)ci(7,a1,202,5,2))),r2digit(&ds,(_val)%(10)));
se_trace(&ds,203,5,2);
_val=(_val)/(10);
}
}
else{
se_trace(&ds,206,13,2);
r7extend(&ds,se_i7(&ds,((T7*)ci(7,a1,206,9,2))),'\55');
se_trace(&ds,208,5,2);
_i=((se_i7(&ds,((T7*)ci(7,a1,208,10,2))))->_count/*8*/)+(1);
se_trace(&ds,209,5,2);
_val=C;
while (!((se_trace(&ds,211,9,2),(_val)==(0)))) {
se_trace(&ds,213,9,2);
r7extend(&ds,se_i7(&ds,((T7*)ci(7,a1,213,5,2))),r2digit(&ds,-((_val)%(10))));
se_trace(&ds,214,5,2);
_val=(_val)/(10);
}
}
/*FI]*/
se_trace(&ds,218,9,2);
_val=(se_i7(&ds,((T7*)ci(7,a1,218,16,2))))->_count/*8*/;
while (!((se_trace(&ds,220,11,2),(_i)>=(_val)))) {
se_trace(&ds,222,13,2);
r7swap(&ds,se_i7(&ds,((T7*)ci(7,a1,222,9,2))),_i,_val);
se_trace(&ds,223,9,2);
_val=(_val)-(1);
se_trace(&ds,224,9,2);
_i=(_i)+(1);
}
}
/*FI]*/
se_dst=caller;/*unlink*/
}
se_frame_descriptor f2append_in={"append_in of INTEGER",1,3,"%E2%str%R7%i%E2%val%E2%",1};
T3 r2digit(se_dump_stack*caller,T2 C){
T3 R=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f2digit;
ds.current=((void**)&C);
ds.l=267;
ds.c=4;
ds.f=2;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f2digit.assertion_flag){
f2digit.assertion_flag=0;
se_trace(&ds,270,3,2);
ac_req(r2in_range(&ds,C,0,9));
f2digit.assertion_flag=1;
}
se_trace(&ds,272,3,2);
R=((T3)((C)+(((unsigned char)'0'))));
if(f2digit.assertion_flag){
f2digit.assertion_flag=0;
se_trace(&ds,274,18,2);
ac_ens(r7has(&ds,ms2_8350,R));
se_trace(&ds,275,16,2);
ac_ens((r3value(&ds,R))==(C));
f2digit.assertion_flag=1;
}
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f2digit={"digit of INTEGER",1,1,"%E2%Result%E3%",1};
/*No:INTEGER.item*/
T6 r2divisible(se_dump_stack*caller,T2 a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f2divisible;
ds.current=NULL;
ds.l=104;
ds.c=4;
ds.f=528;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
se_trace(&ds,106,3,528);
R=(a1)!=(0);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f2divisible={"divisible of INTEGER_REF",0,2,"other%E2%Result%E6%",1};
T6 r3_px_6061(se_dump_stack*caller,T3 C,T3 a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f3_px_6061;
ds.current=((void**)&C);
ds.l=46;
ds.c=4;
ds.f=3;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
se_trace(&ds,49,3,3);
R=(((unsigned char)C))<=(((unsigned char)a1));
if(f3_px_6061.assertion_flag){
f3_px_6061.assertion_flag=0;
se_trace(&ds,36,42,375);
ac_ens(r6_px_or(&ds,(R)==(r3_px_60(&ds,C,a1)),(C)==(a1)));
f3_px_6061.assertion_flag=1;
}
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f3_px_6061={"infix <= of CHARACTER",1,2,"%E3%other%E3%Result%E6%",1};
T6 r3_px_60(se_dump_stack*caller,T3 C,T3 a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f3_px_60;
ds.current=((void**)&C);
ds.l=40;
ds.c=4;
ds.f=3;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
se_trace(&ds,43,3,3);
R=(((unsigned char)C))<(((unsigned char)a1));
if(f3_px_60.assertion_flag){
f3_px_60.assertion_flag=0;
se_trace(&ds,26,22,375);
ac_ens((!(R))||(r6_ix_not(&ds,r3_px_60(&ds,a1,C))));
f3_px_60.assertion_flag=1;
}
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f3_px_60={"infix < of CHARACTER",1,2,"%E3%other%E3%Result%E6%",1};
T6 r3is_digit(se_dump_stack*caller,T3 C){
T6 R=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f3is_digit;
ds.current=((void**)&C);
ds.l=137;
ds.c=4;
ds.f=3;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
{int z1=C;
if(((48<=z1)&&(z1<=57))){
se_trace(&ds,143,6,3);
R=1;
}
}
if(f3is_digit.assertion_flag){
f3is_digit.assertion_flag=0;
se_trace(&ds,147,9,3);
ac_ens((!(R))||(r6_px_and(&ds,r3_px_6061(&ds,'0',C),r3_px_6061(&ds,C,'9'))));
f3is_digit.assertion_flag=1;
}
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f3is_digit={"is_digit of CHARACTER",1,1,"%E3%Result%E6%",1};
T2 r3value(se_dump_stack*caller,T3 C){
T2 R=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f3value;
ds.current=((void**)&C);
ds.l=69;
ds.c=4;
ds.f=3;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f3value.assertion_flag){
f3value.assertion_flag=0;
se_trace(&ds,72,3,3);
ac_req(r3is_digit(&ds,C));
f3value.assertion_flag=1;
}
se_trace(&ds,74,3,3);
R=(((unsigned char)C))-(48);
if(f3value.assertion_flag){
f3value.assertion_flag=0;
se_trace(&ds,76,15,3);
ac_ens(r6_px_and(&ds,(0)<=(R),(R)<=(9)));
se_trace(&ds,77,22,3);
ac_ens((R)==((((unsigned char)C))-(48)));
f3value.assertion_flag=1;
}
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f3value={"value of CHARACTER",1,1,"%E3%Result%E2%",1};
T6 r8is_null(se_dump_stack*caller,T8 C){
T6 R=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f8is_null;
ds.current=((void**)&C);
ds.l=28;
ds.c=4;
ds.f=8;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,31,3,8);
R=r6_ix_not(&ds,(NULL!=C));
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f8is_null={"is_null of POINTER",1,1,"%E8%Result%E6%",1};
T6 r6_px_or(se_dump_stack*caller,T6 C,T6 a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f6_px_or;
ds.current=((void**)&C);
ds.l=48;
ds.c=4;
ds.f=6;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
se_trace(&ds,55,3,6);
R=(C)||(a1);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f6_px_or={"infix or of BOOLEAN",1,2,"%E6%other%E6%Result%E6%",1};
T6 r6_ix_not(se_dump_stack*caller,T6 C){
T6 R=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f6_ix_not;
ds.current=((void**)&C);
ds.l=73;
ds.c=12;
ds.f=6;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
/*[IF*/
if(C){
}
else{
se_trace(&ds,78,6,6);
R=1;
}
/*FI]*/
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f6_ix_not={"prefix not of BOOLEAN",1,1,"%E6%Result%E6%",1};
T6 r6_px_and(se_dump_stack*caller,T6 C,T6 a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f6_px_and;
ds.current=((void**)&C);
ds.l=28;
ds.c=4;
ds.f=6;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
se_trace(&ds,35,3,6);
R=(C)&&(a1);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f6_px_and={"infix and of BOOLEAN",1,2,"%E6%other%E6%Result%E6%",1};
T2135 r2135realloc(se_dump_stack*caller,T2135 C,T2 a1,T2 a2){
T2135 R=NULL;
void**locals[3];
se_dump_stack ds;
ds.fd=&f2135realloc;
ds.current=((void**)&C);
ds.l=52;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f2135realloc.assertion_flag){
f2135realloc.assertion_flag=0;
se_trace(&ds,61,3,842);
ac_req(r2135is_not_null(&ds,C));
se_trace(&ds,62,15,842);
ac_req((a1)<(a2));
f2135realloc.assertion_flag=1;
}
se_trace(&ds,64,3,842);
R=new2135(a2);
se_trace(&ds,65,10,842);
r2135copy_from(&ds,R,C,(a1)-(1));
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f2135realloc={"realloc of NATIVE_ARRAY",1,3,"%E2135%old_nb_elts%E2%new_nb_elts%E2%Result%E2135%",1};
T6 r2135is_not_null(se_dump_stack*caller,T2135 C){
T6 R=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f2135is_not_null;
ds.current=((void**)&C);
ds.l=467;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,469,3,842);
R=(NULL!=((void*)C));
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f2135is_not_null={"is_not_null of NATIVE_ARRAY",1,1,"%E2135%Result%E6%",1};
void r2135set_all_with(se_dump_stack*caller,T2135 C,T0* a1,T2 a2){
T2 _i=0;
void**locals[3];
se_dump_stack ds;
ds.fd=&f2135set_all_with;
ds.current=((void**)&C);
ds.l=285;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&_i;
se_dst=&ds;/*link*/
se_trace(&ds,292,6,842);
_i=a2;
while (!((se_trace(&ds,294,8,842),(_i)<(0)))) {
se_trace(&ds,296,6,842);
(C)[_i]=(a1);
se_trace(&ds,297,6,842);
_i=(_i)-(1);
}
se_dst=caller;/*unlink*/
}
se_frame_descriptor f2135set_all_with={"set_all_with of NATIVE_ARRAY",1,3,"%E2135%v%R7%upper%E2%i%E2%",1};
T6 r2135equal_like(se_dump_stack*caller,T0* a1,T0* a2){
T6 R=0;
void**locals[3];
se_dump_stack ds;
ds.fd=&f2135equal_like;
ds.current=NULL;
ds.l=488;
ds.c=11;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&R;
se_dst=&ds;/*link*/
/*[IF*/
/*AF*//*AF*/if((se_trace(&ds,497,13,842),(a1)==((void*)(a2)))){
se_trace(&ds,498,6,842);
R=1;
}
else if((se_trace(&ds,499,20,842),((a1)==((void*)(NULL)))||((a2)==((void*)(NULL))))){
}
else{
se_trace(&ds,501,6,842);
R=r7is_equal(&ds,se_i7(&ds,((T7*)ci(7,a1,501,16,842))),a2);
}
/*FI]*/
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f2135equal_like={"equal_like of NATIVE_ARRAY",0,3,"e1%R7%e2%R7%Result%E6%",1};
void r2135copy_from(se_dump_stack*caller,T2135 C,T2135 a1,T2 a2){
T2 _i=0;
void**locals[3];
se_dump_stack ds;
ds.fd=&f2135copy_from;
ds.current=((void**)&C);
ds.l=338;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&_i;
se_dst=&ds;/*link*/
se_trace(&ds,344,6,842);
_i=a2;
while (!((se_trace(&ds,346,8,842),(_i)<(0)))) {
se_trace(&ds,348,6,842);
(C)[_i]=((a1)[_i]);
se_trace(&ds,349,6,842);
_i=(_i)-(1);
}
se_dst=caller;/*unlink*/
}
se_frame_descriptor f2135copy_from={"copy_from of NATIVE_ARRAY",1,3,"%E2135%model%E2135%upper%E2%i%E2%",1};
T6 r2135all_cleared(se_dump_stack*caller,T2135 C,T2 a1){
T6 R=0;
T0* _model=NULL;
T2 _i=0;
void**locals[4];
se_dump_stack ds;
ds.fd=&f2135all_cleared;
ds.current=((void**)&C);
ds.l=423;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
locals[2]=(void**)&_model;
locals[3]=(void**)&_i;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f2135all_cleared.assertion_flag){
f2135all_cleared.assertion_flag=0;
se_trace(&ds,427,9,842);
ac_req((a1)>=(-(1)));
f2135all_cleared.assertion_flag=1;
}
se_trace(&ds,433,6,842);
R=1;
se_trace(&ds,434,6,842);
_i=a1;
while (!((se_trace(&ds,436,12,842),((_i)<(0))||(r6_ix_not(&ds,R))))) {
se_trace(&ds,438,6,842);
R=(_model)==((void*)((C)[_i]));
se_trace(&ds,439,6,842);
_i=(_i)-(1);
}
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f2135all_cleared={"all_cleared of NATIVE_ARRAY",1,4,"%E2135%upper%E2%Result%E6%model%R7%i%E2%",1};
T6 r2135memcmp(se_dump_stack*caller,T2135 C,T2135 a1,T2 a2){
T6 R=0;
T2 _i=0;
void**locals[4];
se_dump_stack ds;
ds.fd=&f2135memcmp;
ds.current=((void**)&C);
ds.l=70;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&R;
locals[3]=(void**)&_i;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f2135memcmp.assertion_flag){
f2135memcmp.assertion_flag=0;
se_trace(&ds,76,16,842);
ac_req((!((a2)>(0)))||(r2135is_not_null(&ds,a1)));
f2135memcmp.assertion_flag=1;
}
se_trace(&ds,81,6,842);
R=1;
se_trace(&ds,82,6,842);
_i=(a2)-(1);
while (!((se_trace(&ds,84,12,842),((_i)<(0))||(r6_ix_not(&ds,R))))) {
se_trace(&ds,86,6,842);
R=r2135equal_like(&ds,(C)[_i],(a1)[_i]);
se_trace(&ds,87,6,842);
_i=(_i)-(1);
}
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f2135memcmp={"memcmp of NATIVE_ARRAY",1,4,"%E2135%other%E2135%capacity%E2%Result%E6%i%E2%",1};
T2 r2135index_of(se_dump_stack*caller,T2135 C,T0* a1,T2 a2){
T2 R=0;
void**locals[3];
se_dump_stack ds;
ds.fd=&f2135index_of;
ds.current=((void**)&C);
ds.l=111;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f2135index_of.assertion_flag){
f2135index_of.assertion_flag=0;
se_trace(&ds,116,9,842);
ac_req((a2)>=(-(1)));
f2135index_of.assertion_flag=1;
}
while (!((se_trace(&ds,120,21,842),((R)>(a2))||(r2135equal_like(&ds,a1,(C)[R]))))) {
se_trace(&ds,122,6,842);
R=(R)+(1);
}
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f2135index_of={"index_of of NATIVE_ARRAY",1,3,"%E2135%element%R7%upper%E2%Result%E2%",1};
T6 r9fast_memcmp(se_dump_stack*caller,T9 C,T9 a1,T2 a2){
T6 R=0;
T2 _i=0;
void**locals[4];
se_dump_stack ds;
ds.fd=&f9fast_memcmp;
ds.current=((void**)&C);
ds.l=91;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&R;
locals[3]=(void**)&_i;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f9fast_memcmp.assertion_flag){
f9fast_memcmp.assertion_flag=0;
se_trace(&ds,94,16,842);
ac_req((!((a2)>(0)))||(r9is_not_null(&ds,a1)));
f9fast_memcmp.assertion_flag=1;
}
se_trace(&ds,99,6,842);
R=1;
se_trace(&ds,100,6,842);
_i=(a2)-(1);
while (!((se_trace(&ds,102,12,842),((_i)<(0))||(r6_ix_not(&ds,R))))) {
se_trace(&ds,104,6,842);
R=((C)[_i])==((a1)[_i]);
se_trace(&ds,105,6,842);
_i=(_i)-(1);
}
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f9fast_memcmp={"fast_memcmp of NATIVE_ARRAY",1,4,"%E9%other%E9%capacity%E2%Result%E6%i%E2%",1};
T9 r9realloc(se_dump_stack*caller,T9 C,T2 a1,T2 a2){
T9 R=NULL;
void**locals[3];
se_dump_stack ds;
ds.fd=&f9realloc;
ds.current=((void**)&C);
ds.l=52;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f9realloc.assertion_flag){
f9realloc.assertion_flag=0;
se_trace(&ds,61,3,842);
ac_req(r9is_not_null(&ds,C));
se_trace(&ds,62,15,842);
ac_req((a1)<(a2));
f9realloc.assertion_flag=1;
}
se_trace(&ds,64,3,842);
R=new9(a2);
se_trace(&ds,65,10,842);
r9copy_from(&ds,R,C,(a1)-(1));
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f9realloc={"realloc of NATIVE_ARRAY",1,3,"%E9%old_nb_elts%E2%new_nb_elts%E2%Result%E9%",1};
T6 r9is_not_null(se_dump_stack*caller,T9 C){
T6 R=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f9is_not_null;
ds.current=((void**)&C);
ds.l=467;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,469,3,842);
R=(NULL!=((void*)C));
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f9is_not_null={"is_not_null of NATIVE_ARRAY",1,1,"%E9%Result%E6%",1};
T6 r9fast_has(se_dump_stack*caller,T9 C,T3 a1,T2 a2){
T6 R=0;
T2 _i=0;
void**locals[4];
se_dump_stack ds;
ds.fd=&f9fast_has;
ds.current=((void**)&C);
ds.l=157;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&R;
locals[3]=(void**)&_i;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f9fast_has.assertion_flag){
f9fast_has.assertion_flag=0;
se_trace(&ds,161,9,842);
ac_req((a2)>=(-(1)));
f9fast_has.assertion_flag=1;
}
se_trace(&ds,166,6,842);
_i=a2;
while (!((se_trace(&ds,168,13,842),(R)||((_i)<(0))))) {
se_trace(&ds,170,6,842);
R=(a1)==((C)[_i]);
se_trace(&ds,171,6,842);
_i=(_i)-(1);
}
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f9fast_has={"fast_has of NATIVE_ARRAY",1,4,"%E9%element%E3%upper%E2%Result%E6%i%E2%",1};
void r9copy_from(se_dump_stack*caller,T9 C,T9 a1,T2 a2){
T2 _i=0;
void**locals[3];
se_dump_stack ds;
ds.fd=&f9copy_from;
ds.current=((void**)&C);
ds.l=338;
ds.c=4;
ds.f=842;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&_i;
se_dst=&ds;/*link*/
se_trace(&ds,344,6,842);
_i=a2;
while (!((se_trace(&ds,346,8,842),(_i)<(0)))) {
se_trace(&ds,348,6,842);
(C)[_i]=((a1)[_i]);
se_trace(&ds,349,6,842);
_i=(_i)-(1);
}
se_dst=caller;/*unlink*/
}
se_frame_descriptor f9copy_from={"copy_from of NATIVE_ARRAY",1,3,"%E9%model%E9%upper%E2%i%E2%",1};
T6 r7standard_is_equal(se_dump_stack*caller,T7* C,T0* a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f7standard_is_equal;
ds.current=((void**)&C);
ds.l=120;
ds.c=11;
ds.f=1;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f7standard_is_equal.assertion_flag){
f7standard_is_equal.assertion_flag=0;
se_trace(&ds,123,9,1);
ac_req((a1)!=((void*)(NULL)));
f7standard_is_equal.assertion_flag=1;
}
R=((C->id==a1->id)?!memcmp(C,a1,sizeof(*C)):0);if(f7standard_is_equal.assertion_flag){
f7standard_is_equal.assertion_flag=0;
se_trace(&ds,126,21,1);
ac_ens((!(R))||(r7standard_is_equal(&ds,se_i7(&ds,((T7*)ci(7,a1,126,29,1))),(T0*)C)));
f7standard_is_equal.assertion_flag=1;
}
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f7standard_is_equal={"standard_is_equal of GENERAL",1,2,"%R7%other%R7%Result%E6%",1};
T8 r7to_external(se_dump_stack*caller,T7* C){
T8 R=0;
T2 o7_1163_15=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f7to_external;
ds.current=((void**)&C);
ds.l=1146;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
locals[1]=(void**)&o7_1163_15;
se_dst=&ds;/*link*/
o7_1163_15=(C)->_count/*8*/;
/*[IF*/
if((se_trace(&ds,1152,15,7),((C)->_capacity/*12*/)>((C)->_count/*8*/))){
se_trace(&ds,1153,6,7);
C->_count=((C)->_count/*8*/)+(1);
/*[IF*/
if((se_trace(&ds,1154,21,7),(r7item(&ds,C,(C)->_count/*8*/))!=('\0'))){
se_trace(&ds,1155,9,7);
r7put(&ds,C,'\0',(C)->_count/*8*/);
}
/*FI]*/
}
else{
se_trace(&ds,1158,6,7);
r7extend(&ds,C,'\0');
}
/*FI]*/
se_trace(&ds,1160,3,7);
C->_count=((C)->_count/*8*/)-(1);
se_trace(&ds,1161,3,7);
R=((void*)(C)->_storage/*4*/);
if(f7to_external.assertion_flag){
f7to_external.assertion_flag=0;
se_trace(&ds,1163,9,7);
ac_ens(((C)->_count/*8*/)==(o7_1163_15));
se_trace(&ds,1164,10,7);
ac_ens((NULL!=R));
f7to_external.assertion_flag=1;
}
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f7to_external={"to_external of STRING",1,2,"%R7%Result%E8%old l1163c15STRING%E2%",1};
void r7from_external(se_dump_stack*caller,T7* C,T8 a1){
void**locals[1];
se_dump_stack ds;
ds.fd=&f7from_external;
ds.current=((void**)&C);
ds.l=1167;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f7from_external.assertion_flag){
f7from_external.assertion_flag=0;
se_trace(&ds,1175,5,7);
ac_req((NULL!=a1));
f7from_external.assertion_flag=1;
}
se_trace(&ds,1178,6,7);
C->_storage=a1;
se_trace(&ds,1179,6,7);
C->_count=0;
while (!((se_trace(&ds,1181,26,7),(((C)->_storage/*4*/)[(C)->_count/*8*/])==('\0')))) {
se_trace(&ds,1183,6,7);
C->_count=((C)->_count/*8*/)+(1);
}
se_trace(&ds,1185,3,7);
C->_capacity=((C)->_count/*8*/)+(1);
if(f7from_external.assertion_flag){
f7from_external.assertion_flag=0;
se_trace(&ds,1187,12,7);
ac_ens(((C)->_capacity/*12*/)==(((C)->_count/*8*/)+(1)));
se_trace(&ds,1188,5,7);
ac_ens((a1)==(r7to_external(&ds,C)));
f7from_external.assertion_flag=1;
}
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f7from_external={"from_external of STRING",1,1,"%R7%p%E8%",1};
T6 r7has(se_dump_stack*caller,T7* C,T3 a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f7has;
ds.current=((void**)&C);
ds.l=251;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,254,3,7);
R=r9fast_has(&ds,(C)->_storage/*4*/,a1,((C)->_count/*8*/)-(1));
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f7has={"has of STRING",1,2,"%R7%ch%E3%Result%E6%",1};
T6 r7is_equal(se_dump_stack*caller,T7* C,T0* a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f7is_equal;
ds.current=((void**)&C);
ds.l=184;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f7is_equal.assertion_flag){
f7is_equal.assertion_flag=0;
se_trace(&ds,95,25,1);
ac_req((a1)!=((void*)(NULL)));
f7is_equal.assertion_flag=1;
}
/*[IF*/
if((se_trace(&ds,187,14,7),(C)==((void*)(a1)))){
se_trace(&ds,188,6,7);
R=1;
}
else if((se_trace(&ds,189,16,7),((C)->_count/*8*/)==((se_i7(&ds,((T7*)ci(7,a1,189,18,7))))->_count/*8*/))){
se_trace(&ds,190,6,7);
R=r9fast_memcmp(&ds,(C)->_storage/*4*/,(se_i7(&ds,((T7*)ci(7,a1,190,36,7))))->_storage/*4*/,(C)->_count/*8*/);
}
/*FI]*/
if(f7is_equal.assertion_flag){
f7is_equal.assertion_flag=0;
se_trace(&ds,98,40,1);
ac_ens((!(r7standard_is_equal(&ds,C,a1)))||(R));
se_trace(&ds,99,21,1);
ac_ens((!(R))||(r7is_equal(&ds,se_i7(&ds,((T7*)ci(7,a1,99,29,1))),(T0*)C)));
f7is_equal.assertion_flag=1;
}
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f7is_equal={"is_equal of STRING",1,2,"%R7%other%R7%Result%E6%",1};
T3 r7item(se_dump_stack*caller,T7* C,T2 a1){
T3 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f7item;
ds.current=((void**)&C);
ds.l=81;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f7item.assertion_flag){
f7item.assertion_flag=0;
se_trace(&ds,84,3,7);
ac_req(r7valid_index(&ds,C,a1));
f7item.assertion_flag=1;
}
se_trace(&ds,86,3,7);
R=((C)->_storage/*4*/)[(a1)-(1)];
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f7item={"item of STRING",1,2,"%R7%index%E2%Result%E3%",1};
T6 r7valid_index(se_dump_stack*caller,T7* C,T2 a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f7valid_index;
ds.current=((void**)&C);
ds.l=89;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,92,3,7);
R=((1)<=(a1))&&((a1)<=((C)->_count/*8*/));
if(f7valid_index.assertion_flag){
f7valid_index.assertion_flag=0;
se_trace(&ds,94,10,7);
ac_ens((R)==(((1)<=(a1))&&((a1)<=((C)->_count/*8*/))));
f7valid_index.assertion_flag=1;
}
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f7valid_index={"valid_index of STRING",1,2,"%R7%index%E2%Result%E6%",1};
/*No:STRING.count*/
void r7make(se_dump_stack*caller,T7* C,T2 a1){
void**locals[1];
se_dump_stack ds;
ds.fd=&f7make;
ds.current=((void**)&C);
ds.l=42;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f7make.assertion_flag){
f7make.assertion_flag=0;
se_trace(&ds,46,19,7);
ac_req((a1)>=(0));
f7make.assertion_flag=1;
}
/*[IF*/
if((se_trace(&ds,48,22,7),(a1)>(0))){
/*[IF*/
if((se_trace(&ds,49,18,7),((C)->_capacity/*12*/)<(a1))){
se_trace(&ds,50,9,7);
C->_storage=new9(a1);
se_trace(&ds,51,9,7);
C->_capacity=a1;
}
/*FI]*/
}
/*FI]*/
se_trace(&ds,54,3,7);
C->_count=0;
if(f7make.assertion_flag){
f7make.assertion_flag=0;
se_trace(&ds,56,19,7);
ac_ens((a1)<=((C)->_capacity/*12*/));
se_trace(&ds,57,9,7);
ac_ens(((C)->_count/*8*/)==(0));
f7make.assertion_flag=1;
}
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f7make={"make of STRING",1,1,"%R7%needed_capacity%E2%",1};
void r7extend(se_dump_stack*caller,T7* C,T3 a1){
T2 _new_capacity=0;
T2 o7_628_19=0;
void**locals[3];
se_dump_stack ds;
ds.fd=&f7extend;
ds.current=((void**)&C);
ds.l=611;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&_new_capacity;
locals[2]=(void**)&o7_628_19;
se_dst=&ds;/*link*/
o7_628_19=(C)->_count/*8*/;
/*[IF*/
if((se_trace(&ds,616,15,7),((C)->_capacity/*12*/)>((C)->_count/*8*/))){
}
else if((se_trace(&ds,617,19,7),((C)->_capacity/*12*/)==(0))){
se_trace(&ds,618,6,7);
C->_capacity=32;
se_trace(&ds,619,6,7);
C->_storage=new9((C)->_capacity/*12*/);
}
else{
se_trace(&ds,621,6,7);
_new_capacity=(2)*((C)->_capacity/*12*/);
se_trace(&ds,622,6,7);
C->_storage=r9realloc(&ds,(C)->_storage/*4*/,(C)->_capacity/*12*/,_new_capacity);
se_trace(&ds,623,6,7);
C->_capacity=_new_capacity;
}
/*FI]*/
se_trace(&ds,625,3,7);
C->_count=((C)->_count/*8*/)+(1);
se_trace(&ds,626,3,7);
r7put(&ds,C,a1,(C)->_count/*8*/);
if(f7extend.assertion_flag){
f7extend.assertion_flag=0;
se_trace(&ds,628,9,7);
ac_ens(((C)->_count/*8*/)==((1)+(o7_628_19)));
se_trace(&ds,629,16,7);
ac_ens((r7item(&ds,C,(C)->_count/*8*/))==(a1));
f7extend.assertion_flag=1;
}
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f7extend={"extend (add_last of STRING)",1,3,"%R7%ch%E3%new_capacity%E2%old l628c19STRING%E2%",1};
void r7from_external_copy(se_dump_stack*caller,T7* C,T8 a1){
T9 _s=NULL;
void**locals[2];
se_dump_stack ds;
ds.fd=&f7from_external_copy;
ds.current=((void**)&C);
ds.l=1191;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&_s;
se_dst=&ds;/*link*/
se_trace(&ds,1200,3,7);
r7from_external(&ds,C,a1);
se_trace(&ds,1201,3,7);
_s=new9((C)->_capacity/*12*/);
se_trace(&ds,1202,5,7);
r9copy_from(&ds,_s,(C)->_storage/*4*/,(C)->_capacity/*12*/);
se_trace(&ds,1203,3,7);
C->_storage=_s;
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f7from_external_copy={"from_external_copy of STRING",1,2,"%R7%p%E8%s%E9%",1};
void r7clear(se_dump_stack*caller,T7* C){
se_dump_stack ds;
ds.fd=&f7clear;
ds.current=((void**)&C);
ds.l=404;
ds.c=4;
ds.f=7;
ds.caller=caller;
se_dst=&ds;/*link*/
se_trace(&ds,408,3,7);
C->_count=0;
if(f7clear.assertion_flag){
f7clear.assertion_flag=0;
se_trace(&ds,410,9,7);
ac_ens(((C)->_count/*8*/)==(0));
f7clear.assertion_flag=1;
}
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f7clear={"clear of STRING",1,0,"%R7%",1};
void r7swap(se_dump_stack*caller,T7* C,T2 a1,T2 a2){
T3 _tmp=0;
T3 o7_524_18=0;
T3 o7_525_18=0;
void**locals[5];
se_dump_stack ds;
ds.fd=&f7swap;
ds.current=((void**)&C);
ds.l=513;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&_tmp;
locals[3]=(void**)&o7_524_18;
locals[4]=(void**)&o7_525_18;
se_dst=&ds;/*link*/
o7_524_18=r7item(&ds,C,a2);
o7_525_18=r7item(&ds,C,a1);
se_require_uppermost_flag=1;
if(f7swap.assertion_flag){
f7swap.assertion_flag=0;
se_trace(&ds,515,3,7);
ac_req(r7valid_index(&ds,C,a1));
se_trace(&ds,516,3,7);
ac_req(r7valid_index(&ds,C,a2));
f7swap.assertion_flag=1;
}
se_trace(&ds,520,3,7);
_tmp=r7item(&ds,C,a1);
se_trace(&ds,521,3,7);
r7put(&ds,C,r7item(&ds,C,a2),a1);
se_trace(&ds,522,3,7);
r7put(&ds,C,_tmp,a2);
if(f7swap.assertion_flag){
f7swap.assertion_flag=0;
se_trace(&ds,524,12,7);
ac_ens((r7item(&ds,C,a1))==(o7_524_18));
se_trace(&ds,525,12,7);
ac_ens((r7item(&ds,C,a2))==(o7_525_18));
f7swap.assertion_flag=1;
}
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f7swap={"swap of STRING",1,5,"%R7%i1%E2%i2%E2%tmp%E3%old l524c18STRING%E3%old l525c18STRING%E3%",1};
T6 r7empty(se_dump_stack*caller,T7* C){
T6 R=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f7empty;
ds.current=((void**)&C);
ds.l=75;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,78,3,7);
R=((C)->_count/*8*/)==(0);
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f7empty={"empty of STRING",1,1,"%R7%Result%E6%",1};
/*No:STRING.capacity*/
void r7put(se_dump_stack*caller,T7* C,T3 a1,T2 a2){
void**locals[2];
se_dump_stack ds;
ds.fd=&f7put;
ds.current=((void**)&C);
ds.l=503;
ds.c=4;
ds.f=7;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f7put.assertion_flag){
f7put.assertion_flag=0;
se_trace(&ds,506,3,7);
ac_req(r7valid_index(&ds,C,a2));
f7put.assertion_flag=1;
}
se_trace(&ds,508,11,7);
((C)->_storage/*4*/)[(a2)-(1)]=(a1);
if(f7put.assertion_flag){
f7put.assertion_flag=0;
se_trace(&ds,510,16,7);
ac_ens((r7item(&ds,C,a2))==(a1));
f7put.assertion_flag=1;
}
if(se_rci(C))se_i7(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f7put={"put of STRING",1,2,"%R7%ch%E3%index%E2%",1};
/*No:STRING.storage*/
se_frame_descriptor se_ifd7={"Class invariant of STRING",1,0,"%R7%",1};
T7*se_i7(se_dump_stack*caller,T7*C){
se_dump_stack ds;
ds.fd=&se_ifd7;
ds.current=((void**)&C);
ds.l=0;
ds.c=0;
ds.f=0;
ds.caller=caller;
se_dst=&ds;
if(ds.fd->assertion_flag){
ds.fd->assertion_flag=0;
se_trace(&ds,1256,6,7);
ac_inv((0)<=((C)->_count/*8*/));
se_trace(&ds,1258,10,7);
ac_inv(((C)->_count/*8*/)<=((C)->_capacity/*12*/));
se_trace(&ds,1260,17,7);
ac_inv((!(((C)->_capacity/*12*/)>(0)))||(r9is_not_null(&ds,(C)->_storage/*4*/)));
ds.fd->assertion_flag=1;
}
se_dst=caller;
return C;
}
void r1886with_capacity(se_dump_stack*caller,T1886* C,T2 a1){
void**locals[1];
se_dump_stack ds;
ds.fd=&f1886with_capacity;
ds.current=((void**)&C);
ds.l=58;
ds.c=4;
ds.f=674;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
se_dst=&ds;/*link*/
/*[IF*/
if((se_trace(&ds,61,15,674),((C)->_capacity/*8*/)<(a1))){
se_trace(&ds,62,6,674);
C->_storage=new2135(a1);
se_trace(&ds,63,6,674);
C->_capacity=a1;
}
/*FI]*/
se_trace(&ds,65,3,674);
C->_upper=-(1);
if(f1886with_capacity.assertion_flag){
f1886with_capacity.assertion_flag=0;
se_trace(&ds,67,12,674);
ac_ens(((C)->_capacity/*8*/)>=(a1));
se_trace(&ds,68,3,674);
ac_ens(r1886empty(&ds,C));
f1886with_capacity.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f1886with_capacity={"with_capacity of FIXED_ARRAY",1,1,"%R1886%needed_capacity%E2%",1};
T6 r1886standard_is_equal(se_dump_stack*caller,T1886* C,T0* a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f1886standard_is_equal;
ds.current=((void**)&C);
ds.l=120;
ds.c=11;
ds.f=1;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f1886standard_is_equal.assertion_flag){
f1886standard_is_equal.assertion_flag=0;
se_trace(&ds,123,9,1);
ac_req((a1)!=((void*)(NULL)));
f1886standard_is_equal.assertion_flag=1;
}
R=((C->id==a1->id)?!memcmp(C,a1,sizeof(*C)):0);if(f1886standard_is_equal.assertion_flag){
f1886standard_is_equal.assertion_flag=0;
se_trace(&ds,126,21,1);
ac_ens((!(R))||(r1886standard_is_equal(&ds,se_i1886(&ds,((T1886*)ci(1886,a1,126,29,1))),(T0*)C)));
f1886standard_is_equal.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f1886standard_is_equal={"standard_is_equal of GENERAL",1,2,"%R1886%other%R1886%Result%E6%",1};
T6 r1886has(se_dump_stack*caller,T1886* C,T0* a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f1886has;
ds.current=((void**)&C);
ds.l=265;
ds.c=4;
ds.f=592;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,269,3,592);
R=r1886valid_index(&ds,C,r1886index_of(&ds,C,a1));
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f1886has={"has of COLLECTION",1,2,"%R1886%x%R7%Result%E6%",1};
void r1886clear_all(se_dump_stack*caller,T1886* C){
T0* _value=NULL;
T2 o592_158_15=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f1886clear_all;
ds.current=((void**)&C);
ds.l=150;
ds.c=4;
ds.f=592;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&_value;
locals[1]=(void**)&o592_158_15;
se_dst=&ds;/*link*/
o592_158_15=r1886count(&ds,C);
se_trace(&ds,156,3,592);
r1886set_all_with(&ds,C,_value);
if(f1886clear_all.assertion_flag){
f1886clear_all.assertion_flag=0;
se_trace(&ds,158,9,592);
ac_ens((r1886count(&ds,C))==(o592_158_15));
se_trace(&ds,159,3,592);
ac_ens(r1886all_cleared(&ds,C));
f1886clear_all.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f1886clear_all={"clear_all of COLLECTION",1,2,"%R1886%value%R7%old l158c15COLLECTION%E2%",1};
void r1886add_last(se_dump_stack*caller,T1886* C,T0* a1){
T2 _new_capacity=0;
T2 o592_180_19=0;
T2 o592_181_15=0;
T2 o592_182_19=0;
void**locals[5];
se_dump_stack ds;
ds.fd=&f1886add_last;
ds.current=((void**)&C);
ds.l=158;
ds.c=4;
ds.f=674;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&_new_capacity;
locals[2]=(void**)&o592_180_19;
locals[3]=(void**)&o592_181_15;
locals[4]=(void**)&o592_182_19;
se_dst=&ds;/*link*/
o592_180_19=r1886count(&ds,C);
o592_181_15=0;
o592_182_19=(C)->_upper/*12*/;
/*[IF*/
if((se_trace(&ds,162,16,674),(((C)->_upper/*12*/)+(1))<=(((C)->_capacity/*8*/)-(1)))){
se_trace(&ds,163,6,674);
C->_upper=((C)->_upper/*12*/)+(1);
}
else if((se_trace(&ds,164,19,674),((C)->_capacity/*8*/)==(0))){
se_trace(&ds,165,6,674);
C->_storage=new2135(2);
se_trace(&ds,166,6,674);
C->_capacity=2;
se_trace(&ds,167,6,674);
C->_upper=0;
}
else{
se_trace(&ds,169,6,674);
_new_capacity=(2)*((C)->_capacity/*8*/);
se_trace(&ds,170,6,674);
C->_storage=r2135realloc(&ds,(C)->_storage/*4*/,(C)->_capacity/*8*/,_new_capacity);
se_trace(&ds,171,6,674);
C->_capacity=_new_capacity;
se_trace(&ds,172,6,674);
C->_upper=((C)->_upper/*12*/)+(1);
}
/*FI]*/
se_trace(&ds,174,3,674);
r1886put(&ds,C,a1,(C)->_upper/*12*/);
if(f1886add_last.assertion_flag){
f1886add_last.assertion_flag=0;
se_trace(&ds,179,8,592);
ac_ens((r1886last(&ds,C))==((void*)(a1)));
se_trace(&ds,180,9,592);
ac_ens((r1886count(&ds,C))==((1)+(o592_180_19)));
se_trace(&ds,181,9,592);
ac_ens((0)==(o592_181_15));
se_trace(&ds,182,9,592);
ac_ens(((C)->_upper/*12*/)==((1)+(o592_182_19)));
f1886add_last.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f1886add_last={"add_last of FIXED_ARRAY",1,5,"%R1886%element%R7%new_capacity%E2%old l180c19COLLECTION%E2%old l181c15COLLECTION%E2%old l182c19COLLECTION%E2%",1};
T6 r1886is_equal(se_dump_stack*caller,T1886* C,T0* a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f1886is_equal;
ds.current=((void**)&C);
ds.l=234;
ds.c=4;
ds.f=674;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f1886is_equal.assertion_flag){
f1886is_equal.assertion_flag=0;
se_trace(&ds,95,25,1);
ac_req((a1)!=((void*)(NULL)));
f1886is_equal.assertion_flag=1;
}
/*[IF*/
if((se_trace(&ds,236,14,674),(C)==((void*)(a1)))){
se_trace(&ds,237,6,674);
R=1;
}
else if((se_trace(&ds,238,16,674),((C)->_upper/*12*/)==((se_i1886(&ds,((T1886*)ci(1886,a1,238,18,674))))->_upper/*12*/))){
se_trace(&ds,239,6,674);
R=r2135memcmp(&ds,(C)->_storage/*4*/,(se_i1886(&ds,((T1886*)ci(1886,a1,239,31,674))))->_storage/*4*/,((C)->_upper/*12*/)+(1));
}
/*FI]*/
if(f1886is_equal.assertion_flag){
f1886is_equal.assertion_flag=0;
se_trace(&ds,98,40,1);
ac_ens((!(r1886standard_is_equal(&ds,C,a1)))||(R));
se_trace(&ds,99,21,1);
ac_ens((!(R))||(r1886is_equal(&ds,se_i1886(&ds,((T1886*)ci(1886,a1,99,29,1))),(T0*)C)));
f1886is_equal.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f1886is_equal={"is_equal of FIXED_ARRAY",1,2,"%R1886%other%R1886%Result%E6%",1};
T0* r1886item(se_dump_stack*caller,T1886* C,T2 a1){
T0* R=NULL;
void**locals[2];
se_dump_stack ds;
ds.fd=&f1886item;
ds.current=((void**)&C);
ds.l=136;
ds.c=4;
ds.f=674;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f1886item.assertion_flag){
f1886item.assertion_flag=0;
se_trace(&ds,73,3,592);
ac_req(r1886valid_index(&ds,C,a1));
f1886item.assertion_flag=1;
}
se_trace(&ds,138,3,674);
R=((C)->_storage/*4*/)[a1];
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f1886item={"item of FIXED_ARRAY",1,2,"%R1886%index%E2%Result%R7%",1};
void r1886set_all_with(se_dump_stack*caller,T1886* C,T0* a1){
T2 o592_126_15=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f1886set_all_with;
ds.current=((void**)&C);
ds.l=210;
ds.c=4;
ds.f=674;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&o592_126_15;
se_dst=&ds;/*link*/
o592_126_15=r1886count(&ds,C);
se_trace(&ds,212,11,674);
r2135set_all_with(&ds,(C)->_storage/*4*/,a1,(C)->_upper/*12*/);
if(f1886set_all_with.assertion_flag){
f1886set_all_with.assertion_flag=0;
se_trace(&ds,126,9,592);
ac_ens((r1886count(&ds,C))==(o592_126_15));
f1886set_all_with.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f1886set_all_with={"set_all_with of FIXED_ARRAY",1,2,"%R1886%v%R7%old l126c15COLLECTION%E2%",1};
T6 r1886valid_index(se_dump_stack*caller,T1886* C,T2 a1){
T6 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f1886valid_index;
ds.current=((void**)&C);
ds.l=44;
ds.c=11;
ds.f=592;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,48,3,592);
R=((0)<=(a1))&&((a1)<=((C)->_upper/*12*/));
if(f1886valid_index.assertion_flag){
f1886valid_index.assertion_flag=0;
se_trace(&ds,50,10,592);
ac_ens((R)==(((0)<=(a1))&&((a1)<=((C)->_upper/*12*/))));
f1886valid_index.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f1886valid_index={"valid_index of COLLECTION",1,2,"%R1886%index%E2%Result%E6%",1};
T0* r1886last(se_dump_stack*caller,T1886* C){
T0* R=NULL;
void**locals[1];
se_dump_stack ds;
ds.fd=&f1886last;
ds.current=((void**)&C);
ds.l=85;
ds.c=4;
ds.f=592;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
se_require_uppermost_flag=1;
if(f1886last.assertion_flag){
f1886last.assertion_flag=0;
se_trace(&ds,88,9,592);
ac_req((r1886count(&ds,C))>=(1));
f1886last.assertion_flag=1;
}
se_trace(&ds,90,3,592);
R=r1886item(&ds,C,(C)->_upper/*12*/);
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f1886last={"last of COLLECTION",1,1,"%R1886%Result%R7%",1};
/*No:FIXED_ARRAY[STRING].lower*/
T2 r1886count(se_dump_stack*caller,T1886* C){
T2 R=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f1886count;
ds.current=((void**)&C);
ds.l=177;
ds.c=4;
ds.f=674;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,179,3,674);
R=((C)->_upper/*12*/)+(1);
if(f1886count.assertion_flag){
f1886count.assertion_flag=0;
se_trace(&ds,59,10,592);
ac_ens((R)==((((C)->_upper/*12*/)-(0))+(1)));
f1886count.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f1886count={"count of FIXED_ARRAY",1,1,"%R1886%Result%E2%",1};
void r1886make(se_dump_stack*caller,T1886* C,T2 a1){
T2 o674_54_19=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f1886make;
ds.current=((void**)&C);
ds.l=32;
ds.c=4;
ds.f=674;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&o674_54_19;
se_dst=&ds;/*link*/
o674_54_19=(C)->_capacity/*8*/;
se_require_uppermost_flag=1;
if(f1886make.assertion_flag){
f1886make.assertion_flag=0;
se_trace(&ds,36,13,674);
ac_req((a1)>=(0));
f1886make.assertion_flag=1;
}
/*[IF*/
if((se_trace(&ds,38,16,674),(a1)==(0))){
se_trace(&ds,39,6,674);
C->_upper=-(1);
}
else if((se_trace(&ds,40,19,674),((C)->_capacity/*8*/)==(0))){
se_trace(&ds,41,6,674);
C->_storage=new2135(a1);
se_trace(&ds,42,6,674);
C->_capacity=a1;
se_trace(&ds,43,6,674);
C->_upper=(a1)-(1);
}
else if((se_trace(&ds,44,19,674),((C)->_capacity/*8*/)<(a1))){
se_trace(&ds,45,6,674);
C->_storage=new2135(a1);
se_trace(&ds,46,6,674);
C->_capacity=a1;
se_trace(&ds,47,6,674);
C->_upper=(a1)-(1);
}
else{
se_trace(&ds,49,6,674);
C->_upper=(a1)-(1);
se_trace(&ds,50,6,674);
r1886clear_all(&ds,C);
}
/*FI]*/
if(f1886make.assertion_flag){
f1886make.assertion_flag=0;
se_trace(&ds,53,9,674);
ac_ens((r1886count(&ds,C))==(a1));
se_trace(&ds,54,12,674);
ac_ens(((C)->_capacity/*8*/)>=(o674_54_19));
se_trace(&ds,55,3,674);
ac_ens(r1886all_cleared(&ds,C));
f1886make.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f1886make={"make of FIXED_ARRAY",1,2,"%R1886%new_count%E2%old l54c19FIXED_ARRAY%E2%",1};
T6 r1886equal(se_dump_stack*caller,T1886* C,T0* a1,T0* a2){
T6 R=0;
void**locals[3];
se_dump_stack ds;
ds.fd=&f1886equal;
ds.current=((void**)&C);
ds.l=74;
ds.c=11;
ds.f=1;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&R;
se_dst=&ds;/*link*/
/*[IF*/
if((se_trace(&ds,78,11,1),(a1)==((void*)(a2)))){
se_trace(&ds,79,6,1);
R=1;
}
else if((se_trace(&ds,80,15,1),(a1)==((void*)(NULL)))){
}
else if((se_trace(&ds,81,16,1),(a2)==((void*)(NULL)))){
}
else{
se_trace(&ds,83,6,1);
R=X98is_equal(&ds,83,16,1,a1,a2);
}
/*FI]*/
if(f1886equal.assertion_flag){
f1886equal.assertion_flag=0;
se_trace(&ds,86,55,1);
ac_ens(((R)==(r6_px_and(&ds,(a1)==((void*)(NULL)),(a2)==((void*)(NULL)))))||((r6_px_and(&ds,(a1)!=((void*)(NULL)),(a2)!=((void*)(NULL))))&&(X98is_equal(&ds,88,9,1,a1,a2))));
f1886equal.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f1886equal={"equal of GENERAL",1,3,"%R1886%some%R98%other%R98%Result%E6%",1};
/*No:FIXED_ARRAY[STRING].upper*/
void r1886clear(se_dump_stack*caller,T1886* C){
T2 o674_186_18=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f1886clear;
ds.current=((void**)&C);
ds.l=182;
ds.c=4;
ds.f=674;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&o674_186_18;
se_dst=&ds;/*link*/
o674_186_18=(C)->_capacity/*8*/;
se_trace(&ds,184,3,674);
C->_upper=-(1);
if(f1886clear.assertion_flag){
f1886clear.assertion_flag=0;
se_trace(&ds,186,12,674);
ac_ens(((C)->_capacity/*8*/)==(o674_186_18));
se_trace(&ds,260,3,592);
ac_ens(r1886empty(&ds,C));
f1886clear.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f1886clear={"clear of FIXED_ARRAY",1,1,"%R1886%old l186c18FIXED_ARRAY%E2%",1};
T6 r1886all_cleared(se_dump_stack*caller,T1886* C){
T6 R=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f1886all_cleared;
ds.current=((void**)&C);
ds.l=243;
ds.c=4;
ds.f=674;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,245,3,674);
R=r2135all_cleared(&ds,(C)->_storage/*4*/,(C)->_upper/*12*/);
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f1886all_cleared={"all_cleared of FIXED_ARRAY",1,1,"%R1886%Result%E6%",1};
T6 r1886empty(se_dump_stack*caller,T1886* C){
T6 R=0;
void**locals[1];
se_dump_stack ds;
ds.fd=&f1886empty;
ds.current=((void**)&C);
ds.l=62;
ds.c=4;
ds.f=592;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,65,3,592);
R=(r1886count(&ds,C))==(0);
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f1886empty={"empty of COLLECTION",1,1,"%R1886%Result%E6%",1};
T2 r1886index_of(se_dump_stack*caller,T1886* C,T0* a1){
T2 R=0;
void**locals[2];
se_dump_stack ds;
ds.fd=&f1886index_of;
ds.current=((void**)&C);
ds.l=258;
ds.c=4;
ds.f=674;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&R;
se_dst=&ds;/*link*/
se_trace(&ds,260,3,674);
R=r2135index_of(&ds,(C)->_storage/*4*/,a1,(C)->_upper/*12*/);
if(f1886index_of.assertion_flag){
f1886index_of.assertion_flag=0;
se_trace(&ds,286,9,592);
ac_ens((0)<=(R));
se_trace(&ds,287,10,592);
ac_ens((R)<=(((C)->_upper/*12*/)+(1)));
se_trace(&ds,288,19,592);
ac_ens((!((R)<=((C)->_upper/*12*/)))||(r1886equal(&ds,C,a1,r1886item(&ds,C,R))));
f1886index_of.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
return R;
}
se_frame_descriptor f1886index_of={"index_of of FIXED_ARRAY",1,2,"%R1886%element%R7%Result%E2%",1};
/*No:FIXED_ARRAY[STRING].capacity*/
void r1886put(se_dump_stack*caller,T1886* C,T0* a1,T2 a2){
T2 o592_102_15=0;
void**locals[3];
se_dump_stack ds;
ds.fd=&f1886put;
ds.current=((void**)&C);
ds.l=141;
ds.c=4;
ds.f=674;
ds.caller=caller;
ds.locals=locals;
locals[0]=(void**)&a1;
locals[1]=(void**)&a2;
locals[2]=(void**)&o592_102_15;
se_dst=&ds;/*link*/
o592_102_15=r1886count(&ds,C);
se_require_uppermost_flag=1;
if(f1886put.assertion_flag){
f1886put.assertion_flag=0;
se_trace(&ds,98,3,592);
ac_req(r1886valid_index(&ds,C,a2));
f1886put.assertion_flag=1;
}
se_trace(&ds,143,11,674);
((C)->_storage/*4*/)[a2]=(a1);
if(f1886put.assertion_flag){
f1886put.assertion_flag=0;
se_trace(&ds,101,15,592);
ac_ens((r1886item(&ds,C,a2))==((void*)(a1)));
se_trace(&ds,102,9,592);
ac_ens((r1886count(&ds,C))==(o592_102_15));
f1886put.assertion_flag=1;
}
if(se_rci(C))se_i1886(&ds,C);
se_dst=caller;/*unlink*/
}
se_frame_descriptor f1886put={"put of FIXED_ARRAY",1,3,"%R1886%element%R7%index%E2%old l102c15COLLECTION%E2%",1};
/*No:FIXED_ARRAY[STRING].storage*/
se_frame_descriptor se_ifd1886={"Class invariant of FIXED_ARRAY[STRING]",1,0,"%R1886%",1};
T1886*se_i1886(se_dump_stack*caller,T1886*C){
se_dump_stack ds;
ds.fd=&se_ifd1886;
ds.current=((void**)&C);
ds.l=0;
ds.c=0;
ds.f=0;
ds.caller=caller;
se_dst=&ds;
if(ds.fd->assertion_flag){
ds.fd->assertion_flag=0;
se_trace(&ds,107,13,1626);
ac_inv(((C)->_capacity/*8*/)>=((((C)->_upper/*12*/)-(0))+(1)));
se_trace(&ds,109,17,1626);
ac_inv((!(((C)->_capacity/*8*/)>(0)))||(r2135is_not_null(&ds,(C)->_storage/*4*/)));
ds.fd->assertion_flag=1;
}
se_dst=caller;
return C;
}