
  UFO::AM VFS_LIB v0.1
  ---------------------------------------------------------------------------------------

  This library is not a product of Altar Interactive, and it should not be associated 
  with them. You may freely make use of this lib in your application, and if you do so i
  would love to hear about it. 

  There may be errors and bugs left, and i cant make any guarantees about the correctness
  of this lib. Use it at your own risk. However, ive successfully used it for all of my
  tools, so it shoud be reliable.

  The interface is built using the abstract factory pattern. In which the app is shown
  empty abstract classes that define the visible interface. The gory details are hidden
  behind these and the app need not concern itself with them. Actually its a rather 
  small project and if you decide to dig under the surface it shouldnt take long to 
  figure out. 
  
  The interface's an app will use are defined in vfs_lib.h and all the internals are in
  internal.h. The source was made using MSVC 7.0 and it might not be easy to port it
  (but why would you want to?).
  
  Features:
  
    Intuitive object oriented interface, no gory details exported.
  
    Usage tracking, a file that is in use and the directories in which it is located are
    locked until the file is closed.
    
    Read-Only operations, a vfs and individual contained files can be opened in 
    read-only mode.
    
    Error checking, the lib was written to provide solid error reporting. Its not built
    on exception handling but you could easily add this on top of the lib.
  
  Semantics:
  
    Uses the same general semantics employed by operating systems, or at least that was
    the goal.

    Paths, ascii chars from 32 to 126, dont know if this is what Altar intended but it
    seems natural.
    
    CreateDirectory, can only create one new level.
    
    RemoveDirectory, can only delete empty directories.
    
  Todo:
  
    There are a some minor things spread out over the files that need to be fixed. I 
    just havent got around to do it. But they're clearly commented in the source.
    
    Version string length, this is fixed to 256, when it should be variable, 
    would be easy to fix.
    
    Real compressed file support, the current implementation uses a memory pool that it
    compresses and saved when the file is closed. A better solution would be to write
    as soon as a window has been submitted. I started such an implementation but i 
    couldnt get it working.

  Additions and contributions are most welcome, if you extended or fixed something in
  the source, send it to me so i can incorporate it.

  This lib has a sort of COM-feel over it. This was not my original intention, but as i
  worked to make it better and better, this is what it grew into. It might seem a little
  too complicated to some at first but i think it'll grow on you. 

  ---------------------------------------------------------------------------------------
  
  sigget
  2003-11-16
  sigget@hotbrev.com 
  www.geocities.com/sigget2003
  
