Changeset 6ee09c3569acd94dbc293973755507f3c558b54d
- 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
-
|
r884107f
|
r6ee09c3
|
|
| 60 | 60 | case TYPE_INTEGER: |
| 61 | 61 | Crl_Lookup_Object_DEF( def, "Int", &context ); |
| | 62 | break; |
| | 63 | |
| | 64 | case TYPE_SYMBOL_NIL: |
| 62 | 65 | break; |
| 63 | 66 | |
-
|
r01d0791
|
r6ee09c3
|
|
| 336 | 336 | if( sym->type == SYMBOL_PRIMARY ) |
| 337 | 337 | { |
| 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 ) |
| 339 | 347 | { |
| 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 | | |
| 376 | 348 | case TYPE_SYMBOL_NIL: |
| 377 | 349 | fprintf( fd, "<SYMBOL NIL>" ); |
| … |
… |
|
| 380 | 352 | |
| 381 | 353 | 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; |
| 385 | 357 | struct crl_type_obj_def_t ** d = o->definition; |
| 386 | 358 | bool (*__print_hook)( void *, FILE *, bool ) = (*d)->print_hook; |
| … |
… |
|
| 392 | 364 | { |
| 393 | 365 | fprintf( fd, "instance of <%s> at <%p>!", o->identifier, |
| 394 | | (void *)sym ); |
| | 366 | (void *)pr ); |
| 395 | 367 | } |
| 396 | 368 | } |
| … |
… |
|
| 399 | 371 | default: |
| 400 | 372 | crl_error("unhandled symbol operand type '0x%X'!\n", |
| 401 | | sym->op_a_t); exec= false; |
| | 373 | pr->op_a_t); exec= false; |
| 402 | 374 | break; |
| 403 | 375 | } |