Ignore:
Timestamp:
Apr 17, 2011, 11:56:55 PM (10 years ago)
Author:
Sam Hocevar
Message:

lisp: implement LObject::Eval.

File:
1 edited

Legend:

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

    r494 r496  
    573573    case 0 :
    574574    {
    575       current_object->set_aistate(lnumber_value(eval(CAR(args))));
     575      current_object->set_aistate(lnumber_value(CAR(args)->Eval()));
    576576      current_object->set_aistate_time(0);
    577577      void *ai=figures[current_object->otype]->get_fun(OFUN_AI);
     
    587587    {
    588588      game_object *old_cur=current_object;
    589       current_object=(game_object *)lpointer_value(eval(CAR(args)));
     589      current_object=(game_object *)lpointer_value(CAR(args)->Eval());
    590590      void *ret=eval_block(CDR(args));
    591591      current_object=old_cur;
     
    599599      game_object *o;
    600600      if (args)
    601         o=(game_object *)lpointer_value(eval(CAR(args)));
     601        o=(game_object *)lpointer_value(CAR(args)->Eval());
    602602      else o=current_object;
    603603      game_object *hit=current_object->bmove(whit,o);
     
    615615    case 5 : return LPointer::Create(current_level->find_closest(current_object->x,
    616616                                 current_object->y,
    617                                lnumber_value(eval(CAR(args))),
     617                               lnumber_value(CAR(args)->Eval()),
    618618                                       current_object)); break;
    619619    case 6 : return LPointer::Create(current_level->find_xclosest(current_object->x,
    620620                                  current_object->y,
    621                                   lnumber_value(eval(CAR(args))),
     621                                  lnumber_value(CAR(args)->Eval()),
    622622                                  current_object
    623623                                  )); break;
    624624    case 7 :
    625625    {
    626       long n1=lnumber_value(eval(CAR(args)));
    627       long n2=lnumber_value(eval(CAR(CDR(args))));
     626      long n1=lnumber_value(CAR(args)->Eval());
     627      long n2=lnumber_value(CAR(CDR(args))->Eval());
    628628      return LPointer::Create(current_level->find_xrange(current_object->x,
    629629                             current_object->y,
     
    634634    case 8 :
    635635    {
    636       int type=lnumber_value(eval(CAR(args)));          args=CDR(args);
    637       long x=lnumber_value(eval(CAR(args)));      args=CDR(args);
    638       long y=lnumber_value(eval(CAR(args))); args=CDR(args);
     636      int type=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     637      long x=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     638      long y=lnumber_value(CAR(args)->Eval()); args=CDR(args);
    639639      game_object *o;
    640640      if (args)
    641         o=create(type,x,y,0,lnumber_value(eval(CAR(args))));
     641        o=create(type,x,y,0,lnumber_value(CAR(args)->Eval()));
    642642      else
    643643        o=create(type,x,y);
     
    648648    case 22 :
    649649    {
    650       int type=lnumber_value(eval(CAR(args)));          args=CDR(args);
    651       long x=lnumber_value(eval(CAR(args)));      args=CDR(args);
    652       long y=lnumber_value(eval(CAR(args))); args=CDR(args);
     650      int type=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     651      long x=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     652      long y=lnumber_value(CAR(args)->Eval()); args=CDR(args);
    653653      game_object *o;
    654654      if (args)
    655         o=create(type,x,y,0,lnumber_value(eval(CAR(args))));
     655        o=create(type,x,y,0,lnumber_value(CAR(args)->Eval()));
    656656      else
    657657        o=create(type,x,y);
     
    664664    case 10 :
    665665    {
    666       view *v=((game_object *)lpointer_value(eval(CAR(args))))->controller()->next;
     666      view *v=((game_object *)lpointer_value(CAR(args)->Eval()))->controller()->next;
    667667      if (v)
    668668        return LPointer::Create(v->focus);
     
    672672    {
    673673      return LPointer::Create
    674       ((void *)current_object->get_object(lnumber_value(eval(CAR(args)))));
     674      ((void *)current_object->get_object(lnumber_value(CAR(args)->Eval())));
    675675    } break;
    676676    case 12 :
    677677    {
    678678      return LPointer::Create
    679       ((void *)current_object->get_light(lnumber_value(eval(CAR(args)))));
     679      ((void *)current_object->get_light(lnumber_value(CAR(args)->Eval())));
    680680    } break;
    681681    case 13 :
     
    686686      {
    687687    current_object=old_cur->get_object(i);
    688     ret=eval(CAR(args));
     688    ret = CAR(args)->Eval();
    689689      }
    690690      current_object=old_cur;
     
    693693    case 14 :
    694694    {
    695       int t=lnumber_value(eval(CAR(args))); args=lcdr(args);
    696       int x=lnumber_value(eval(CAR(args))); args=lcdr(args);
    697       int y=lnumber_value(eval(CAR(args))); args=lcdr(args);
    698       int r1=lnumber_value(eval(CAR(args))); args=lcdr(args);
    699       int r2=lnumber_value(eval(CAR(args))); args=lcdr(args);
    700       int xs=lnumber_value(eval(CAR(args))); args=lcdr(args);
    701       int ys=lnumber_value(eval(CAR(args)));
     695      int t=lnumber_value(CAR(args)->Eval()); args=lcdr(args);
     696      int x=lnumber_value(CAR(args)->Eval()); args=lcdr(args);
     697      int y=lnumber_value(CAR(args)->Eval()); args=lcdr(args);
     698      int r1=lnumber_value(CAR(args)->Eval()); args=lcdr(args);
     699      int r2=lnumber_value(CAR(args)->Eval()); args=lcdr(args);
     700      int xs=lnumber_value(CAR(args)->Eval()); args=lcdr(args);
     701      int ys=lnumber_value(CAR(args)->Eval());
    702702      return LPointer::Create(add_light_source(t,x,y,r1,r2,xs,ys));
    703703    } break;
     
    714714    case 17 :
    715715    {
    716       long trials=lnumber_value(eval(CAR(args)));
     716      long trials=lnumber_value(CAR(args)->Eval());
    717717      args=CDR(args);
    718718      time_marker start;
     
    720720      {
    721721    clear_tmp();
    722     eval(CAR(args));
     722    CAR(args)->Eval();
    723723      }
    724724      time_marker end;
     
    731731    case 20 :
    732732    {
    733       long x1=lnumber_value(eval(CAR(args))); args=CDR(args);
    734       long y1=lnumber_value(eval(CAR(args))); args=CDR(args);
    735       long x2=lnumber_value(eval(CAR(args))); args=CDR(args);
    736       long y2=lnumber_value(eval(CAR(args))); args=CDR(args);
    737 
    738       void *list=eval(CAR(args));
     733      long x1=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     734      long y1=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     735      long x2=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     736      long y2=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     737
     738      void *list = CAR(args)->Eval();
    739739      game_object *find=current_level->find_object_in_area(current_object->x,
    740740                          current_object->y,
     
    746746    case 21 :
    747747    {
    748       long a1=lnumber_value(eval(CAR(args))); args=CDR(args);
    749       long a2=lnumber_value(eval(CAR(args))); args=CDR(args);
    750 
    751       void *list=eval(CAR(args));
     748      long a1=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     749      long a2=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     750
     751      void *list = CAR(args)->Eval();
    752752      PtrRef r1(list);
    753753      game_object *find=current_level->find_object_in_angle(current_object->x,
     
    787787    case 24 :
    788788    {
    789       int32_t x1=lnumber_value(eval(CAR(args))); args=CDR(args);
    790       int32_t y1=lnumber_value(eval(CAR(args))); args=CDR(args);
    791       int32_t x2=lnumber_value(eval(CAR(args))); args=CDR(args);
    792       int32_t y2=lnumber_value(eval(CAR(args)));
     789      int32_t x1=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     790      int32_t y1=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     791      int32_t x2=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     792      int32_t y2=lnumber_value(CAR(args)->Eval());
    793793      current_level->foreground_intersect(x1,y1,x2,y2);
    794794      void *ret=NULL;
     
    868868    case 46 :
    869869    {
    870       return LString::Create(start_argv[lnumber_value(eval(CAR(args)))]);
     870      return LString::Create(start_argv[lnumber_value(CAR(args)->Eval())]);
    871871    } break;
    872872    case 47 :
     
    901901    case 49 :
    902902    {
    903       int32_t x=lnumber_value(eval(CAR(args))); args=CDR(args);
    904       int32_t y=lnumber_value(eval(CAR(args))); args=CDR(args);
     903      int32_t x=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     904      int32_t y=lnumber_value(CAR(args)->Eval()); args=CDR(args);
    905905
    906906      int32_t rx,ry;
     
    916916    case 50 :
    917917    {
    918       int32_t x=lnumber_value(eval(CAR(args))); args=CDR(args);
    919       int32_t y=lnumber_value(eval(CAR(args))); args=CDR(args);
     918      int32_t x=lnumber_value(CAR(args)->Eval()); args=CDR(args);
     919      int32_t y=lnumber_value(CAR(args)->Eval()); args=CDR(args);
    920920
    921921      int32_t rx,ry;
     
    945945    } break;
    946946    case 55 :
    947     { system(lstring_value(eval(CAR(args)))); } break;
     947    { system(lstring_value(CAR(args)->Eval())); } break;
    948948    case 56 :
    949949    {
    950       void *fn=eval(CAR(args)); args=CDR(args);
     950      void *fn=CAR(args)->Eval(); args=CDR(args);
    951951      char tmp[200];
    952952      {
    953953    PtrRef r1(fn);
    954     char *slash=lstring_value(eval(CAR(args)));
     954    char *slash=lstring_value(CAR(args)->Eval());
    955955    char *filename=lstring_value(fn);
    956956
     
    972972      int tfiles,tdirs,i;
    973973
    974       get_directory(lstring_value(eval(CAR(args))),files,tfiles,dirs,tdirs);
     974      get_directory(lstring_value(CAR(args)->Eval()),files,tfiles,dirs,tdirs);
    975975      void *fl=NULL,*dl=NULL,*rl=NULL;
    976976      {
     
    995995    {
    996996        long x;
    997         sscanf(lstring_value(eval(CAR(args))),"%lx",&x);
     997        sscanf(lstring_value(CAR(args)->Eval()),"%lx",&x);
    998998        return LPointer::Create((void *)(intptr_t)x);
    999999    } break;
     
    10011001    {
    10021002      char name[256],name2[256];
    1003       strcpy(name,lstring_value(eval(CAR(args))));  args=CDR(args);
    1004       long first=lnumber_value(eval(CAR(args)));  args=CDR(args);
    1005       long last=lnumber_value(eval(CAR(args)));
     1003      strcpy(name,lstring_value(CAR(args)->Eval()));  args=CDR(args);
     1004      long first=lnumber_value(CAR(args)->Eval());  args=CDR(args);
     1005      long last=lnumber_value(CAR(args)->Eval());
    10061006      long i;
    10071007      void *ret=NULL;
Note: See TracChangeset for help on using the changeset viewer.