Changeset 6ee09c3569acd94dbc293973755507f3c558b54d

Show
Ignore:
Timestamp:
06/05/10 02:21:28 (2 years ago)
Author:
redbrain <redbrain@…>
Parents:
793409fd1483fd649438e950a0311aceba612d58
Children:
4791bff1093bb1fefdb805fc38e2097b9fba992c
git-committer:
redbrain <redbrain@crules.org> / 2010-06-05T02:21:28Z+0100
Message:

refactors for handling the standard library and external modules

Files:
3 added
2 modified
2 moved

Legend:

Unmodified
Added
Removed
  • src/rr_bin_eval.c

    r884107f r6ee09c3  
    6060    case TYPE_INTEGER: 
    6161      Crl_Lookup_Object_DEF( def, "Int", &context ); 
     62      break; 
     63 
     64    case TYPE_SYMBOL_NIL: 
    6265      break; 
    6366 
  • src/rr_runtime.c

    r01d0791 r6ee09c3  
    336336  if( sym->type == SYMBOL_PRIMARY ) 
    337337    { 
    338       switch( sym->op_a_t ) 
     338      crl_symbol_obj *pr = sym; 
     339      if( pr->op_a_t != TYPE_OBJECT ) 
     340        { 
     341          crl_symbol_obj *ff = crl_rr_literal_fold( pr, context ); 
     342          pr = ff; 
     343          ff->n_ref--; 
     344        } 
     345 
     346      switch( pr->op_a_t ) 
    339347        { 
    340         case TYPE_INTEGER: 
    341           fprintf( fd, "%li", sym->op_a.integer ); 
    342           exec= true; 
    343           break; 
    344  
    345         case TYPE_FLOAT: 
    346           fprintf( fd, "%Lf", sym->op_a.floating_point ); 
    347           exec= true; 
    348           break; 
    349  
    350         case TYPE_CHAR: 
    351           fprintf( fd, "%c", sym->op_a.character ); 
    352           exec= false; 
    353           break; 
    354  
    355         case TYPE_STRING: 
    356           fprintf( fd, "\"%s\"", sym->op_a.string ); 
    357           exec= true; 
    358           break; 
    359  
    360         case TYPE_BOOLEAN: 
    361           if( sym->op_a.boolean == true ) 
    362             { 
    363               fprintf( fd, "true" ); 
    364             } 
    365           else 
    366             { 
    367               fprintf( fd, "false" ); 
    368             } 
    369           break; 
    370  
    371         case TYPE_LIST: 
    372           crl_fatal("not imeplemented yet!\n"); 
    373           exec= true; 
    374           break; 
    375  
    376348        case TYPE_SYMBOL_NIL: 
    377349          fprintf( fd, "<SYMBOL NIL>" ); 
     
    380352 
    381353        case TYPE_OBJECT: 
    382           if( sym ) 
    383             { 
    384               crl_obj_state_t *o = sym->op_a.object_state; 
     354          if( pr ) 
     355            { 
     356              crl_obj_state_t *o = pr->op_a.object_state; 
    385357              struct crl_type_obj_def_t ** d = o->definition; 
    386358              bool (*__print_hook)( void *, FILE *, bool ) = (*d)->print_hook; 
     
    392364                { 
    393365                  fprintf( fd, "instance of <%s> at <%p>!", o->identifier, 
    394                            (void *)sym ); 
     366                           (void *)pr ); 
    395367                } 
    396368            } 
     
    399371        default: 
    400372          crl_error("unhandled symbol operand type '0x%X'!\n", 
    401                     sym->op_a_t); exec= false; 
     373                    pr->op_a_t); exec= false; 
    402374          break; 
    403375        }