Branch: Tag:

1999-02-10

1999-02-10 01:29:43 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

UNDEFINED + ({}) and `+= implemented

Rev: src/docode.c:1.44
Rev: src/lex.c:1.62
Rev: src/modules/Gmp/mpz_glue.c:1.38
Rev: src/operators.c:1.46
Rev: src/program.c:1.109
Rev: src/program.h:1.50
Rev: src/security.c:1.10
Rev: src/testsuite.in:1.146

5:   \*/   #include "global.h"   #include <math.h> - RCSID("$Id: operators.c,v 1.45 1999/02/01 02:41:41 hubbe Exp $"); + RCSID("$Id: operators.c,v 1.46 1999/02/10 01:29:07 hubbe Exp $");   #include "interpret.h"   #include "svalue.h"   #include "multiset.h"
90:    }else{    if(types & BIT_OBJECT)    { -  if(sp[-args].type == T_OBJECT && -  sp[-args].u.object->prog && -  FIND_LFUN(sp[-args].u.object->prog,LFUN_ADD) != -1) +  if(sp[-args].type == T_OBJECT && sp[-args].u.object->prog)    { -  +  if(sp[-args].u.object->refs==1 && +  FIND_LFUN(sp[-args].u.object->prog,LFUN_ADD_EQ) != -1) +  { +  apply_lfun(sp[-args].u.object, LFUN_ADD_EQ, args-1); +  pop_stack(); +  return; +  } +  if(FIND_LFUN(sp[-args].u.object->prog,LFUN_ADD) != -1) +  {    apply_lfun(sp[-args].u.object, LFUN_ADD, args-1);    free_svalue(sp-2);    sp[-2]=sp[-1];    sp--;    return;    } -  +  }    for(e=1;e<args;e++)    {    if(sp[e-args].type == T_OBJECT &&
282:    break;    }    +  case BIT_ARRAY|BIT_INT: +  { +  if(IS_UNDEFINED(sp-args)) +  { +  int e; +  struct array *a; +  +  for(e=1;e<args;e++) +  if(sp[e-args].type != T_ARRAY) +  error("`+: trying to add integers and arrays.\n"); +  +  a=add_arrays(sp-args+1,args-1); +  pop_n_elems(args); +  push_array(a); +  return; +  } +  error("`+: trying to add integers and arrays.\n"); +  } +     case BIT_ARRAY:    {    struct array *a;