From: <c.f...@gm...> - 2006-09-19 22:00:35
|
Hi Dirk, Dirk Reiners wrote: > Marcus Lindblom wrote: > >> I see. I would assume it uses the PathHandler, so that should be >> extended into an istreamhandler etc? >> >> > That's where I got stuck, too, the last time I looked into this. > > Yes, I think, this is a natural generalization. The istreamhandler could also create a local temporary if required and do some bookkeeping, which files have been accessed for a scene. > I wouldn't mind rethinking the File IO structure for 2 and having a more > flexible system that allows things like relative data loaded from > archives like zips or from other sources like FTP servers or the web. > There are some systems that do similar things, like PhysFS or Parrot > (http://www.cse.nd.edu/~ccl/software/parrot/), and we might want to look > into them for inspiration. On Linux there is Fuse (fuse.sf.net), but > that would be hard to port to other systems. > > Oh, along the lines of virtual file systems there is also http://witme.sourceforge.net/libferris.web/features.html (linux only) which is called semantic virtual file system, as it also holds metadata gathered from the file source and the file header/contents itself. But I guess, all those are quite system dependent. > The big problem with those is the ability to use other, existing code, > as most existing loaders either use FILEs (if they're C) or iostreams > (if they're C++). iostreams can be wrapped, but I don't know if any > existing fs abstractions do that. > > I do not know if it is worth it to redirect or to emulate plain Cs FILE* behaviour (like downloading the required file to a local temporary and then open as a FILE* ..). Without a virtual file system approach those loaders would always require modification. With istreams it seems easier. The library boost.asio pointed out by Allen seems to fit in nicely here with boost.iostreams. I need to get some practice with it. Currently, there are some loaders which open additional streams during loading besides the one passed in. > Input welcome > > Dirk > Regards, Christoph |