Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bad97183153701b09df5fae1052b1c30 > files > 3930

crystalspace-doc-1.2.1-5mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Crystal Space 1.2.1: iVFS Struct Reference (Crystal Space 1.2.1 Public API Reference)</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="head">
 <tr height="59">
  <td class="head" width="202" valign="bottom" style="padding-left:0;"><a href="http://www.crystalspace3d.org/"><img src="csblur.png" width="236" height="59" alt="CrystalSpace" border="0"></a></td>
  <td class="head"><h2>Public API Reference</h2></td>
 </tr>
 <tr height="11">
  <td colspan="2" class="headshadow" valign="top" style="padding-left:0;"><img src="csblurb.png" width="236" height="11" alt="" border="0"></td>
 </tr>
</table>
<div class="content">
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li class="current"><a href="classes.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<div class="tabs">
  <ul>
    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  </ul>
</div>
<h1>iVFS Struct Reference<br>
<small>
[<a class="el" href="group__vfs.html">Virtual File System (VFS)</a>]</small>
</h1><!-- doxytag: class="iVFS" --><!-- doxytag: inherits="iBase" -->The Virtual Filesystem Class is intended to be the only way for Crystal Space engine to access the files.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="vfs_8h-source.html">iutil/vfs.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for iVFS:</div>
<div class="dynsection">
<p><center><img src="structiVFS__inherit__graph.png" border="0" usemap="#iVFS__inherit__map" alt="Inheritance graph"></center>
<map name="iVFS__inherit__map">
<area shape="rect" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one..." alt="" coords="5,7,61,33"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>

<p>
<a href="structiVFS-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#e64c50718db8f5ad41d53363fb5c7f62">ChDir</a> (const char *Path)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set current working directory.  <a href="#e64c50718db8f5ad41d53363fb5c7f62"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#ae2aa2b5133872ad0b99e36777a14613">ChDirAuto</a> (const char *path, const <a class="el" href="classcsStringArray.html">csStringArray</a> *paths=0, const char *vfspath=0, const char *filename=0)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience function to set the current VFS directory to the given path.  <a href="#ae2aa2b5133872ad0b99e36777a14613"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#0216e54878a64b2e0f06326dbccdce8d">DeleteFile</a> (const char *FileName)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete a file on VFS.  <a href="#0216e54878a64b2e0f06326dbccdce8d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#32e2f393865506f11b19602d6a8317b0">Exists</a> (const char *Path) const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether a file exists.  <a href="#32e2f393865506f11b19602d6a8317b0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsPtr.html">csPtr</a><br>
&lt; <a class="el" href="structiDataBuffer.html">iDataBuffer</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#4554c5c58b71bf9a8e847a321cc9d5e1">ExpandPath</a> (const char *Path, bool IsDir=false) const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Expand given virtual path, interpret all "." and ".."'s relative to 'current virtual directory'.  <a href="#4554c5c58b71bf9a8e847a321cc9d5e1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsPtr.html">csPtr</a><br>
&lt; <a class="el" href="structiStringArray.html">iStringArray</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#15ea59531827a8713158ce0d86d6af51">FindFiles</a> (const char *Path) const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find absolute paths of all files in a virtual directory and return an array with their names.  <a href="#15ea59531827a8713158ce0d86d6af51"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#6463219ef5fd533383d9887d3dee4970">GetCwd</a> () const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get current working directory.  <a href="#6463219ef5fd533383d9887d3dee4970"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#6185ce7a8cb8ed32c2651dff76e4a1ca">GetFileSize</a> (const char *FileName, size_t &amp;oSize)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Query file size (without opening it).  <a href="#6185ce7a8cb8ed32c2651dff76e4a1ca"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#649ecd5c1666845a587a26108570b4e8">GetFileTime</a> (const char *FileName, <a class="el" href="structcsFileTime.html">csFileTime</a> &amp;oTime) const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Query file date/time.  <a href="#649ecd5c1666845a587a26108570b4e8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsRef.html">csRef</a><br>
&lt; <a class="el" href="structiStringArray.html">iStringArray</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#1fb70e1f2ffcfddf95421643dabd34bb">GetMounts</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list of all current virtual mount paths.  <a href="#1fb70e1f2ffcfddf95421643dabd34bb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsRef.html">csRef</a><br>
&lt; <a class="el" href="structiStringArray.html">iStringArray</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#0d9e9847b2f485237455a48f8ae9a0b5">GetRealMountPaths</a> (const char *VirtualPath)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the real paths associated with a mount.  <a href="#0d9e9847b2f485237455a48f8ae9a0b5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsPtr.html">csPtr</a><br>
&lt; <a class="el" href="structiDataBuffer.html">iDataBuffer</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#7351c1bf1ed9cf7b9aa17b0ad716468a">GetRealPath</a> (const char *FileName)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Query real-world path from given VFS path.  <a href="#7351c1bf1ed9cf7b9aa17b0ad716468a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#295be4436c5c9851e3c29b1dcf0632a1">LoadMountsFromFile</a> (<a class="el" href="structiConfigFile.html">iConfigFile</a> *file)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Loads mounts from a configuration file.  <a href="#295be4436c5c9851e3c29b1dcf0632a1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#9b7868aa50296cc265f2155db59d949f">Mount</a> (const char *VirtualPath, const char *RealPath)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mount an VFS path on a "real-world-filesystem" path.  <a href="#9b7868aa50296cc265f2155db59d949f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsRef.html">csRef</a><br>
&lt; <a class="el" href="structiStringArray.html">iStringArray</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#f21bcf2a97b88d09abe77a724e044b77">MountRoot</a> (const char *VirtualPath)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mount the root directory or directories beneath the given virtual path.  <a href="#f21bcf2a97b88d09abe77a724e044b77"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt; <a class="el" href="structiFile.html">iFile</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#6d46cd7b7eefd7c4e8e7281394baf581">Open</a> (const char *FileName, int Mode)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a file on the VFS filesystem.  <a href="#6d46cd7b7eefd7c4e8e7281394baf581"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#d3724c40aa44864cfd3ed8c12417552b">PopDir</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pop current directory.  <a href="#d3724c40aa44864cfd3ed8c12417552b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#539171b809a9a4f12dd7be330d0d36f0">PushDir</a> (char const *Path=0)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Push current directory and optionally change to a different directory.  <a href="#539171b809a9a4f12dd7be330d0d36f0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsPtr.html">csPtr</a><br>
&lt; <a class="el" href="structiDataBuffer.html">iDataBuffer</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#093140ef4e298090bc80a09794a2adbc">ReadFile</a> (const char *FileName, bool nullterm=true)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get an entire file at once.  <a href="#093140ef4e298090bc80a09794a2adbc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#8d6c1e1b5017fb7f08ae2a35c9a67879">SaveMounts</a> (const char *FileName)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save current configuration back into configuration file.  <a href="#8d6c1e1b5017fb7f08ae2a35c9a67879"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#24c2110148f811cd6293c066e33ebbbd">SetFileTime</a> (const char *FileName, const <a class="el" href="structcsFileTime.html">csFileTime</a> &amp;iTime)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set file date/time.  <a href="#24c2110148f811cd6293c066e33ebbbd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#5369f998bd4365de414def1ff3761424">SymbolicLink</a> (const char *Target, const char *Link=0, int priority=0)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create or add a symbolic link within the VFS (works like unix 'ln -s' command) If the link already exists, then the target will be added to the link At the moment just remounts it at `Target'.  <a href="#5369f998bd4365de414def1ff3761424"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#9864dda3ba04d3485d01e188fc4ec306">Sync</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close all opened archives, free temporary storage etc.  <a href="#9864dda3ba04d3485d01e188fc4ec306"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#437201152b29b7cd2c33ee0bd8d18911">Unmount</a> (const char *VirtualPath, const char *RealPath)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unmount a VFS path.  <a href="#437201152b29b7cd2c33ee0bd8d18911"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiVFS.html#c8e6f08e3297b4da1a7e3771996eba32">WriteFile</a> (const char *Name, const char *Data, size_t Size)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write an entire file in one pass.  <a href="#c8e6f08e3297b4da1a7e3771996eba32"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The Virtual Filesystem Class is intended to be the only way for Crystal Space engine to access the files. 
<p>
This gives unified control over the way how files are found, read and written. VFS gives the following goodies over the standard file i/o functions:<ul>
<li>Multiple search directories. Several "real" directories can be collected together into one "virtual" directory.</li><li>Directories can be mapped to "real" directories as well as to archives (.zip files). Files are compressed/decompressed transparently for clients.</li><li>The Virtual File System is unique across all operating systems Crystal Space supports, no matter of features of the underlying OS.</li></ul>
<p>
This class has only most basic features of a real filesystem: file reading and writing (no simultaneous read and write mode are allowed because it would be rather complex to implement it for archives). However, most programs don't even need such functionality, and for sure Crystal Space itself doesn't need it. Files open for writing are always truncated. A simple meaning for getting a list of files in a virtual directory is implemented; however the user is presented with only a list of file names; no fancy things like file size, time etc (file size can be determined after opening it for reading).<p>
Main creators of instances implementing this interface:<ul>
<li>The VFS plugin (crystalspace.kernel.vfs)</li></ul>
<p>
Main ways to get pointers to this interface:<ul>
<li><a class="el" href="iutil_2objreg_8h.html#2a09063f1dabdde133a6269016f6a3da">CS_QUERY_REGISTRY()</a> </li></ul>

<p>Definition at line <a class="el" href="vfs_8h-source.html#l00205">205</a> of file <a class="el" href="vfs_8h-source.html">vfs.h</a>.</p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="e64c50718db8f5ad41d53363fb5c7f62"></a><!-- doxytag: member="iVFS::ChDir" ref="e64c50718db8f5ad41d53363fb5c7f62" args="(const char *Path)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::ChDir           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>Path</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set current working directory. 
<p>

</div>
</div><p>
<a class="anchor" name="ae2aa2b5133872ad0b99e36777a14613"></a><!-- doxytag: member="iVFS::ChDirAuto" ref="ae2aa2b5133872ad0b99e36777a14613" args="(const char *path, const csStringArray *paths=0, const char *vfspath=0, const char *filename=0)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::ChDirAuto           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsStringArray.html">csStringArray</a> *&nbsp;</td>
          <td class="paramname"> <em>paths</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>vfspath</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>filename</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convenience function to set the current VFS directory to the given path. 
<p>
The path can be any of the following:<ul>
<li>A valid VFS path. In that case this is equivalent to calling ChDir(path).</li><li>A real path (using '/', '\', or '$/' for path delimiter). In this case this path will be mounted on the 'vfspath' parameter and a ChDir(vfspath) will happen.</li><li>A real path to a zip file. In this case the zip file will be mounted on the 'vfspath' parameter and a ChDir(vfspath) will happen.</li></ul>
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>is the path to mount (VFS, real, zip, ...) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>paths</em>&nbsp;</td><td>is an array of possible vfs paths to also look in for the given file. This can an empty array or 0. If not empty then this routine will first try to find the 'path' as such if it is a VFS path. Otherwise it will scan all paths here and add the path as a prefix. Only if all this fails will it try to interprete the input path as a real world dir or zip file. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>vfspath</em>&nbsp;</td><td>is the temporary name to use in case it is not a vfs path. If not given then this routine will try to use a suitable temporary name. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>filename</em>&nbsp;</td><td>is an optional filename that must be present on the given path. If this is given then the chdir will only work if the given file is present. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="0216e54878a64b2e0f06326dbccdce8d"></a><!-- doxytag: member="iVFS::DeleteFile" ref="0216e54878a64b2e0f06326dbccdce8d" args="(const char *FileName)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::DeleteFile           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>FileName</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete a file on VFS. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the deletion succeeded, else false. </dd></dl>

</div>
</div><p>
<a class="anchor" name="32e2f393865506f11b19602d6a8317b0"></a><!-- doxytag: member="iVFS::Exists" ref="32e2f393865506f11b19602d6a8317b0" args="(const char *Path) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::Exists           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>Path</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check whether a file exists. 
<p>

</div>
</div><p>
<a class="anchor" name="4554c5c58b71bf9a8e847a321cc9d5e1"></a><!-- doxytag: member="iVFS::ExpandPath" ref="4554c5c58b71bf9a8e847a321cc9d5e1" args="(const char *Path, bool IsDir=false) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt;<a class="el" href="structiDataBuffer.html">iDataBuffer</a>&gt; iVFS::ExpandPath           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>Path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>IsDir</em> = <code>false</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Expand given virtual path, interpret all "." and ".."'s relative to 'current virtual directory'. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>Path</em>&nbsp;</td><td>The path to expand. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>IsDir</em>&nbsp;</td><td>If true, the expanded path will be terminated with '/'. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A new <a class="el" href="structiDataBuffer.html" title="The iDataBuffer interface can be used to exchange buffers with abstract data between...">iDataBuffer</a> object. </dd></dl>

</div>
</div><p>
<a class="anchor" name="15ea59531827a8713158ce0d86d6af51"></a><!-- doxytag: member="iVFS::FindFiles" ref="15ea59531827a8713158ce0d86d6af51" args="(const char *Path) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt;<a class="el" href="structiStringArray.html">iStringArray</a>&gt; iVFS::FindFiles           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>Path</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find absolute paths of all files in a virtual directory and return an array with their names. 
<p>

</div>
</div><p>
<a class="anchor" name="6463219ef5fd533383d9887d3dee4970"></a><!-- doxytag: member="iVFS::GetCwd" ref="6463219ef5fd533383d9887d3dee4970" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* iVFS::GetCwd           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get current working directory. 
<p>

</div>
</div><p>
<a class="anchor" name="6185ce7a8cb8ed32c2651dff76e4a1ca"></a><!-- doxytag: member="iVFS::GetFileSize" ref="6185ce7a8cb8ed32c2651dff76e4a1ca" args="(const char *FileName, size_t &amp;oSize)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::GetFileSize           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>FileName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t &amp;&nbsp;</td>
          <td class="paramname"> <em>oSize</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Query file size (without opening it). 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the query succeeded, else false. </dd></dl>

</div>
</div><p>
<a class="anchor" name="649ecd5c1666845a587a26108570b4e8"></a><!-- doxytag: member="iVFS::GetFileTime" ref="649ecd5c1666845a587a26108570b4e8" args="(const char *FileName, csFileTime &amp;oTime) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::GetFileTime           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>FileName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structcsFileTime.html">csFileTime</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>oTime</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Query file date/time. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the query succeeded, else false. </dd></dl>

</div>
</div><p>
<a class="anchor" name="1fb70e1f2ffcfddf95421643dabd34bb"></a><!-- doxytag: member="iVFS::GetMounts" ref="1fb70e1f2ffcfddf95421643dabd34bb" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsRef.html">csRef</a>&lt;<a class="el" href="structiStringArray.html">iStringArray</a>&gt; iVFS::GetMounts           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get a list of all current virtual mount paths. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>An <a class="el" href="structiStringArray.html" title="This is an SCF-compatible interface for csStringArray.">iStringArray</a> containing all the current virtual mounts </dd></dl>

</div>
</div><p>
<a class="anchor" name="0d9e9847b2f485237455a48f8ae9a0b5"></a><!-- doxytag: member="iVFS::GetRealMountPaths" ref="0d9e9847b2f485237455a48f8ae9a0b5" args="(const char *VirtualPath)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsRef.html">csRef</a>&lt;<a class="el" href="structiStringArray.html">iStringArray</a>&gt; iVFS::GetRealMountPaths           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>VirtualPath</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the real paths associated with a mount. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>VirtualPath</em>&nbsp;</td><td>The virtual path of a mount point </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>An <a class="el" href="structiStringArray.html" title="This is an SCF-compatible interface for csStringArray.">iStringArray</a> containing all the real filesystem paths associated with the VirtualPath mount, or an empty array if the VirtualPath isn't mounted. </dd></dl>

</div>
</div><p>
<a class="anchor" name="7351c1bf1ed9cf7b9aa17b0ad716468a"></a><!-- doxytag: member="iVFS::GetRealPath" ref="7351c1bf1ed9cf7b9aa17b0ad716468a" args="(const char *FileName)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt;<a class="el" href="structiDataBuffer.html">iDataBuffer</a>&gt; iVFS::GetRealPath           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>FileName</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Query real-world path from given VFS path. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>FileName</em>&nbsp;</td><td>The virtual path for which the physical path is desired. </td></tr>
  </table>
</dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This will work only for files that are stored on real filesystem, not in archive files. You should expect this function to return an invalidated <a class="el" href="structiDataBuffer.html" title="The iDataBuffer interface can be used to exchange buffers with abstract data between...">iDataBuffer</a> for filesystems which do not support this operation. </dd></dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>An <a class="el" href="structiDataBuffer.html" title="The iDataBuffer interface can be used to exchange buffers with abstract data between...">iDataBuffer</a> containing the actual physical path corresponding to the virtual path named by FileName, or an invalidated <a class="el" href="structiDataBuffer.html" title="The iDataBuffer interface can be used to exchange buffers with abstract data between...">iDataBuffer</a> if the operation fails or is not supported. Use <a class="el" href="classcsRef.html#620198af96e2f744bab6207d9c546ed8" title="Smart pointer validity check.">csRef&lt;&gt;::IsValid()</a> to check validity. </dd></dl>

</div>
</div><p>
<a class="anchor" name="295be4436c5c9851e3c29b1dcf0632a1"></a><!-- doxytag: member="iVFS::LoadMountsFromFile" ref="295be4436c5c9851e3c29b1dcf0632a1" args="(iConfigFile *file)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::LoadMountsFromFile           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structiConfigFile.html">iConfigFile</a> *&nbsp;</td>
          <td class="paramname"> <em>file</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Loads mounts from a configuration file. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if no error occured, false otherwise. </dd></dl>

</div>
</div><p>
<a class="anchor" name="9b7868aa50296cc265f2155db59d949f"></a><!-- doxytag: member="iVFS::Mount" ref="9b7868aa50296cc265f2155db59d949f" args="(const char *VirtualPath, const char *RealPath)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::Mount           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>VirtualPath</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>RealPath</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Mount an VFS path on a "real-world-filesystem" path. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>VirtualPath</em>&nbsp;</td><td>The location in the virtual filesystem in which to mount RealPath. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>RealPath</em>&nbsp;</td><td>The physical filesystem path to mount at VirtualPath. All VFS pseudo-variables and anything that appears in the right-hand side of an equal sign in vfs.cfg is valid. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the mount succeeded, else false. </dd></dl>

</div>
</div><p>
<a class="anchor" name="f21bcf2a97b88d09abe77a724e044b77"></a><!-- doxytag: member="iVFS::MountRoot" ref="f21bcf2a97b88d09abe77a724e044b77" args="(const char *VirtualPath)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsRef.html">csRef</a>&lt;<a class="el" href="structiStringArray.html">iStringArray</a>&gt; iVFS::MountRoot           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>VirtualPath</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Mount the root directory or directories beneath the given virtual path. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A list of absolute virtual pathnames mounted by this operation. </dd></dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>On Unix, there is only a single root directory, but on other platforms there may be many. For example, on Unix, if VirtualPath is "/native", then the single Unix root directory "/" will be mounted directly to "/native". On Windows, which has multiple root directories, one for each drive letter, they will be mounted as "/native/a/", "/native/c/", "/native/d/", and so on. </dd></dl>

</div>
</div><p>
<a class="anchor" name="6d46cd7b7eefd7c4e8e7281394baf581"></a><!-- doxytag: member="iVFS::Open" ref="6d46cd7b7eefd7c4e8e7281394baf581" args="(const char *FileName, int Mode)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt;<a class="el" href="structiFile.html">iFile</a>&gt; iVFS::Open           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>FileName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>Mode</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Open a file on the VFS filesystem. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>FileName</em>&nbsp;</td><td>The VFS path of the file in the VFS filesystem. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>Mode</em>&nbsp;</td><td>Combination of VFS_FILE_XXX constants. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A valid <a class="el" href="structiFile.html" title="A replacement for FILE type in the virtual file space.">iFile</a> if the file was opened successfully, otherwise an invalidated <a class="el" href="structiFile.html" title="A replacement for FILE type in the virtual file space.">iFile</a>. Use <a class="el" href="classcsRef.html#620198af96e2f744bab6207d9c546ed8" title="Smart pointer validity check.">csRef&lt;&gt;::IsValid()</a> to check validity. </dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__vfs.html#g8e6b141a580423e1d638b6964c8ebfdc" title="File open mode mask.">VFS_FILE_MODE</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="d3724c40aa44864cfd3ed8c12417552b"></a><!-- doxytag: member="iVFS::PopDir" ref="d3724c40aa44864cfd3ed8c12417552b" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::PopDir           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Pop current directory. 
<p>
Set the current working directory to the one most recently pushed. <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if there was a remembered directory and the invocation of <a class="el" href="structiVFS.html#e64c50718db8f5ad41d53363fb5c7f62" title="Set current working directory.">ChDir()</a> for the remembered directory succeeded; else false if there was no remembered directory, or <a class="el" href="structiVFS.html#e64c50718db8f5ad41d53363fb5c7f62" title="Set current working directory.">ChDir()</a> failed. </dd></dl>

</div>
</div><p>
<a class="anchor" name="539171b809a9a4f12dd7be330d0d36f0"></a><!-- doxytag: member="iVFS::PushDir" ref="539171b809a9a4f12dd7be330d0d36f0" args="(char const *Path=0)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iVFS::PushDir           </td>
          <td>(</td>
          <td class="paramtype">char const *&nbsp;</td>
          <td class="paramname"> <em>Path</em> = <code>0</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Push current directory and optionally change to a different directory. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>Path</em>&nbsp;</td><td>Path which should become the new working directory after the current directory is remembered. May be null. </td></tr>
  </table>
</dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>If Path is not the null pointer, then current working directory is remembered and Path is set as the new working directory. If Path is the null pointer, then the current working directory is remembered, but not changed. </dd></dl>

</div>
</div><p>
<a class="anchor" name="093140ef4e298090bc80a09794a2adbc"></a><!-- doxytag: member="iVFS::ReadFile" ref="093140ef4e298090bc80a09794a2adbc" args="(const char *FileName, bool nullterm=true)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt;<a class="el" href="structiDataBuffer.html">iDataBuffer</a>&gt; iVFS::ReadFile           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>FileName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>nullterm</em> = <code>true</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get an entire file at once. 
<p>
This is more effective than opening files and reading the file in blocks. Note that the returned buffer can be null-terminated (so that it can be conveniently used with string functions) but the extra null-terminator is not counted as part of the returned size. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>FileName</em>&nbsp;</td><td>VFS path of the file to be read. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nullterm</em>&nbsp;</td><td>Null-terminate the returned buffer. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>An <a class="el" href="structiDataBuffer.html" title="The iDataBuffer interface can be used to exchange buffers with abstract data between...">iDataBuffer</a> containing the file contents if the file was opened and read successfully, otherwise a null reference. Use <a class="el" href="classcsRef.html#620198af96e2f744bab6207d9c546ed8" title="Smart pointer validity check.">csRef&lt;&gt;::IsValid()</a> to check validity. </dd></dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Null-termination might have a performance penalty (dependent on where the file is stored). Use only when needed. </dd></dl>

</div>
</div><p>
<a class="anchor" name="8d6c1e1b5017fb7f08ae2a35c9a67879"></a><!-- doxytag: member="iVFS::SaveMounts" ref="8d6c1e1b5017fb7f08ae2a35c9a67879" args="(const char *FileName)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::SaveMounts           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>FileName</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Save current configuration back into configuration file. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the operation succeeded, else false. </dd></dl>

</div>
</div><p>
<a class="anchor" name="24c2110148f811cd6293c066e33ebbbd"></a><!-- doxytag: member="iVFS::SetFileTime" ref="24c2110148f811cd6293c066e33ebbbd" args="(const char *FileName, const csFileTime &amp;iTime)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::SetFileTime           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>FileName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structcsFileTime.html">csFileTime</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>iTime</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set file date/time. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the operation succeeded, else false. </dd></dl>

</div>
</div><p>
<a class="anchor" name="5369f998bd4365de414def1ff3761424"></a><!-- doxytag: member="iVFS::SymbolicLink" ref="5369f998bd4365de414def1ff3761424" args="(const char *Target, const char *Link=0, int priority=0)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::SymbolicLink           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>Target</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>Link</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>priority</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create or add a symbolic link within the VFS (works like unix 'ln -s' command) If the link already exists, then the target will be added to the link At the moment just remounts it at `Target'. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>Target</em>&nbsp;</td><td>The target that the link will point to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>Link</em>&nbsp;</td><td>The path of the link within the VFS, if this is 0 then the link will be created in the current directory with the same name as the target </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>priority</em>&nbsp;</td><td>Currently unused </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if successful, else false. </dd></dl>

</div>
</div><p>
<a class="anchor" name="9864dda3ba04d3485d01e188fc4ec306"></a><!-- doxytag: member="iVFS::Sync" ref="9864dda3ba04d3485d01e188fc4ec306" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::Sync           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Close all opened archives, free temporary storage etc. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the synchronization succeeded, else false. </dd></dl>

</div>
</div><p>
<a class="anchor" name="437201152b29b7cd2c33ee0bd8d18911"></a><!-- doxytag: member="iVFS::Unmount" ref="437201152b29b7cd2c33ee0bd8d18911" args="(const char *VirtualPath, const char *RealPath)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::Unmount           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>VirtualPath</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>RealPath</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unmount a VFS path. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>VirtualPath</em>&nbsp;</td><td>The location in the virtual filesystem which is to be unmounted. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>RealPath</em>&nbsp;</td><td>The physical filesystem path corresponding to the virtual path. </td></tr>
  </table>
</dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>A single virtual path may represent multiple physical locations; in which case, the physical locations appear as a conglomerate in the virtual filesystem. The RealPath argument allows unmounting of just a single location represented by the given VirtualPath. If RealPath is the null pointer, then all physical locations represented by VirtualPath are umounted. </dd></dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the unmount succeeded, else false. </dd></dl>

</div>
</div><p>
<a class="anchor" name="c8e6f08e3297b4da1a7e3771996eba32"></a><!-- doxytag: member="iVFS::WriteFile" ref="c8e6f08e3297b4da1a7e3771996eba32" args="(const char *Name, const char *Data, size_t Size)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iVFS::WriteFile           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>Name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>Data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>Size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Write an entire file in one pass. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>Name</em>&nbsp;</td><td>Name of file to write. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>Data</em>&nbsp;</td><td>Pointer to the data to be written. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>Size</em>&nbsp;</td><td>Number of bytes to write. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the write succeeded, else false. </dd></dl>

</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>iutil/<a class="el" href="vfs_8h-source.html">vfs.h</a></ul>
<hr size="1"><address><small>Generated for Crystal Space 1.2.1 by 
<a href="http://www.doxygen.org/index.html">doxygen</a> 1.5.3 
</small></address> </div></body> </html>