aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/file_8cpp-source.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--docs/doxygen/nel/file_8cpp-source.html592
1 files changed, 592 insertions, 0 deletions
diff --git a/docs/doxygen/nel/file_8cpp-source.html b/docs/doxygen/nel/file_8cpp-source.html
new file mode 100644
index 00000000..6f5e64fd
--- /dev/null
+++ b/docs/doxygen/nel/file_8cpp-source.html
@@ -0,0 +1,592 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : docs</TITLE>
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/GPL.php3" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-gpl.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/GPL.php3" TITLE="License">License</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/docs/"><img src="http://www.nevrax.org/inc/img/t_docs.gif" ALT="Docs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+&nbsp;
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Documentation</B></TD>
+ <TD ALIGN=RIGHT>&nbsp;</td>
+</tr></table>
+<!-- Generated by Doxygen 1.2.14 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="namespacemembers.html">Namespace Members</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; <a class="qindexRef" doxygen="_cgi:http://www.nevrax.org/cgi-bin/nel-search.cgi" href="http://www.nevrax.org/cgi-bin/nel-search.cgi">Search</a> &nbsp; </center>
+<hr><h1>file.cpp</h1><a href="file_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001
+00007 <font class="comment">/* Copyright, 2000 Nevrax Ltd.</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This file is part of NEVRAX NEL.</font>
+00010 <font class="comment"> * NEVRAX NEL is free software; you can redistribute it and/or modify</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2, or (at your option)</font>
+00013 <font class="comment"> * any later version.</font>
+00014 <font class="comment"></font>
+00015 <font class="comment"> * NEVRAX NEL is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"></font>
+00020 <font class="comment"> * You should have received a copy of the GNU General Public License</font>
+00021 <font class="comment"> * along with NEVRAX NEL; see the file COPYING. If not, write to the</font>
+00022 <font class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,</font>
+00023 <font class="comment"> * MA 02111-1307, USA.</font>
+00024 <font class="comment"> */</font>
+00025
+00026 <font class="preprocessor">#include "<a class="code" href="stdmisc_8h.html">stdmisc.h</a>"</font>
+00027
+00028 <font class="preprocessor">#include "<a class="code" href="file_8h.html">nel/misc/file.h</a>"</font>
+00029 <font class="preprocessor">#include "<a class="code" href="debug_8h.html">nel/misc/debug.h</a>"</font>
+00030 <font class="preprocessor">#include "<a class="code" href="big__file_8h.html">nel/misc/big_file.h</a>"</font>
+00031
+00032 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00033
+00034 <font class="keyword">namespace </font>NLMISC
+00035 {
+00036
+<a name="l00037"></a><a class="code" href="classNLMISC_1_1CIFile.html#r0">00037</a> uint32 CIFile::_NbBytesSerialized = 0;
+<a name="l00038"></a><a class="code" href="classNLMISC_1_1CIFile.html#r1">00038</a> uint32 CIFile::_NbBytesLoaded = 0;
+00039
+00040 <font class="comment">// ======================================================================================================</font>
+<a name="l00041"></a><a class="code" href="classNLMISC_1_1CIFile.html#a0">00041</a> CIFile::CIFile() : IStream(true)
+00042 {
+00043 <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> = NULL;
+00044 <a class="code" href="classNLMISC_1_1CIFile.html#o5">_Cache</a> = NULL;
+00045 <a class="code" href="classNLMISC_1_1CIFile.html#o6">_ReadPos</a> = 0;
+00046 <a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a> = 0;
+00047 <a class="code" href="classNLMISC_1_1CIFile.html#o10">_BigFileOffset</a> = 0;
+00048 <a class="code" href="classNLMISC_1_1CIFile.html#o9">_IsInBigFile</a> = <font class="keyword">false</font>;
+00049 <a class="code" href="classNLMISC_1_1CIFile.html#o3">_CacheFileOnOpen</a> = <font class="keyword">false</font>;
+00050 <a class="code" href="classNLMISC_1_1CIFile.html#o2">_IsAsyncLoading</a> = <font class="keyword">false</font>;
+00051 <a class="code" href="classNLMISC_1_1CIFile.html#o4">_AllowBNPCacheFileOnOpen</a>= <font class="keyword">true</font>;
+00052 }
+00053
+00054 <font class="comment">// ======================================================================================================</font>
+<a name="l00055"></a><a class="code" href="classNLMISC_1_1CIFile.html#a1">00055</a> CIFile::CIFile(<font class="keyword">const</font> std::string &amp;path, <font class="keywordtype">bool</font> text) : IStream(true)
+00056 {
+00057 <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>=NULL;
+00058 <a class="code" href="classNLMISC_1_1CIFile.html#o5">_Cache</a> = NULL;
+00059 <a class="code" href="classNLMISC_1_1CIFile.html#o6">_ReadPos</a> = 0;
+00060 <a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a> = 0;
+00061 <a class="code" href="classNLMISC_1_1CIFile.html#o10">_BigFileOffset</a> = 0;
+00062 <a class="code" href="classNLMISC_1_1CIFile.html#o9">_IsInBigFile</a> = <font class="keyword">false</font>;
+00063 <a class="code" href="classNLMISC_1_1CIFile.html#o3">_CacheFileOnOpen</a> = <font class="keyword">false</font>;
+00064 <a class="code" href="classNLMISC_1_1CIFile.html#o2">_IsAsyncLoading</a> = <font class="keyword">false</font>;
+00065 <a class="code" href="classNLMISC_1_1CIFile.html#o4">_AllowBNPCacheFileOnOpen</a>= <font class="keyword">true</font>;
+00066 <a class="code" href="classNLMISC_1_1CIFile.html#a3">open</a>(path, text);
+00067 }
+00068
+00069 <font class="comment">// ======================================================================================================</font>
+<a name="l00070"></a><a class="code" href="classNLMISC_1_1CIFile.html#a2">00070</a> CIFile::~CIFile()
+00071 {
+00072 <a class="code" href="classNLMISC_1_1CIFile.html#a7">close</a>();
+00073 }
+00074
+00075
+00076 <font class="comment">// ======================================================================================================</font>
+<a name="l00077"></a><a class="code" href="classNLMISC_1_1CIFile.html#c0">00077</a> <font class="keywordtype">void</font> CIFile::loadIntoCache()
+00078 {
+00079 <font class="keyword">const</font> uint32 READPACKETSIZE = 64 * 1024;
+00080 <font class="keyword">const</font> uint32 INTERPACKETSLEEP = 5;
+00081
+00082 <a class="code" href="classNLMISC_1_1CIFile.html#o5">_Cache</a> = <font class="keyword">new</font> uint8[<a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a>];
+00083 <font class="keywordflow">if</font>(!<a class="code" href="classNLMISC_1_1CIFile.html#o2">_IsAsyncLoading</a>)
+00084 {
+00085 fread (<a class="code" href="classNLMISC_1_1CIFile.html#o5">_Cache</a>, <a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a>, 1, <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>);
+00086 }
+00087 <font class="keywordflow">else</font>
+00088 {
+00089 uint <a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>= 0;
+00090 <font class="keywordflow">while</font>(<a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>&lt;<a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a>)
+00091 {
+00092 <font class="keywordflow">if</font>( <a class="code" href="classNLMISC_1_1CIFile.html#r1">_NbBytesLoaded</a> + (<a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a>-<a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>) &gt; READPACKETSIZE )
+00093 {
+00094 sint n= READPACKETSIZE-<a class="code" href="classNLMISC_1_1CIFile.html#r1">_NbBytesLoaded</a>;
+00095 n= max(n, 1);
+00096 fread (<a class="code" href="classNLMISC_1_1CIFile.html#o5">_Cache</a>+<a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>, n, 1, <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>);
+00097 <a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>+= n;
+00098
+00099 <a class="code" href="namespaceNLMISC.html#a236">nlSleep</a> (INTERPACKETSLEEP);
+00100 <a class="code" href="classNLMISC_1_1CIFile.html#r1">_NbBytesLoaded</a>= 0;
+00101 }
+00102 <font class="keywordflow">else</font>
+00103 {
+00104 uint n= <a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a>-<a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>;
+00105 fread (<a class="code" href="classNLMISC_1_1CIFile.html#o5">_Cache</a>+<a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>, n, 1, <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>);
+00106 <a class="code" href="classNLMISC_1_1CIFile.html#r1">_NbBytesLoaded</a>+= n;
+00107 <a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>+= n;
+00108 }
+00109 }
+00110 }
+00111 }
+00112
+00113
+00114 <font class="comment">// ======================================================================================================</font>
+<a name="l00115"></a><a class="code" href="classNLMISC_1_1CIFile.html#a3">00115</a> <font class="keywordtype">bool</font> CIFile::open(<font class="keyword">const</font> std::string &amp;path, <font class="keywordtype">bool</font> text)
+00116 {
+00117 <a class="code" href="classNLMISC_1_1CIFile.html#a7">close</a>();
+00118
+00119 <font class="comment">// can't open empty filename</font>
+00120 <font class="keywordflow">if</font>(path.empty ())
+00121 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00122
+00123 <font class="keywordtype">char</font> mode[3];
+00124 mode[0] = <font class="charliteral">'r'</font>;
+00125 mode[1] = (text)?<font class="charliteral">'\0'</font>:<font class="charliteral">'b'</font>;
+00126 mode[2] = <font class="charliteral">'\0'</font>;
+00127
+00128 <a class="code" href="classNLMISC_1_1CIFile.html#o1">_FileName</a> = path;
+00129 <a class="code" href="classNLMISC_1_1CIFile.html#o6">_ReadPos</a> = 0;
+00130
+00131 <font class="comment">// Bigfile access requested ?</font>
+00132 <font class="keywordflow">if</font> (path.find(<font class="charliteral">'@'</font>) != string::npos)
+00133 {
+00134 <a class="code" href="classNLMISC_1_1CIFile.html#o9">_IsInBigFile</a> = <font class="keyword">true</font>;
+00135 <font class="keywordflow">if</font>(_AllowBNPCacheFileOnOpen)
+00136 {
+00137 <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> = CBigFile::getInstance().getFile (path, <a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a>, <a class="code" href="classNLMISC_1_1CIFile.html#o10">_BigFileOffset</a>, <a class="code" href="classNLMISC_1_1CIFile.html#o3">_CacheFileOnOpen</a>, <a class="code" href="classNLMISC_1_1CIFile.html#o8">_AlwaysOpened</a>);
+00138 }
+00139 <font class="keywordflow">else</font>
+00140 {
+00141 <font class="keywordtype">bool</font> dummy;
+00142 <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> = CBigFile::getInstance().getFile (path, <a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a>, <a class="code" href="classNLMISC_1_1CIFile.html#o10">_BigFileOffset</a>, dummy, <a class="code" href="classNLMISC_1_1CIFile.html#o8">_AlwaysOpened</a>);
+00143 }
+00144 <font class="keywordflow">if</font>(<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> != NULL)
+00145 {
+00146 <font class="comment">// Start to load the bigfile at the file offset.</font>
+00147 fseek (<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>, <a class="code" href="classNLMISC_1_1CIFile.html#o10">_BigFileOffset</a>, SEEK_SET);
+00148
+00149 <font class="comment">// Load into cache ?</font>
+00150 <font class="keywordflow">if</font> (_CacheFileOnOpen)
+00151 {
+00152 <font class="comment">// load file in the cache</font>
+00153 <a class="code" href="classNLMISC_1_1CIFile.html#c0">loadIntoCache</a>();
+00154
+00155 <font class="keywordflow">if</font> (!<a class="code" href="classNLMISC_1_1CIFile.html#o8">_AlwaysOpened</a>)
+00156 {
+00157 fclose (<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>);
+00158 <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> = NULL;
+00159 }
+00160 <font class="keywordflow">return</font> (<a class="code" href="classNLMISC_1_1CIFile.html#o5">_Cache</a> != NULL);
+00161 }
+00162 }
+00163 }
+00164 <font class="keywordflow">else</font>
+00165 {
+00166 <a class="code" href="classNLMISC_1_1CIFile.html#o9">_IsInBigFile</a> = <font class="keyword">false</font>;
+00167 <a class="code" href="classNLMISC_1_1CIFile.html#o10">_BigFileOffset</a> = 0;
+00168 <a class="code" href="classNLMISC_1_1CIFile.html#o8">_AlwaysOpened</a> = <font class="keyword">false</font>;
+00169 <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> = fopen (path.c_str(), mode);
+00170 <font class="keywordflow">if</font> (<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> != NULL)
+00171 {
+00172 fseek (<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>, 0, SEEK_END);
+00173 <a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a> = ftell(<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>);
+00174 fseek (<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>, 0, SEEK_SET);
+00175 }
+00176 <font class="keywordflow">else</font>
+00177 {
+00178 <a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a> = 0;
+00179 }
+00180
+00181 <font class="keywordflow">if</font> ((_CacheFileOnOpen) &amp;&amp; (<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> != NULL))
+00182 {
+00183 <font class="comment">// load file in the cache</font>
+00184 <a class="code" href="classNLMISC_1_1CIFile.html#c0">loadIntoCache</a>();
+00185
+00186 fclose (<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>);
+00187 <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> = NULL;
+00188 <font class="keywordflow">return</font> (<a class="code" href="classNLMISC_1_1CIFile.html#o5">_Cache</a> != NULL);
+00189 }
+00190 }
+00191
+00192 <font class="keywordflow">return</font> (<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> != NULL);
+00193 }
+00194
+00195 <font class="comment">// ======================================================================================================</font>
+<a name="l00196"></a><a class="code" href="classNLMISC_1_1CIFile.html#a4">00196</a> <font class="keywordtype">void</font> CIFile::setCacheFileOnOpen (<font class="keywordtype">bool</font> newState)
+00197 {
+00198 <a class="code" href="classNLMISC_1_1CIFile.html#o3">_CacheFileOnOpen</a> = newState;
+00199 }
+00200
+00201 <font class="comment">// ======================================================================================================</font>
+<a name="l00202"></a><a class="code" href="classNLMISC_1_1CIFile.html#a6">00202</a> <font class="keywordtype">void</font> CIFile::setAsyncLoading (<font class="keywordtype">bool</font> newState)
+00203 {
+00204 <a class="code" href="classNLMISC_1_1CIFile.html#o2">_IsAsyncLoading</a> = <font class="keyword">true</font>;
+00205 }
+00206
+00207
+00208 <font class="comment">// ======================================================================================================</font>
+<a name="l00209"></a><a class="code" href="classNLMISC_1_1CIFile.html#a7">00209</a> <font class="keywordtype">void</font> CIFile::close()
+00210 {
+00211 <font class="keywordflow">if</font> (_CacheFileOnOpen)
+00212 {
+00213 <font class="keywordflow">if</font> (_Cache)
+00214 {
+00215 <font class="keyword">delete</font> <a class="code" href="classNLMISC_1_1CIFile.html#o5">_Cache</a>;
+00216 <a class="code" href="classNLMISC_1_1CIFile.html#o5">_Cache</a> = NULL;
+00217 }
+00218 }
+00219 <font class="keywordflow">else</font>
+00220 {
+00221 <font class="keywordflow">if</font> (_IsInBigFile)
+00222 {
+00223 <font class="keywordflow">if</font> (!<a class="code" href="classNLMISC_1_1CIFile.html#o8">_AlwaysOpened</a>)
+00224 {
+00225 <font class="keywordflow">if</font> (_F)
+00226 {
+00227 fclose (<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>);
+00228 <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> = NULL;
+00229 }
+00230 }
+00231 }
+00232 <font class="keywordflow">else</font>
+00233 {
+00234 <font class="keywordflow">if</font> (_F)
+00235 {
+00236 fclose (<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>);
+00237 <a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a> = NULL;
+00238 }
+00239 }
+00240 }
+00241 <a class="code" href="classNLMISC_1_1IStream.html#b7">resetPtrTable</a>();
+00242 }
+00243
+00244 <font class="comment">// ======================================================================================================</font>
+<a name="l00245"></a><a class="code" href="classNLMISC_1_1CIFile.html#a8">00245</a> <font class="keywordtype">void</font> CIFile::flush()
+00246 {
+00247 <font class="keywordflow">if</font> (_CacheFileOnOpen)
+00248 {
+00249 }
+00250 <font class="keywordflow">else</font>
+00251 {
+00252 <font class="keywordflow">if</font> (_F)
+00253 {
+00254 fflush (<a class="code" href="classNLMISC_1_1CIFile.html#o0">_F</a>);
+00255 }
+00256 }
+00257 }
+00258
+00259 <font class="comment">// ======================================================================================================</font>
+<a name="l00260"></a><a class="code" href="classNLMISC_1_1CIFile.html#a12">00260</a> <font class="keywordtype">void</font> CIFile::getline (<font class="keywordtype">char</font> *buffer, uint32 bufferSize)
+00261 {
+00262 <font class="keywordflow">if</font> (bufferSize == 0)
+00263 <font class="keywordflow">return</font>;
+00264
+00265 uint read = 0;
+00266 <font class="keywordflow">while</font> (true)
+00267 {
+00268 <font class="keywordflow">if</font> (read == bufferSize -1)
+00269 {
+00270 *buffer = <font class="charliteral">'\0'</font>;
+00271 <font class="keywordflow">return</font>;
+00272 }
+00273
+00274 <font class="keywordflow">try</font>
+00275 {
+00276 <font class="comment">// read one byte</font>
+00277 <a class="code" href="classNLMISC_1_1CIFile.html#a15">serialBuffer</a> ((uint8 *)buffer, 1);
+00278 }
+00279 <font class="keywordflow">catch</font> (EFile &amp;)
+00280 {
+00281 *buffer = <font class="charliteral">'\0'</font>;
+00282 <font class="keywordflow">return</font>;
+00283 }
+00284
+00285 <font class="keywordflow">if</font> (*buffer == <font class="charliteral">'\n'</font>)
+00286 {
+00287 *buffer = <font class="charliteral">'\0'</font>;
+00288 <font class="keywordflow">return</font>;
+00289 }
+00290
+00291 <font class="comment">// skip '\r' char</font>
+00292 <font class="keywordflow">if</font> (*buffer != <font class="charliteral">'\r'</font>)
+00293 buffer++;
+00294 }
+00295
+00296 }
+00297
+00298
+00299 <font class="comment">// ======================================================================================================</font>
+<a name="l00300"></a><a class="code" href="classNLMISC_1_1CIFile.html#a14">00300</a> <font class="keywordtype">bool</font> CIFile::eof ()
+00301 {
+00302 <font class="keywordflow">return</font> <a class="code" href="classNLMISC_1_1CIFile.html#o6">_ReadPos</a> &gt;= (sint32)<a class="code" href="classNLMISC_1_1CIFile.html#o7">_FileSize</a>;
+00303 }
+00304
+00305 <font class="comment">// ======================================================================================================</font>
+<a name="l00306"></a><a class="code" href="classNLMISC_1_1CIFile.html#a15">00306</a> <font class="keywordtype">void</font> CIFile::serialBuffer(uint8 *buf, uint len) <font class="keywordflow">throw</font>(EReadError)
+00307 {
+00308 <font class="comment">// Check the read pos</font>
+00309 <font class="keywordflow">if</font> ((_ReadPos &lt; 0) || ((_ReadPos+len) &gt; _FileSize))
+00310 <font class="keywordflow">throw</font> EReadError (_FileName);
+00311 <font class="keywordflow">if</font> ((_CacheFileOnOpen) &amp;&amp; (_Cache == NULL))
+00312 <font class="keywordflow">throw</font> EFileNotOpened (_FileName);
+00313 <font class="keywordflow">if</font> ((!_CacheFileOnOpen) &amp;&amp; (_F == NULL))
+00314 <font class="keywordflow">throw</font> EFileNotOpened (_FileName);
+00315
+00316 <font class="keywordflow">if</font> (_IsAsyncLoading)
+00317 {
+00318 _NbBytesSerialized += len;
+00319 <font class="keywordflow">if</font> (_NbBytesSerialized &gt; 64 * 1024)
+00320 {
+00321 <a class="code" href="namespaceNLMISC.html#a236">nlSleep</a> (5);
+00322 _NbBytesSerialized = 0;
+00323 }
+00324 }
+00325
+00326 <font class="keywordflow">if</font> (_CacheFileOnOpen)
+00327 {
+00328 memcpy (buf, _Cache + _ReadPos, len);
+00329 _ReadPos += len;
+00330 }
+00331 <font class="keywordflow">else</font>
+00332 {
+00333 <font class="keywordflow">if</font> (fread(buf, 1, len, _F) &lt; len)
+00334 <font class="keywordflow">throw</font> EReadError(_FileName);
+00335 _ReadPos += len;
+00336 }
+00337 }
+00338
+00339 <font class="comment">// ======================================================================================================</font>
+<a name="l00340"></a><a class="code" href="classNLMISC_1_1CIFile.html#b0">00340</a> <font class="keywordtype">void</font> CIFile::serialBit(<font class="keywordtype">bool</font> &amp;bit) <font class="keywordflow">throw</font>(EReadError)
+00341 {
+00342 <font class="comment">// Simple for now.</font>
+00343 uint8 <a class="code" href="driver__opengl__extension__def_8h.html#a368">v</a>=bit;
+00344 serialBuffer(&amp;<a class="code" href="driver__opengl__extension__def_8h.html#a368">v</a>, 1);
+00345 bit=(<a class="code" href="driver__opengl__extension__def_8h.html#a368">v</a>!=0);
+00346 }
+00347
+00348 <font class="comment">// ======================================================================================================</font>
+<a name="l00349"></a><a class="code" href="classNLMISC_1_1CIFile.html#a9">00349</a> <font class="keywordtype">bool</font> CIFile::seek (sint32 <a class="code" href="driver__opengl__extension__def_8h.html#a378">offset</a>, IStream::TSeekOrigin origin) <font class="keywordflow">throw</font>(EStream)
+00350 {
+00351 <font class="keywordflow">if</font> ((_CacheFileOnOpen) &amp;&amp; (_Cache == NULL))
+00352 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00353 <font class="keywordflow">if</font> ((!_CacheFileOnOpen) &amp;&amp; (_F == NULL))
+00354 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00355
+00356 <font class="keywordflow">switch</font> (origin)
+00357 {
+00358 <font class="keywordflow">case</font> IStream::begin:
+00359 _ReadPos = <a class="code" href="driver__opengl__extension__def_8h.html#a378">offset</a>;
+00360 <font class="keywordflow">break</font>;
+00361 <font class="keywordflow">case</font> IStream::current:
+00362 _ReadPos = _ReadPos + <a class="code" href="driver__opengl__extension__def_8h.html#a378">offset</a>;
+00363 <font class="keywordflow">break</font>;
+00364 <font class="keywordflow">case</font> IStream::end:
+00365 _ReadPos = _FileSize + <a class="code" href="driver__opengl__extension__def_8h.html#a378">offset</a>;
+00366 <font class="keywordflow">break</font>;
+00367 <font class="keywordflow">default</font>:
+00368 <a class="code" href="debug_8h.html#a12">nlstop</a>;
+00369 }
+00370
+00371 <font class="keywordflow">if</font> (_CacheFileOnOpen)
+00372 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00373
+00374 <font class="comment">// seek in the file. NB: if not in bigfile, _BigFileOffset==0.</font>
+00375 <font class="keywordflow">if</font> (fseek(_F, _BigFileOffset+_ReadPos, SEEK_SET) != 0)
+00376 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00377 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00378 }
+00379
+00380 <font class="comment">// ======================================================================================================</font>
+<a name="l00381"></a><a class="code" href="classNLMISC_1_1CIFile.html#a10">00381</a> sint32 CIFile::getPos () <font class="keywordflow">throw</font>(EStream)
+00382 {
+00383 <font class="keywordflow">return</font> _ReadPos;
+00384 }
+00385
+00386
+00387 <font class="comment">// ======================================================================================================</font>
+<a name="l00388"></a><a class="code" href="classNLMISC_1_1CIFile.html#a11">00388</a> std::string CIFile::getStreamName()<font class="keyword"> const</font>
+00389 <font class="keyword"></font>{
+00390 <font class="keywordflow">return</font> <a class="code" href="classNLMISC_1_1CIFile.html#o1">_FileName</a>;
+00391 }
+00392
+00393
+00394 <font class="comment">// ======================================================================================================</font>
+<a name="l00395"></a><a class="code" href="classNLMISC_1_1CIFile.html#a5">00395</a> <font class="keywordtype">void</font> CIFile::allowBNPCacheFileOnOpen(<font class="keywordtype">bool</font> newState)
+00396 {
+00397 <a class="code" href="classNLMISC_1_1CIFile.html#o4">_AllowBNPCacheFileOnOpen</a>= newState;
+00398 }
+00399
+00400
+00401 <font class="comment">// ======================================================================================================</font>
+00402 <font class="comment">// ======================================================================================================</font>
+00403 <font class="comment">// ======================================================================================================</font>
+00404
+00405
+00406 <font class="comment">// ======================================================================================================</font>
+<a name="l00407"></a><a class="code" href="classNLMISC_1_1COFile.html#a0">00407</a> COFile::COFile() : IStream(false)
+00408 {
+00409 <a class="code" href="classNLMISC_1_1COFile.html#o0">_F</a>=NULL;
+00410 <a class="code" href="classNLMISC_1_1COFile.html#o1">_FileName</a> = <font class="stringliteral">""</font>;
+00411 }
+00412
+00413 <font class="comment">// ======================================================================================================</font>
+<a name="l00414"></a><a class="code" href="classNLMISC_1_1COFile.html#a1">00414</a> COFile::COFile(<font class="keyword">const</font> std::string &amp;path, <font class="keywordtype">bool</font> append, <font class="keywordtype">bool</font> text) : IStream(false)
+00415 {
+00416 <a class="code" href="classNLMISC_1_1COFile.html#o0">_F</a>=NULL;
+00417 <a class="code" href="classNLMISC_1_1COFile.html#a3">open</a>(path, append, text);
+00418 }
+00419
+00420 <font class="comment">// ======================================================================================================</font>
+<a name="l00421"></a><a class="code" href="classNLMISC_1_1COFile.html#a2">00421</a> COFile::~COFile()
+00422 {
+00423 <a class="code" href="classNLMISC_1_1COFile.html#a4">close</a>();
+00424 }
+00425 <font class="comment">// ======================================================================================================</font>
+<a name="l00426"></a><a class="code" href="classNLMISC_1_1COFile.html#a3">00426</a> <font class="keywordtype">bool</font> COFile::open(<font class="keyword">const</font> std::string &amp;path, <font class="keywordtype">bool</font> append, <font class="keywordtype">bool</font> text)
+00427 {
+00428 <a class="code" href="classNLMISC_1_1COFile.html#a4">close</a>();
+00429
+00430 <font class="comment">// can't open empty filename</font>
+00431 <font class="keywordflow">if</font>(path.empty ())
+00432 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00433
+00434 <font class="keywordtype">char</font> mode[3];
+00435 mode[0] = (append)?<font class="charliteral">'a'</font>:<font class="charliteral">'w'</font>;
+00436 mode[1] = (text)?<font class="charliteral">'\0'</font>:<font class="charliteral">'b'</font>;
+00437 mode[2] = <font class="charliteral">'\0'</font>;
+00438
+00439 <a class="code" href="classNLMISC_1_1COFile.html#o0">_F</a>=fopen(path.c_str(), mode);
+00440 <a class="code" href="classNLMISC_1_1COFile.html#o1">_FileName</a> = path;
+00441
+00442 <font class="keywordflow">return</font> <a class="code" href="classNLMISC_1_1COFile.html#o0">_F</a>!=NULL;
+00443 }
+00444 <font class="comment">// ======================================================================================================</font>
+<a name="l00445"></a><a class="code" href="classNLMISC_1_1COFile.html#a4">00445</a> <font class="keywordtype">void</font> COFile::close()
+00446 {
+00447 <font class="keywordflow">if</font>(_F)
+00448 {
+00449 fclose(<a class="code" href="classNLMISC_1_1COFile.html#o0">_F</a>);
+00450 <a class="code" href="classNLMISC_1_1COFile.html#o0">_F</a>=NULL;
+00451 }
+00452 <a class="code" href="classNLMISC_1_1IStream.html#b7">resetPtrTable</a>();
+00453 }
+00454 <font class="comment">// ======================================================================================================</font>
+<a name="l00455"></a><a class="code" href="classNLMISC_1_1COFile.html#a5">00455</a> <font class="keywordtype">void</font> COFile::flush()
+00456 {
+00457 <font class="keywordflow">if</font>(_F)
+00458 {
+00459 fflush(<a class="code" href="classNLMISC_1_1COFile.html#o0">_F</a>);
+00460 }
+00461 }
+00462
+00463
+00464 <font class="comment">// ======================================================================================================</font>
+<a name="l00465"></a><a class="code" href="classNLMISC_1_1COFile.html#a9">00465</a> <font class="keywordtype">void</font> COFile::serialBuffer(uint8 *buf, uint len) <font class="keywordflow">throw</font>(EWriteError)
+00466 {
+00467 <font class="keywordflow">if</font>(!_F)
+00468 <font class="keywordflow">throw</font> EFileNotOpened(_FileName);
+00469 <font class="keywordflow">if</font>(fwrite(buf, 1, len, _F) &lt; len)
+00470 <font class="keywordflow">throw</font> EWriteError(_FileName);
+00471 }
+00472 <font class="comment">// ======================================================================================================</font>
+<a name="l00473"></a><a class="code" href="classNLMISC_1_1COFile.html#b0">00473</a> <font class="keywordtype">void</font> COFile::serialBit(<font class="keywordtype">bool</font> &amp;bit) <font class="keywordflow">throw</font>(EWriteError)
+00474 {
+00475 <font class="comment">// Simple for now.</font>
+00476 uint8 <a class="code" href="driver__opengl__extension__def_8h.html#a368">v</a>=bit;
+00477 serialBuffer(&amp;<a class="code" href="driver__opengl__extension__def_8h.html#a368">v</a>, 1);
+00478 }
+00479 <font class="comment">// ======================================================================================================</font>
+<a name="l00480"></a><a class="code" href="classNLMISC_1_1COFile.html#a6">00480</a> <font class="keywordtype">bool</font> COFile::seek (sint32 <a class="code" href="driver__opengl__extension__def_8h.html#a378">offset</a>, IStream::TSeekOrigin origin) <font class="keywordflow">throw</font>(EStream)
+00481 {
+00482 <font class="keywordflow">if</font> (_F)
+00483 {
+00484 <font class="keywordtype">int</font> origin_c = SEEK_SET;
+00485 <font class="keywordflow">switch</font> (origin)
+00486 {
+00487 <font class="keywordflow">case</font> IStream::begin:
+00488 origin_c=SEEK_SET;
+00489 <font class="keywordflow">break</font>;
+00490 <font class="keywordflow">case</font> IStream::current:
+00491 origin_c=SEEK_CUR;
+00492 <font class="keywordflow">break</font>;
+00493 <font class="keywordflow">case</font> IStream::end:
+00494 origin_c=SEEK_END;
+00495 <font class="keywordflow">break</font>;
+00496 <font class="keywordflow">default</font>:
+00497 <a class="code" href="debug_8h.html#a12">nlstop</a>;
+00498 }
+00499
+00500 <font class="keywordflow">if</font> (fseek (_F, <a class="code" href="driver__opengl__extension__def_8h.html#a378">offset</a>, origin_c)!=0)
+00501 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00502 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00503 }
+00504 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00505 }
+00506 <font class="comment">// ======================================================================================================</font>
+<a name="l00507"></a><a class="code" href="classNLMISC_1_1COFile.html#a7">00507</a> sint32 COFile::getPos () <font class="keywordflow">throw</font>(EStream)
+00508 {
+00509 <font class="keywordflow">if</font> (_F)
+00510 {
+00511 <font class="keywordflow">return</font> ftell (_F);
+00512 }
+00513 <font class="keywordflow">return</font> 0;
+00514 }
+00515
+00516 <font class="comment">// ======================================================================================================</font>
+<a name="l00517"></a><a class="code" href="classNLMISC_1_1COFile.html#a8">00517</a> std::string COFile::getStreamName()<font class="keyword"> const</font>
+00518 <font class="keyword"></font>{
+00519 <font class="keywordflow">return</font> <a class="code" href="classNLMISC_1_1COFile.html#o1">_FileName</a>;
+00520 }
+00521
+00522
+00523 }
+</pre></div>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>