Changeset 486


Ignore:
Timestamp:
Apr 17, 2011, 10:28:28 AM (6 years ago)
Author:
sam
Message:

lisp: implement LispNumber::Create.

Location:
abuse/trunk/src
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • abuse/trunk/src/ant.cpp

    r482 r486  
    113113    p_ref r1(call_list);
    114114    push_onto_list(new_lisp_pointer(b),call_list);
    115     push_onto_list(new_lisp_number(angle),call_list);
    116     push_onto_list(new_lisp_number(firey),call_list);
    117     push_onto_list(new_lisp_number(firex),call_list);
    118     push_onto_list(new_lisp_number(o->aitype()),call_list);
     115    push_onto_list(LispNumber::Create(angle),call_list);
     116    push_onto_list(LispNumber::Create(firey),call_list);
     117    push_onto_list(LispNumber::Create(firex),call_list);
     118    push_onto_list(LispNumber::Create(o->aitype()),call_list);
    119119    push_onto_list(new_lisp_pointer(o),call_list);
    120120    eval_user_fun((LispSymbol *)l_fire_object,call_list);
  • abuse/trunk/src/cache.cpp

    r482 r486  
    384384
    385385    void *call_with=NULL;
    386     push_onto_list(new_lisp_number(type),call_with);
     386    push_onto_list(LispNumber::Create(type),call_with);
    387387
    388388    void *CacheList=eval_function((LispSymbol *)cache_fun,call_with);
  • abuse/trunk/src/chars.cpp

    r484 r486  
    173173    return 0;
    174174  }
    175   return new_lisp_number(current_object->lvars[t->var_index[number]]);
     175  return LispNumber::Create(current_object->lvars[t->var_index[number]]);
    176176}
    177177
  • abuse/trunk/src/clisp.cpp

    r484 r486  
    782782      figures[total_objects]=new character_type(CDR(args),sym);
    783783      total_objects++;
    784       return new_lisp_number(total_objects-1);
     784      return LispNumber::Create(total_objects-1);
    785785    } break;
    786786    case 24 :
     
    792792      current_level->foreground_intersect(x1,y1,x2,y2);
    793793      void *ret=NULL;
    794       push_onto_list(new_lisp_number(y2),ret);
    795       push_onto_list(new_lisp_number(x2),ret);
     794      push_onto_list(LispNumber::Create(y2),ret);
     795      push_onto_list(LispNumber::Create(x2),ret);
    796796      return ret;
    797797    } break;
     
    878878      void *ret=NULL;
    879879      p_ref r1(ret);
    880       push_onto_list(new_lisp_number(b3),ret);
    881       push_onto_list(new_lisp_number(b2),ret);
    882       push_onto_list(new_lisp_number(b1),ret);
    883       push_onto_list(new_lisp_number(yv),ret);
    884       push_onto_list(new_lisp_number(xv),ret);
     880      push_onto_list(LispNumber::Create(b3),ret);
     881      push_onto_list(LispNumber::Create(b2),ret);
     882      push_onto_list(LispNumber::Create(b1),ret);
     883      push_onto_list(LispNumber::Create(yv),ret);
     884      push_onto_list(LispNumber::Create(xv),ret);
    885885      return ret;
    886886    } break;
     
    890890      {
    891891    p_ref r1(ret);
    892     push_onto_list(new_lisp_number((last_demo_mbut&4)==4),ret);
    893     push_onto_list(new_lisp_number((last_demo_mbut&2)==2),ret);
    894     push_onto_list(new_lisp_number((last_demo_mbut&1)==1),ret);
    895     push_onto_list(new_lisp_number(last_demo_my),ret);
    896     push_onto_list(new_lisp_number(last_demo_mx),ret);
     892    push_onto_list(LispNumber::Create((last_demo_mbut&4)==4),ret);
     893    push_onto_list(LispNumber::Create((last_demo_mbut&2)==2),ret);
     894    push_onto_list(LispNumber::Create((last_demo_mbut&1)==1),ret);
     895    push_onto_list(LispNumber::Create(last_demo_my),ret);
     896    push_onto_list(LispNumber::Create(last_demo_mx),ret);
    897897      }
    898898      return ret;
     
    908908      {
    909909    p_ref r1(ret);
    910     push_onto_list(new_lisp_number(ry),ret);
    911     push_onto_list(new_lisp_number(rx),ret);
     910    push_onto_list(LispNumber::Create(ry),ret);
     911    push_onto_list(LispNumber::Create(rx),ret);
    912912      }
    913913      return ret;
     
    923923      {
    924924    p_ref r1(ret);
    925     push_onto_list(new_lisp_number(ry),ret);
    926     push_onto_list(new_lisp_number(rx),ret);
     925    push_onto_list(LispNumber::Create(ry),ret);
     926    push_onto_list(LispNumber::Create(rx),ret);
    927927      }
    928928      return ret;
  • abuse/trunk/src/cop.cpp

    r484 r486  
    228228  p_ref r1(list);
    229229  push_onto_list(new_lisp_pointer(target),list);
    230   push_onto_list(new_lisp_number(angle),list);
    231   push_onto_list(new_lisp_number(y2),list);
    232   push_onto_list(new_lisp_number(x2),list);
    233   push_onto_list(new_lisp_number(type),list);
     230  push_onto_list(LispNumber::Create(angle),list);
     231  push_onto_list(LispNumber::Create(y2),list);
     232  push_onto_list(LispNumber::Create(x2),list);
     233  push_onto_list(LispNumber::Create(type),list);
    234234  push_onto_list(new_lisp_pointer(o->get_object(0)),list);
    235235  eval_function((LispSymbol *)l_fire_object,list);
     
    260260    o->lvars[fire_delay1]=3;
    261261    if (player_fire_weapon(o,SHOTGUN,NULL,o->lvars[point_angle],small_fire_off))
    262           ret=new_lisp_number(-1);
    263     else ret=new_lisp_number(0);
     262          ret=LispNumber::Create(-1);
     263    else ret=LispNumber::Create(0);
    264264      } else
    265265      {
    266266    o->lvars[fire_delay1]=5;                  // no ammo, set large fire delay for next shot
    267267    player_fire_weapon(o,SHOTGUN,NULL,o->lvars[point_angle],small_fire_off);
    268     ret=new_lisp_number(0);
     268    ret=LispNumber::Create(0);
    269269      }
    270     } else ret=new_lisp_number(0);                // can't fire yet, return 0 ammo subtract
     270    } else ret=LispNumber::Create(0);                // can't fire yet, return 0 ammo subtract
    271271  }
    272272  return ret;
     
    303303    if (player_fire_weapon(o,ammo_type(o->otype),NULL,o->lvars[point_angle],
    304304                   o->otype==DFRIS ? large_fire_off : small_fire_off ))   
    305           ret=new_lisp_number(-1);
    306     else ret=new_lisp_number(0);
    307       } else ret=new_lisp_number(0);
    308     } else ret=new_lisp_number(0);                // can't fire yet, return 0 ammo subtract
     305          ret=LispNumber::Create(-1);
     306    else ret=LispNumber::Create(0);
     307      } else ret=LispNumber::Create(0);
     308    } else ret=LispNumber::Create(0);                // can't fire yet, return 0 ammo subtract
    309309  }
    310310  return ret;
     
    329329    o->lvars[fire_delay1]=2;
    330330    if (player_fire_weapon(o,PLASMA,NULL,o->lvars[point_angle],small_fire_off))   
    331           ret=new_lisp_number(-1);
    332     else ret=new_lisp_number(0);
    333       } else ret=new_lisp_number(0);
    334     } else ret=new_lisp_number(0);                // can't fire yet, return 0 ammo subtract
     331          ret=LispNumber::Create(-1);
     332    else ret=LispNumber::Create(0);
     333      } else ret=LispNumber::Create(0);
     334    } else ret=LispNumber::Create(0);                // can't fire yet, return 0 ammo subtract
    335335  }
    336336  return ret;
     
    354354    if (player_fire_weapon(o,LSABER,NULL,o->lvars[point_angle]+(current_level->tick_counter()&7)-8,
    355355                   small_fire_off))
    356           ret=new_lisp_number(-1);
    357     else ret=new_lisp_number(0);
    358       } else ret=new_lisp_number(0);
    359     } else ret=new_lisp_number(0);                // can't fire yet, return 0 ammo subtract
     356          ret=LispNumber::Create(-1);
     357    else ret=LispNumber::Create(0);
     358      } else ret=LispNumber::Create(0);
     359    } else ret=LispNumber::Create(0);                // can't fire yet, return 0 ammo subtract
    360360  }
    361361  return ret;
     
    403403    }
    404404    if (player_fire_weapon(o,ROCKET,target,o->lvars[point_angle],large_fire_off))   
    405           ret=new_lisp_number(-1);
    406     else ret=new_lisp_number(0);
    407 
    408       } else ret=new_lisp_number(0);
    409     } else ret=new_lisp_number(0);                // can't fire yet, return 0 ammo subtract
     405          ret=LispNumber::Create(-1);
     406    else ret=LispNumber::Create(0);
     407
     408      } else ret=LispNumber::Create(0);
     409    } else ret=LispNumber::Create(0);                // can't fire yet, return 0 ammo subtract
    410410  }
    411411  return ret;
     
    658658      view *v=o->controller();
    659659
    660       push_onto_list(new_lisp_number(v->weapon_total(v->current_weapon)),args);
     660      push_onto_list(LispNumber::Create(v->weapon_total(v->current_weapon)),args);
    661661      push_onto_list(l_FIRE,args);
    662662
     
    681681  }
    682682
    683   return new_lisp_number(ret);
     683  return LispNumber::Create(ret);
    684684}
    685685
     
    755755      p_ref r1(ret);
    756756
    757       push_onto_list(new_lisp_number(bot->get_tint()),ret);
     757      push_onto_list(LispNumber::Create(bot->get_tint()),ret);
    758758
    759759      if (bot->lvars[special_power]==SNEAKY_POWER)
  • abuse/trunk/src/lcache.cpp

    r482 r486  
    103103  {
    104104    case L_NUMBER :
    105     { return new_lisp_number(fp->read_uint32()); } break;
     105    { return LispNumber::Create(fp->read_uint32()); } break;
    106106    case L_CHARACTER :
    107107    { return new_lisp_character(fp->read_uint16()); } break;
  • abuse/trunk/src/lisp/lisp.cpp

    r485 r486  
    442442}
    443443
    444 LispNumber *new_lisp_number(long num)
    445 {
    446   LispNumber *s=(LispNumber *)lmalloc(sizeof(LispNumber), current_space);
    447   s->type=L_NUMBER;
    448   s->num=num;
    449   return s;
     444LispNumber *LispNumber::Create(long num)
     445{
     446    LispNumber *s = (LispNumber *)lmalloc(sizeof(LispNumber), current_space);
     447    s->type = L_NUMBER;
     448    s->num = num;
     449    return s;
    450450}
    451451
     
    12121212  else if (isdigit(n[0]) || (n[0]=='-' && isdigit(n[1])))
    12131213  {
    1214     LispNumber *num=new_lisp_number(0);
     1214    LispNumber *num = LispNumber::Create(0);
    12151215    sscanf(n, "%ld", &num->num);
    12161216    ret=num;
     
    15251525      }
    15261526      if(t == L_C_FUNCTION)
    1527         ret=new_lisp_number(c_caller( ((LispSysFunction *)fun)->fun_number, first));
     1527        ret = LispNumber::Create(c_caller( ((LispSysFunction *)fun)->fun_number, first));
    15281528      else if (c_caller( ((LispSysFunction *)fun)->fun_number, first))
    15291529        ret=true_symbol;
     
    18121812      switch (item_type(v))
    18131813      {
    1814         case L_STRING : ret=new_lisp_number(strlen(lstring_value(v))); break;
    1815         case L_CONS_CELL : ret=new_lisp_number(list_length(v)); break;
     1814        case L_STRING : ret = LispNumber::Create(strlen(lstring_value(v))); break;
     1815        case L_CONS_CELL : ret = LispNumber::Create(list_length(v)); break;
    18161816        default :
    18171817        { lprint(v);
     
    18691869    arg_list=CDR(arg_list);
    18701870      }
    1871       ret=new_lisp_number(sum);
     1871      ret = LispNumber::Create(sum);
    18721872    }
    18731873    break;
     
    18961896      if (arg_list) first=eval(CAR(arg_list));
    18971897    } while (arg_list);
    1898     ret=new_lisp_number(sum);
     1898    ret = LispNumber::Create(sum);
    18991899      }
    19001900    }
     
    19201920    arg_list=CDR(arg_list);
    19211921      }
    1922       ret=new_lisp_number(sum);
     1922      ret = LispNumber::Create(sum);
    19231923    }
    19241924    break;
     
    19311931    arg_list=CDR(arg_list);
    19321932      }
    1933       ret=new_lisp_number(x);
     1933      ret = LispNumber::Create(x);
    19341934    }
    19351935    break;
     
    21832183      {
    21842184        case L_CHARACTER :
    2185         { ret=new_lisp_number(((LispChar *)i)->ch); } break;
     2185        { ret = LispNumber::Create(((LispChar *)i)->ch); } break;
    21862186        case L_STRING :
    2187         {  ret=new_lisp_number(*lstring_value(i)); } break;
     2187        {  ret = LispNumber::Create(*lstring_value(i)); } break;
    21882188        default :
    21892189        {
     
    24122412    } break;
    24132413    case SYS_FUNC_ABS:
    2414       ret=new_lisp_number(abs(lnumber_value(eval(CAR(arg_list))))); break;
     2414      ret = LispNumber::Create(abs(lnumber_value(eval(CAR(arg_list))))); break;
    24152415    case SYS_FUNC_MIN:
    24162416    {
    24172417      int x=lnumber_value(eval(CAR(arg_list))), y=lnumber_value(eval(CAR(CDR(arg_list))));
    2418       if (x<y) ret=new_lisp_number(x); else ret=new_lisp_number(y);
     2418      ret = LispNumber::Create(x < y ? x : y);
    24192419    } break;
    24202420    case SYS_FUNC_MAX:
    24212421    {
    24222422      int x=lnumber_value(eval(CAR(arg_list))), y=lnumber_value(eval(CAR(CDR(arg_list))));
    2423       if (x>y) ret=new_lisp_number(x); else ret=new_lisp_number(y);
     2423      ret = LispNumber::Create(x > y ? x : y);
    24242424    } break;
    24252425    case SYS_FUNC_BACKQUOTE:
     
    24512451      long y=(lnumber_value(eval(CAR(arg_list))));   arg_list=CDR(arg_list);
    24522452      long x=(lnumber_value(eval(CAR(arg_list))));
    2453       ret=new_lisp_number(lisp_atan2(y, x));
     2453      ret = LispNumber::Create(lisp_atan2(y, x));
    24542454    } break;
    24552455    case SYS_FUNC_ENUM:
     
    24652465    {
    24662466      case L_SYMBOL :
    2467       { ((LispSymbol *)sym)->value=new_lisp_number(x); } break;
     2467      { ((LispSymbol *)sym)->value = LispNumber::Create(x); } break;
    24682468      case L_CONS_CELL :
    24692469      {
     
    24782478#endif
    24792479        x=lnumber_value(eval(CAR(CDR(sym))));
    2480         ((LispSymbol *)sym)->value=new_lisp_number(x);
     2480        ((LispSymbol *)sym)->value = LispNumber::Create(x);
    24812481      } break;
    24822482      default :
     
    25062506      long y=lnumber_value(eval(CAR(arg_list)));
    25072507      if (y==0) { lbreak("mod : division by zero\n"); y=1; }
    2508       ret=new_lisp_number(x%y);
     2508      ret = LispNumber::Create(x%y);
    25092509    } break;
    25102510/*    case SYS_FUNC_WRITE_PROFILE:
     
    25852585                arg_list=CDR(arg_list);
    25862586      }
    2587       ret=new_lisp_number(first);
     2587      ret = LispNumber::Create(first);
    25882588    } break;
    25892589    case SYS_FUNC_BIT_OR:
     
    25952595                arg_list=CDR(arg_list);
    25962596      }
    2597       ret=new_lisp_number(first);
     2597      ret = LispNumber::Create(first);
    25982598    } break;
    25992599    case SYS_FUNC_BIT_XOR:
     
    26052605                arg_list=CDR(arg_list);
    26062606      }
    2607       ret=new_lisp_number(first);
     2607      ret = LispNumber::Create(first);
    26082608    } break;
    26092609    case SYS_FUNC_MAKE_ARRAY:
     
    26662666      char *find=strstr(haystack, needle);
    26672667      if (find)
    2668         ret=new_lisp_number(find-haystack);
     2668        ret = LispNumber::Create(find-haystack);
    26692669      else ret=NULL;
    26702670    } break;
     
    31533153        ((LispNumber *)value)->num = num;
    31543154    else
    3155         value = new_lisp_number(num);
     3155        value = LispNumber::Create(num);
    31563156}
    31573157
  • abuse/trunk/src/lisp/lisp.h

    r485 r486  
    6363struct LispNumber : LispObject
    6464{
     65    static LispNumber *Create(long num);
     66
    6567    long num;
    6668};
     
    180182
    181183
    182 LispNumber *new_lisp_number(long num);
    183184LispPointer *new_lisp_pointer(void *addr);
    184185LispChar *new_lisp_character(uint16_t ch);
  • abuse/trunk/src/lisp/lisp_gc.cpp

    r484 r486  
    135135        break;
    136136      case L_NUMBER:
    137         ret = new_lisp_number(((LispNumber *)x)->num);
     137        ret = LispNumber::Create(((LispNumber *)x)->num);
    138138        break;
    139139      case L_SYS_FUNCTION:
  • abuse/trunk/src/objects.cpp

    r484 r486  
    492492    l_ptr_stack.push(&am);
    493493
    494     ((LispList *)am)->car=new_lisp_number(amount);
     494    ((LispList *)am)->car=LispNumber::Create(amount);
    495495
    496496    frm=new_cons_cell();
     
    502502    l_ptr_stack.push(&hx);
    503503
    504     ((LispList *)hx)->car=new_lisp_number(hitx);
     504    ((LispList *)hx)->car=LispNumber::Create(hitx);
    505505
    506506    hy=new_cons_cell();
    507507    l_ptr_stack.push(&hy);
    508     ((LispList *)hy)->car=new_lisp_number(hity);
     508    ((LispList *)hy)->car=LispNumber::Create(hity);
    509509
    510510    px=new_cons_cell();
    511511    l_ptr_stack.push(&px);
    512     ((LispList *)px)->car=new_lisp_number(push_xvel);
     512    ((LispList *)px)->car=LispNumber::Create(push_xvel);
    513513
    514514    py=new_cons_cell();
    515515    l_ptr_stack.push(&py);
    516     ((LispList *)py)->car=new_lisp_number(push_yvel);
     516    ((LispList *)py)->car=LispNumber::Create(push_yvel);
    517517
    518518
     
    910910      } else
    911911      {
    912     push_onto_list(new_lisp_number(ly),rlist);
    913     push_onto_list(new_lisp_number(lx),rlist);
     912    push_onto_list(LispNumber::Create(ly),rlist);
     913    push_onto_list(LispNumber::Create(lx),rlist);
    914914    push_onto_list(l_tile,rlist);
    915915      }
    916       push_onto_list(new_lisp_number(ret),rlist);
     916      push_onto_list(LispNumber::Create(ret),rlist);
    917917
    918918      return rlist;
     
    12231223    lcx=new_cons_cell();
    12241224    l_ptr_stack.push(&lcx);
    1225     ((LispList *)lcx)->car=new_lisp_number(cx);
     1225    ((LispList *)lcx)->car=LispNumber::Create(cx);
    12261226
    12271227    lcy=new_cons_cell();
    12281228    l_ptr_stack.push(&lcy);
    1229     ((LispList *)lcy)->car=new_lisp_number(cy);
     1229    ((LispList *)lcy)->car=LispNumber::Create(cy);
    12301230
    12311231    lb=new_cons_cell();
    12321232    l_ptr_stack.push(&lb);
    1233     ((LispList *)lb)->car=new_lisp_number(button);
     1233    ((LispList *)lb)->car=LispNumber::Create(button);
    12341234
    12351235
Note: See TracChangeset for help on using the changeset viewer.