
On 5/18/06, Beman Dawes <bdawes@acm.org> wrote:
* It isn't possible for a regular file implementation to efficiently support non-constant iterators, because there is no way to tell when a buffer has been written into, and thus must be rewritten to disk. An update() function is needed. It can be a no-op on memory-mapped implementations.
We probably should, something like fflush() in C library. And it may not necessarily be no-op for MMF, because there are syncronization routines for this facility, so it might make sense to use them.
* Note that a regular file implementation of an STL iterator based interface may be more efficient than fread/fwrite, because unnecessary copying of data is eliminated. I'm really curious to see timings on this.
Highly unlikely, but we will perform the test and post the results.
* Your design uses a class template for the record type, so is limited to files containing a single type. Real files often contain a mix of types. By use of member templates, it is easy to support files containing a mixture of types. If that isn't clear, I can post an example of an experimental interface that does so.
This seems to be a burning question, and could significantly affect implementation.. Could you please post an example ASAP ?
That should be enough to start discussion!
--Beman
-- Svyatoslav Trukhanov, Oleksii Ursulenko