Branch: Tag:

1995-10-29

1995-10-29 01:15:04 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

uLPC

Rev: README:1.1.1.1
Rev: bin/create_testsuite:1.1.1.1
Rev: bin/export.lpc:1.1.1.1
Rev: bin/fixdepends.lpc:1.1.1.1
Rev: bin/hilfe.lpc:1.1.1.1
Rev: bin/rsif:1.1.1.1
Rev: bin/uhttpd.lpc:1.1.1.1
Rev: doc/README:1.1.1.1
Rev: doc/builtin/add_efun:1.1.1.1
Rev: doc/builtin/aggregate:1.1.1.1
Rev: doc/builtin/aggregate_list:1.1.1.1
Rev: doc/builtin/aggregate_mapping:1.1.1.1
Rev: doc/builtin/all_efuns:1.1.1.1
Rev: doc/builtin/allocate:1.1.1.1
Rev: doc/builtin/arrayp:1.1.1.1
Rev: doc/builtin/backtrace:1.1.1.1
Rev: doc/builtin/call_function:1.1.1.1
Rev: doc/builtin/call_out:1.1.1.1
Rev: doc/builtin/call_out_info:1.1.1.1
Rev: doc/builtin/catch:1.1.1.1
Rev: doc/builtin/clone:1.1.1.1
Rev: doc/builtin/combine_path:1.1.1.1
Rev: doc/builtin/compile_file:1.1.1.1
Rev: doc/builtin/compile_string:1.1.1.1
Rev: doc/builtin/copy_value:1.1.1.1
Rev: doc/builtin/crypt:1.1.1.1
Rev: doc/builtin/ctime:1.1.1.1
Rev: doc/builtin/destruct:1.1.1.1
Rev: doc/builtin/equal:1.1.1.1
Rev: doc/builtin/exit:1.1.1.1
Rev: doc/builtin/explode:1.1.1.1
Rev: doc/builtin/find_call_out:1.1.1.1
Rev: doc/builtin/floatp:1.1.1.1
Rev: doc/builtin/function_name:1.1.1.1
Rev: doc/builtin/function_object:1.1.1.1
Rev: doc/builtin/functionp:1.1.1.1
Rev: doc/builtin/getpid:1.1.1.1
Rev: doc/builtin/hash:1.1.1.1
Rev: doc/builtin/implode:1.1.1.1
Rev: doc/builtin/indices:1.1.1.1
Rev: doc/builtin/intp:1.1.1.1
Rev: doc/builtin/kill:1.1.1.1
Rev: doc/builtin/listp:1.1.1.1
Rev: doc/builtin/lower_case:1.1.1.1
Rev: doc/builtin/m_delete:1.1.1.1
Rev: doc/builtin/mappingp:1.1.1.1
Rev: doc/builtin/mkmapping:1.1.1.1
Rev: doc/builtin/next_object:1.1.1.1
Rev: doc/builtin/object_program:1.1.1.1
Rev: doc/builtin/objectp:1.1.1.1
Rev: doc/builtin/programp:1.1.1.1
Rev: doc/builtin/query_host_name:1.1.1.1
Rev: doc/builtin/query_num_arg:1.1.1.1
Rev: doc/builtin/random:1.1.1.1
Rev: doc/builtin/remove_call_out:1.1.1.1
Rev: doc/builtin/replace:1.1.1.1
Rev: doc/builtin/reverse:1.1.1.1
Rev: doc/builtin/rusage:1.1.1.1
Rev: doc/builtin/search:1.1.1.1
Rev: doc/builtin/signal:1.1.1.1
Rev: doc/builtin/signame:1.1.1.1
Rev: doc/builtin/signum:1.1.1.1
Rev: doc/builtin/sizeof:1.1.1.1
Rev: doc/builtin/sleep:1.1.1.1
Rev: doc/builtin/sscanf:1.1.1.1
Rev: doc/builtin/stringp:1.1.1.1
Rev: doc/builtin/sum:1.1.1.1
Rev: doc/builtin/this_object:1.1.1.1
Rev: doc/builtin/throw:1.1.1.1
Rev: doc/builtin/time:1.1.1.1
Rev: doc/builtin/trace:1.1.1.1
Rev: doc/builtin/upper_case:1.1.1.1
Rev: doc/builtin/values:1.1.1.1
Rev: doc/builtin/zero_type:1.1.1.1
Rev: doc/files/cd:1.1.1.1
Rev: doc/files/exec:1.1.1.1
Rev: doc/files/file:1.1.1.1
Rev: doc/files/file_stat:1.1.1.1
Rev: doc/files/fork:1.1.1.1
Rev: doc/files/get_dir:1.1.1.1
Rev: doc/files/getcwd:1.1.1.1
Rev: doc/files/mkdir:1.1.1.1
Rev: doc/files/mv:1.1.1.1
Rev: doc/files/perror:1.1.1.1
Rev: doc/files/port:1.1.1.1
Rev: doc/files/rm:1.1.1.1
Rev: doc/lpc/command_line_options:1.1.1.1
Rev: doc/lpc/hilfe.hilfe:1.1.1.1
Rev: doc/lpc/how_to_make_modules:1.1.1.1
Rev: doc/lpc/preprocessor:1.1.1.1
Rev: doc/lpc/reserved:1.1.1.1
Rev: doc/manual/i-overview.html:1.1.1.1
Rev: doc/manual/index.html:1.1.1.1
Rev: doc/manual/t-hello.html:1.1.1.1
Rev: doc/manual/ulpc-inside3.gif:1.1.1.1
Rev: doc/math/acos:1.1.1.1
Rev: doc/math/asin:1.1.1.1
Rev: doc/math/atan:1.1.1.1
Rev: doc/math/ceil:1.1.1.1
Rev: doc/math/cos:1.1.1.1
Rev: doc/math/exp:1.1.1.1
Rev: doc/math/floor:1.1.1.1
Rev: doc/math/log:1.1.1.1
Rev: doc/math/pow:1.1.1.1
Rev: doc/math/sin:1.1.1.1
Rev: doc/math/sqrt:1.1.1.1
Rev: doc/math/tan:1.1.1.1
Rev: doc/operators/addition:1.1.1.1
Rev: doc/regexp/regexp:1.1.1.1
Rev: doc/simulated/PI:1.1.1.1
Rev: doc/simulated/capitalize:1.1.1.1
Rev: doc/simulated/code_value:1.1.1.1
Rev: doc/simulated/describe_backtrace:1.1.1.1
Rev: doc/simulated/exec:1.1.1.1
Rev: doc/simulated/file_size:1.1.1.1
Rev: doc/simulated/filter_array:1.1.1.1
Rev: doc/simulated/get_function:1.1.1.1
Rev: doc/simulated/getenv:1.1.1.1
Rev: doc/simulated/l_sizeof:1.1.1.1
Rev: doc/simulated/m_indices:1.1.1.1
Rev: doc/simulated/m_sizeof:1.1.1.1
Rev: doc/simulated/m_values:1.1.1.1
Rev: doc/simulated/map_array:1.1.1.1
Rev: doc/simulated/master:1.1.1.1
Rev: doc/simulated/member_array:1.1.1.1
Rev: doc/simulated/popen:1.1.1.1
Rev: doc/simulated/previous_object:1.1.1.1
Rev: doc/simulated/read_bytes:1.1.1.1
Rev: doc/simulated/regexp:1.1.1.1
Rev: doc/simulated/search_array:1.1.1.1
Rev: doc/simulated/sort_array:1.1.1.1
Rev: doc/simulated/spawn:1.1.1.1
Rev: doc/simulated/strlen:1.1.1.1
Rev: doc/simulated/strstr:1.1.1.1
Rev: doc/simulated/sum_arrays:1.1.1.1
Rev: doc/simulated/system:1.1.1.1
Rev: doc/simulated/this_function:1.1.1.1
Rev: doc/simulated/write:1.1.1.1
Rev: doc/simulated/write_file:1.1.1.1
Rev: doc/sprintf/sprintf:1.1.1.1
Rev: doc/types/array:1.1.1.1
Rev: doc/types/float:1.1.1.1
Rev: doc/types/function:1.1.1.1
Rev: doc/types/int:1.1.1.1
Rev: doc/types/list:1.1.1.1
Rev: doc/types/mapping:1.1.1.1
Rev: doc/types/object:1.1.1.1
Rev: doc/types/program:1.1.1.1
Rev: doc/types/string:1.1.1.1
Rev: lib/master.lpc:1.1.1.1
Rev: lib/simulate.lpc:1.1.1.1
Rev: lib/testsuite.lpc:1.1.1.1
Rev: src/BUGS:1.1.1.1
Rev: src/COPYING:1.1.1.1
Rev: src/COPYRIGHT:1.1.1.1
Rev: src/ChangeLog:1.1.1.1
Rev: src/DISCLAIMER:1.1.1.1
Rev: src/Makefile.in:1.1.1.1
Rev: src/README:1.1.1.1
Rev: src/add_efun.c:1.1.1.1
Rev: src/add_efun.h:1.1.1.1
Rev: src/alloca.c:1.1.1.1
Rev: src/array.c:1.1.1.1
Rev: src/array.h:1.1.1.1
Rev: src/backend.c:1.1.1.1
Rev: src/backend.h:1.1.1.1
Rev: src/build_modlist_h:1.1.1.1
Rev: src/builtin_efuns.c:1.1.1.1
Rev: src/builtin_efuns.h:1.1.1.1
Rev: src/call_out.c:1.1.1.1
Rev: src/call_out.h:1.1.1.1
Rev: src/callback.c:1.1.1.1
Rev: src/callback.h:1.1.1.1
Rev: src/compilation.h:1.1.1.1
Rev: src/config.h:1.1.1.1
Rev: src/config.log:1.1.1.1
Rev: src/configure:1.1.1.1
Rev: src/configure.in:1.1.1.1
Rev: src/debug.c:1.1.1.1
Rev: src/debug.h:1.1.1.1
Rev: src/docode.c:1.1.1.1
Rev: src/docode.h:1.1.1.1
Rev: src/dynamic_buffer.c:1.1.1.1
Rev: src/dynamic_buffer.h:1.1.1.1
Rev: src/efun.h:1.1.1.1
Rev: src/error.c:1.1.1.1
Rev: src/error.h:1.1.1.1
Rev: src/fd_control.c:1.1.1.1
Rev: src/fd_control.h:1.1.1.1
Rev: src/fsort.c:1.1.1.1
Rev: src/fsort.h:1.1.1.1
Rev: src/get_linker_options:1.1.1.1
Rev: src/global.h:1.1.1.1
Rev: src/hashtable.c:1.1.1.1
Rev: src/hashtable.h:1.1.1.1
Rev: src/install-sh:1.1.1.1
Rev: src/interpret.c:1.1.1.1
Rev: src/interpret.h:1.1.1.1
Rev: src/language.y:1.1.1.1
Rev: src/las.c:1.1.1.1
Rev: src/las.h:1.1.1.1
Rev: src/lex.c:1.1.1.1
Rev: src/lex.h:1.1.1.1
Rev: src/list.c:1.1.1.1
Rev: src/list.h:1.1.1.1
Rev: src/lpc_signal.c:1.1.1.1
Rev: src/lpc_signal.h:1.1.1.1
Rev: src/lpc_types.c:1.1.1.1
Rev: src/lpc_types.h:1.1.1.1
Rev: src/machine.h.in:1.1.1.1
Rev: src/macros.h:1.1.1.1
Rev: src/main.c:1.1.1.1
Rev: src/main.h:1.1.1.1
Rev: src/make_modules:1.1.1.1
Rev: src/mapping.c:1.1.1.1
Rev: src/mapping.h:1.1.1.1
Rev: src/memory.c:1.1.1.1
Rev: src/memory.h:1.1.1.1
Rev: src/module.c:1.1.1.1
Rev: src/module.h:1.1.1.1
Rev: src/modules/efuns.c:1.1.1.1
Rev: src/modules/files/Makefile.in:1.1.1.1
Rev: src/modules/files/configure:1.1.1.1
Rev: src/modules/files/configure.in:1.1.1.1
Rev: src/modules/files/datagram.c:1.1.1.1
Rev: src/modules/files/efuns.c:1.1.1.1
Rev: src/modules/files/file.c:1.1.1.1
Rev: src/modules/files/file.h:1.1.1.1
Rev: src/modules/files/file_machine.h.in:1.1.1.1
Rev: src/modules/files/socket.c:1.1.1.1
Rev: src/modules/math/Makefile.in:1.1.1.1
Rev: src/modules/math/configure:1.1.1.1
Rev: src/modules/math/configure.in:1.1.1.1
Rev: src/modules/math/math.c:1.1.1.1
Rev: src/modules/regexp/Makefile.in:1.1.1.1
Rev: src/modules/regexp/configure:1.1.1.1
Rev: src/modules/regexp/configure.in:1.1.1.1
Rev: src/modules/regexp/glue.c:1.1.1.1
Rev: src/modules/regexp/regexp.c:1.1.1.1
Rev: src/modules/regexp/regexp.h:1.1.1.1
Rev: src/modules/sprintf/Makefile.in:1.1.1.1
Rev: src/modules/sprintf/configure:1.1.1.1
Rev: src/modules/sprintf/configure.in:1.1.1.1
Rev: src/modules/sprintf/sprintf.c:1.1.1.1
Rev: src/object.c:1.1.1.1
Rev: src/object.h:1.1.1.1
Rev: src/opcodes.c:1.1.1.1
Rev: src/opcodes.h:1.1.1.1
Rev: src/operators.c:1.1.1.1
Rev: src/operators.h:1.1.1.1
Rev: src/otable.h:1.1.1.1
Rev: src/port.c:1.1.1.1
Rev: src/port.h:1.1.1.1
Rev: src/program.c:1.1.1.1
Rev: src/program.h:1.1.1.1
Rev: src/rusage.c:1.1.1.1
Rev: src/rusage.h:1.1.1.1
Rev: src/stamp-h:1.1.1.1
Rev: src/stralloc.c:1.1.1.1
Rev: src/stralloc.h:1.1.1.1
Rev: src/stuff.c:1.1.1.1
Rev: src/stuff.h:1.1.1.1
Rev: src/svalue.c:1.1.1.1
Rev: src/svalue.h:1.1.1.1
Rev: src/todo:1.1.1.1
Rev: src/types.h:1.1.1.1
Rev: src/ualarm.c:1.1.1.1

21:   #include <stdio.h>   #include <fcntl.h>    + #define FILE_STATE + #define PROGRAM_STATE    -  + #define STRUCT + #include "compilation.h" + #undef STRUCT +  + #define DECLARE + #include "compilation.h" + #undef DECLARE +  + #undef FILE_STATE + #undef PROGRAM_STATE +    struct program *first_program = 0;      struct program fake_program;      static int current_program_id=0; - struct compilation *previous_compilation = 0; +    static INT32 last_line = 0;   static INT32 last_pc = 0;   static struct lpc_string *last_file = 0;
82:   {    int e;    struct inherit inherit; -  struct compilation *old; +     struct lpc_string *name; -  old=ALLOC_STRUCT(compilation); +     -  old->previous=previous_compilation; -  previous_compilation=old; - #define MOVE(var) old->var=var; MEMSET((char *)&(var),0,sizeof(var)) + #define PROGRAM_STATE + #define PUSH + #include "compilation.h" + #undef PUSH + #undef PROGRAM_STATE    -  for(e=0;e<NUM_AREAS;e++) { MOVE(areas[e]); } -  MOVE(fake_program); -  MOVE(init_node); -  MOVE(current_line); -  MOVE(old_line); -  MOVE(nexpands); -  MOVE(last_line); -  MOVE(last_pc); -  MOVE(current_file); -  MOVE(pragma_all_inline); -  MOVE(istate); -  MOVE(defines); -  MOVE(num_parse_error); -  MOVE(local_variables); -  MOVE(inherit_names); -  old->comp_stackp=comp_stackp; -  - #undef MOVE -  +     for(e=0; e<NUM_AREAS; e++) low_init_buf(areas + e);    low_init_buf(& inherit_names);    fake_program.id = ++current_program_id;
125:      static void low_free_program(struct program *p)   { -  INT32 e; +  unsigned INT16 e;    for(e=0; e<p->num_strings; e++)    free_string(p->strings[e]);   
258:    fatal("Someone changed a program!!!\n");    }    -  for(e=0;e<p->num_constants;e++) +  for(e=0;e<(int)p->num_constants;e++)    {    check_svalue(p->constants + e);    }    -  for(e=0;e<p->num_strings;e++) +  for(e=0;e<(int)p->num_strings;e++)    check_string(p->strings[e]);    -  for(e=0;e<p->num_identifiers;e++) +  for(e=0;e<(int)p->num_identifiers;e++)    {    check_string(p->identifiers[e].name);    check_string(p->identifiers[e].type);
278:    check_type(p->identifiers[e].run_time_type);    }    -  for(e=0;e<p->num_identifier_references;e++) +  for(e=0;e<(int)p->num_identifier_references;e++)    {    if(p->identifier_references[e].inherit_offset > p->num_inherits)    fatal("Inherit offset is wrong!\n");
288:    fatal("Identifier offset is wrong!\n");    }    -  for(e=0;e<p->num_identifier_indexes;e++) +  for(e=0;e<(int)p->num_identifier_indexes;e++)    {    if(p->identifier_index[e] > p->num_identifier_references)    fatal("Program->identifier_indexes[%ld] is wrong\n",(long)e);    }    -  for(e=0;e<p->num_inherits;e++) +  for(e=0;e<(int)p->num_inherits;e++)    {    if(p->inherits[e].storage_offset < 0)    fatal("Inherit->storage_offset is wrong.\n");
380:       /* Ok, sort for binsearch */    prog->identifier_index=(unsigned short *)p; -  for(e=i=0;i<prog->num_identifier_references;i++) +  for(e=i=0;i<(int)prog->num_identifier_references;i++)    {    struct reference *funp;    struct identifier *fun;
393:    if(fun->func.offset == -1) continue; /* prototype */       /* check for multiple definitions */ -  for(t=0;t>=0 && t<prog->num_identifier_references;t++) +  for(t=0;t>=0 && t<(int)prog->num_identifier_references;t++)    {    struct reference *funpb;    struct identifier *funb;
435:   #endif    }    -  if(previous_compilation) +  if(current_file)    { -  struct compilation *old; -  INT32 e; -  if(current_file) free_string(current_file); -  - #define MOVE(var) var=old->var; -  old=previous_compilation; -  for(e=0;e<NUM_AREAS;e++) { MOVE(areas[e]); } -  -  MOVE(fake_program); -  MOVE(init_node); -  MOVE(current_line); -  MOVE(old_line); -  MOVE(nexpands); -  MOVE(last_line); -  MOVE(last_pc); -  MOVE(current_file); -  MOVE(pragma_all_inline); -  MOVE(istate); -  MOVE(defines); -  MOVE(num_parse_error); -  MOVE(local_variables); -  MOVE(inherit_names); -  -  comp_stackp=previous_compilation->comp_stackp; -  previous_compilation=old->previous; -  free((char *)old); - #undef MOVE +  free_string(current_file); +  current_file=0;    }    -  + #define PROGRAM_STATE + #define POP + #include "compilation.h" + #undef POP + #undef PROGRAM_STATE +     return prog;   }   
522:    funp.inherit_offset+=e;    funp.flags|=ID_HIDDEN;    -  for(d=0;d<fake_program.num_identifier_references;d++) +  for(d=0;d<(int)fake_program.num_identifier_references;d++)    {    struct reference *fp;    fp=fake_program.identifier_references+d;
599:    storage_offset=fake_program.storage_needed;    add_storage(p->storage_needed);    -  for(e=0; e<p->num_inherits; e++) +  for(e=0; e<(int)p->num_inherits; e++)    {    inherit=p->inherits[e];    inherit.prog->refs++;
612:    name=0;    }    -  for (e=0; e < p->num_identifier_references; e++) +  for (e=0; e < (int)p->num_identifier_references; e++)    {    struct reference fun;    struct lpc_string *name;
686:   {    INT32 e;    setup_fake_program(); -  for(e=0;e<fake_program.num_identifier_references;e++) +  for(e=0;e<(int)fake_program.num_identifier_references;e++)    {    if(fake_program.identifier_references[e].flags & ID_HIDDEN) continue;   
905:    }    }else{    int i,t; -  for(i=0;i<prog->num_identifier_references;i++) +  for(i=0;i<(int)prog->num_identifier_references;i++)    {    funp = prog->identifier_references + i;    if(funp->flags & ID_HIDDEN) continue;
915:    if(funp->flags & ID_INHERITED)    {    if(funp->flags & ID_PRIVATE) continue; -  for(t=0; t>=0 && t<prog->num_identifier_references; t++) +  for(t=0; t>=0 && t<(int)prog->num_identifier_references; t++)    {    if(t == i) continue;   
1160:    if(fd < 0)    error("Couldn't open file '%s'.\n",file_name->str);    +     start_new_program(); -  +  + #define FILE_STATE + #define PUSH + #include "compilation.h" + #undef PUSH +     start_new_file(fd,file_name);    compile();    end_new_file();    p=end_program(); -  +  + #define POP + #include "compilation.h" + #undef POP + #undef FILE_STATE +     if(!p) error("Failed to compile %s.\n",file_name->str);    return p;   }
1174:   {    struct program *p;    start_new_program(); +  + #define FILE_STATE + #define PUSH + #include "compilation.h" + #undef PUSH +     start_new_string(prog->str,prog->len,name);    compile();    end_new_file();    p=end_program(); -  +  + #define POP + #include "compilation.h" + #undef POP + #undef FILE_STATE +     if(!p) error("Compilation failed.\n");    return p;   }