Mercurial > repos > rhope
comparison file.c @ 26:20d40cb8abf3
Added Get Double@File
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 26 Jun 2009 17:23:20 -0400 |
parents | 94c885692eb5 |
children |
comparison
equal
deleted
inserted
replaced
24:8b2b3f4a2a58 | 26:20d40cb8abf3 |
---|---|
469 file->offset += sizeof(long); | 469 file->offset += sizeof(long); |
470 } | 470 } |
471 return 0; | 471 return 0; |
472 } | 472 } |
473 | 473 |
474 int vis_file_get_double(datum ** inputlist, queue_entry * worker_entry) | |
475 { | |
476 file_data * file; | |
477 BOOL eof; | |
478 double num; | |
479 | |
480 inputlist[0] = copy_datum(inputlist[0], 0); | |
481 file = (file_data *)inputlist[0]->c.generic.data; | |
482 VIS_EnterCriticalSection(file->shared->lock); | |
483 if(!(eof = (file->offset >= file->shared->size))) | |
484 { | |
485 vis_file_read_open_check(file); | |
486 fread(&num,sizeof(num),1, file->shared->file); | |
487 } | |
488 VIS_LeaveCriticalSection(file->shared->lock); | |
489 if(eof) | |
490 { | |
491 release_ref(inputlist[0]); | |
492 inputlist[0] = inputlist[1] = NULL; | |
493 inputlist[2] = new_datum(BUILTIN_TYPE_YESNO, 2, 0, worker_entry->instance->def->program); | |
494 datum_set_yesno(inputlist[2], 1); | |
495 } | |
496 else | |
497 { | |
498 inputlist[1] = new_datum(BUILTIN_TYPE_REAL, 3, 0, worker_entry->instance->def->program); | |
499 inputlist[1]->c.real = num; | |
500 inputlist[2] = NULL; | |
501 file->offset += sizeof(num); | |
502 } | |
503 return 0; | |
504 } | |
505 | |
474 void vis_file_write_open_check(file_data * file) | 506 void vis_file_write_open_check(file_data * file) |
475 { | 507 { |
476 switch(file->shared->status) | 508 switch(file->shared->status) |
477 { | 509 { |
478 case FILE_READ: | 510 case FILE_READ: |