|
|
@ -34,10 +34,12 @@ void chunk_array_flush(chunk_array_t* chunk_array) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void buffer_flush(chunk_array_t* chunk_array, buffer_t* buffer) {
|
|
|
|
void buffer_flush(chunk_array_t* chunk_array, buffer_t* buffer) {
|
|
|
|
|
|
|
|
if (buffer->dirty) {
|
|
|
|
int mod = get_mod(chunk_array, buffer->init_pos);
|
|
|
|
int mod = get_mod(chunk_array, buffer->init_pos);
|
|
|
|
fseek(chunk_array->fp, buffer->init_pos * sizeof(double), SEEK_SET);
|
|
|
|
fseek(chunk_array->fp, buffer->init_pos * sizeof(double), SEEK_SET);
|
|
|
|
fwrite(buffer->data, sizeof(double), mod, chunk_array->fp);
|
|
|
|
fwrite(buffer->data, sizeof(double), mod, chunk_array->fp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void buffer_update(chunk_array_t* chunk_array, buffer_t* buffer, size_t pos) {
|
|
|
|
void buffer_update(chunk_array_t* chunk_array, buffer_t* buffer, size_t pos) {
|
|
|
@ -63,6 +65,7 @@ buffer_t* buffer_create() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
buffer->init_pos = 0;
|
|
|
|
buffer->init_pos = 0;
|
|
|
|
|
|
|
|
buffer->dirty = false;
|
|
|
|
|
|
|
|
|
|
|
|
return buffer;
|
|
|
|
return buffer;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -157,5 +160,6 @@ bool chunk_array_save(chunk_array_t* chunk_array, size_t pos, double valor) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
int real_pos = pos%get_mod(chunk_array, buffer->init_pos);
|
|
|
|
int real_pos = pos%get_mod(chunk_array, buffer->init_pos);
|
|
|
|
buffer->data[real_pos]=valor;
|
|
|
|
buffer->data[real_pos]=valor;
|
|
|
|
|
|
|
|
buffer->dirty = true;
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|