Mercurial > repos > rhope
diff 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 |
line wrap: on
line diff
--- a/file.c Wed Jun 24 23:56:49 2009 -0400 +++ b/file.c Fri Jun 26 17:23:20 2009 -0400 @@ -471,6 +471,38 @@ return 0; } +int vis_file_get_double(datum ** inputlist, queue_entry * worker_entry) +{ + file_data * file; + BOOL eof; + double num; + + inputlist[0] = copy_datum(inputlist[0], 0); + file = (file_data *)inputlist[0]->c.generic.data; + VIS_EnterCriticalSection(file->shared->lock); + if(!(eof = (file->offset >= file->shared->size))) + { + vis_file_read_open_check(file); + fread(&num,sizeof(num),1, file->shared->file); + } + VIS_LeaveCriticalSection(file->shared->lock); + if(eof) + { + release_ref(inputlist[0]); + inputlist[0] = inputlist[1] = NULL; + inputlist[2] = new_datum(BUILTIN_TYPE_YESNO, 2, 0, worker_entry->instance->def->program); + datum_set_yesno(inputlist[2], 1); + } + else + { + inputlist[1] = new_datum(BUILTIN_TYPE_REAL, 3, 0, worker_entry->instance->def->program); + inputlist[1]->c.real = num; + inputlist[2] = NULL; + file->offset += sizeof(num); + } + return 0; +} + void vis_file_write_open_check(file_data * file) { switch(file->shared->status)