Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 68d373e54fb21da3730c08bede406633 > files > 766

libCommonC++1.9_3-devel-1.9.4-2mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>file.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.2.5 on Thu Oct 4 15:32:58 2001 -->
<center>
<a class="qindex" href="index.html">Main Page</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="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>file.h</h1><a href="file_h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">// Copyright (C) 1999-2001 Open Source Telecom Corporation.</font>
00002 <font class="comment">//  </font>
00003 <font class="comment">// This program is free software; you can redistribute it and/or modify</font>
00004 <font class="comment">// it under the terms of the GNU General Public License as published by</font>
00005 <font class="comment">// the Free Software Foundation; either version 2 of the License, or</font>
00006 <font class="comment">// (at your option) any later version.</font>
00007 <font class="comment">// </font>
00008 <font class="comment">// This program is distributed in the hope that it will be useful,</font>
00009 <font class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</font>
00010 <font class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</font>
00011 <font class="comment">// GNU General Public License for more details.</font>
00012 <font class="comment">// </font>
00013 <font class="comment">// You should have received a copy of the GNU General Public License</font>
00014 <font class="comment">// along with this program; if not, write to the Free Software </font>
00015 <font class="comment">// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</font>
00016 <font class="comment">// </font>
00017 <font class="comment">// As a special exception to the GNU General Public License, permission is </font>
00018 <font class="comment">// granted for additional uses of the text contained in its release </font>
00019 <font class="comment">// of Common C++.</font>
00020 <font class="comment">// </font>
00021 <font class="comment">// The exception is that, if you link the Common C++ library with other</font>
00022 <font class="comment">// files to produce an executable, this does not by itself cause the</font>
00023 <font class="comment">// resulting executable to be covered by the GNU General Public License.</font>
00024 <font class="comment">// Your use of that executable is in no way restricted on account of</font>
00025 <font class="comment">// linking the Common C++ library code into it.</font>
00026 <font class="comment">// </font>
00027 <font class="comment">// This exception does not however invalidate any other reasons why</font>
00028 <font class="comment">// the executable file might be covered by the GNU General Public License.</font>
00029 <font class="comment">// </font>
00030 <font class="comment">// This exception applies only to the code released under the </font>
00031 <font class="comment">// name Common C++.  If you copy code from other releases into a copy of</font>
00032 <font class="comment">// Common C++, as the General Public License permits, the exception does</font>
00033 <font class="comment">// not apply to the code that you add in this way.  To avoid misleading</font>
00034 <font class="comment">// anyone as to the status of such modified files, you must delete</font>
00035 <font class="comment">// this exception notice from them.</font>
00036 <font class="comment">// </font>
00037 <font class="comment">// If you write modifications of your own for Common C++, it is your choice</font>
00038 <font class="comment">// whether to permit this exception to apply to your modifications.</font>
00039 <font class="comment">// If you do not wish that, delete this exception notice.  </font>
00040 
00041 <font class="preprocessor">#ifndef __CCXX_FILE_H__</font>
00042 <font class="preprocessor"></font><font class="preprocessor">#define __CCXX_FILE_H__</font>
00043 <font class="preprocessor"></font>
00044 <font class="preprocessor">#ifndef __CCXX_THREAD_H__</font>
00045 <font class="preprocessor"></font><font class="preprocessor">#include &lt;cc++/<a class="code" href="thread_h.html">thread.h</a>&gt;</font>
00046 <font class="preprocessor">#else</font>
00047 <font class="preprocessor"></font><font class="preprocessor">#ifdef  __CCXX_NAMESPACE_H__</font>
00048 <font class="preprocessor"></font><font class="preprocessor">#include &lt;cc++/<a class="code" href="macros_h.html">macros.h</a>&gt;</font>
00049 <font class="preprocessor">#endif</font>
00050 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
00051 <font class="preprocessor"></font>
00052 <font class="preprocessor">#include &lt;cstdio&gt;</font>
00053 <font class="preprocessor">#include &lt;dirent.h&gt;</font>
00054 <font class="preprocessor">#include &lt;sys/stat.h&gt;</font>
00055 <font class="preprocessor">#include &lt;sys/mman.h&gt;</font>
00056 <font class="preprocessor">#include &lt;iostream&gt;</font>
00057 <font class="preprocessor">#include &lt;fstream&gt;</font>
00058 
<a name="l00059"></a><a class="code" href="file_h.html#a0">00059</a> <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> pos_t;
00060 
<a name="l00061"></a><a class="code" href="struct__fcb.html">00061</a> <font class="keyword">typedef</font> <font class="keyword">struct </font><a class="code" href="struct__fcb.html">_fcb</a>
00062 {
<a name="l00063"></a><a class="code" href="struct__fcb.html#m0">00063</a>         <font class="keyword">struct </font><a class="code" href="struct__fcb.html">_fcb</a> *next;
<a name="l00064"></a><a class="code" href="struct__fcb.html#m1">00064</a>         caddr_t address;
<a name="l00065"></a><a class="code" href="struct__fcb.html#m2">00065</a>         size_t len;
<a name="l00066"></a><a class="code" href="struct__fcb.html#m3">00066</a>         off_t pos;
00067 } <a class="code" href="struct__fcb.html">fcb_t</a>;
00068 
00069 <font class="keyword">enum</font>
00070 {
00071         FILE_OPEN_READONLY = O_RDONLY,
00072         FILE_OPEN_WRITEONLY = O_WRONLY,
00073         FILE_OPEN_READWRITE = O_RDWR,
00074         FILE_OPEN_APPEND = O_WRONLY | O_APPEND,
00075 
00076 <font class="preprocessor">#ifdef  O_SYNC</font>
00077 <font class="preprocessor"></font>        FILE_OPEN_SYNC = O_RDWR | O_SYNC,
00078 <font class="preprocessor">#else</font>
00079 <font class="preprocessor"></font>        FILE_OPEN_SYNC = O_RDWR,
00080 <font class="preprocessor">#endif</font>
00081 <font class="preprocessor"></font>        FILE_OPEN_TRUNCATE = O_RDWR | O_TRUNC
00082 };
00083 
00084 <font class="comment">/* to be used in future */</font>
00085 
00086 <font class="preprocessor">#ifndef S_IRUSR</font>
00087 <font class="preprocessor"></font><font class="preprocessor">#define S_IRUSR 0400</font>
00088 <font class="preprocessor"></font><font class="preprocessor">#define S_IWUSR 0200</font>
00089 <font class="preprocessor"></font><font class="preprocessor">#define S_IRGRP 0040</font>
00090 <font class="preprocessor"></font><font class="preprocessor">#define S_IWGRP 0020</font>
00091 <font class="preprocessor"></font><font class="preprocessor">#define S_IROTH 0004</font>
00092 <font class="preprocessor"></font><font class="preprocessor">#define S_IWOTH 0002</font>
00093 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
00094 <font class="preprocessor"></font>
<a name="l00095"></a><a class="code" href="file_h.html#a38">00095</a> <font class="keyword">typedef</font> <font class="keyword">enum</font>
00096 {
00097         FILE_ATTR_INVALID = 0,
00098         FILE_ATTR_PRIVATE = S_IRUSR | S_IWUSR,
00099         FILE_ATTR_GROUP = FILE_ATTR_PRIVATE | S_IRGRP | S_IWGRP,
00100         FILE_ATTR_PUBLIC = FILE_ATTR_GROUP | S_IROTH | S_IWOTH
00101 } fileattr_t;
00102 
<a name="l00103"></a><a class="code" href="file_h.html#a39">00103</a> <font class="keyword">typedef</font> <font class="keyword">enum</font>
00104 {
00105         FILE_SUCCESS = 0,
00106         FILE_NOT_OPENED,
00107         FILE_MAP_FAILED,
00108         FILE_INIT_FAILED,
00109         FILE_OPEN_DENIED,
00110         FILE_OPEN_FAILED,
00111         FILE_OPEN_INUSE,
00112         FILE_READ_INTERRUPTED,
00113         FILE_READ_INCOMPLETE,
00114         FILE_READ_FAILURE,
00115         FILE_WRITE_INTERRUPTED,
00116         FILE_WRITE_INCOMPLETE,
00117         FILE_WRITE_FAILURE,
00118         FILE_EXTENDED_ERROR
00119 } fileerror_t;
00120 
<a name="l00121"></a><a class="code" href="file_h.html#a40">00121</a> <font class="keyword">typedef</font> <font class="keyword">enum</font>
00122 {
00123         FILE_ACCESS_READONLY = O_RDONLY,
00124         FILE_ACCESS_WRITEONLY= O_WRONLY,
00125         FILE_ACCESS_READWRITE = O_RDWR
00126 } fileaccess_t;
00127 
00128 <font class="preprocessor">#define FILE_MAPPED_READ        FILE_ACCESS_READONLY</font>
00129 <font class="preprocessor"></font><font class="preprocessor">#define FILE_MAPPED_WRITE       FILE_ACCESS_WRITEONLY</font>
00130 <font class="preprocessor"></font><font class="preprocessor">#define FILE_MAPPED_RDWR        FILE_ACCESS_READWRITE</font>
00131 <font class="preprocessor"></font>
<a name="l00132"></a><a class="code" href="file_h.html#a41">00132</a> <font class="keyword">typedef</font> <font class="keyword">enum</font>
00133 {
00134         FILE_COMPLETION_IMMEDIATE,
00135         FILE_COMPLETION_DELAYED,
00136         FILE_COMPLETION_DEFERRED
00137 } filecomplete_t;
00138 
<a name="l00147"></a><a class="code" href="class_fifostream.html">00147</a> <font class="keyword">class </font><a class="code" href="class_fifostream.html">fifostream</a> : <font class="keyword">public</font> std::fstream
00148 {
00149 <font class="keyword">private</font>:
00150         <font class="keywordtype">char</font> *pathname;
00151 
00152 <font class="keyword">public</font>:
00157         <a class="code" href="class_fifostream.html#a0">fifostream</a>();
00158 
00164         <a class="code" href="class_fifostream.html#a0">fifostream</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *fname, <font class="keywordtype">long</font> access = (<font class="keywordtype">long</font>)FILE_ATTR_GROUP);
00165 
00169         <a class="code" href="class_fifostream.html#a2">~fifostream</a>();
00170 
00177         <font class="keywordtype">void</font> <a class="code" href="class_fifostream.html#a3">open</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *fname, <font class="keywordtype">long</font> access = (<font class="keywordtype">long</font>)FILE_ATTR_GROUP);
00178 
00182         <font class="keywordtype">void</font> <a class="code" href="class_fifostream.html#a4">close</a>(<font class="keywordtype">void</font>);
00183 };
00184 
<a name="l00190"></a><a class="code" href="class_fifosession.html">00190</a> <font class="keyword">class </font><a class="code" href="class_fifosession.html">FIFOSession</a> : <font class="keyword">public</font> <a class="code" href="class_thread.html">Thread</a>, <font class="keyword">public</font> std::fstream
00191 {
00192 <font class="keyword">private</font>:
00193         <font class="keywordtype">char</font> *pathname;
00194 
00195 <font class="keyword">public</font>:
00196         <a class="code" href="class_fifosession.html#a0">FIFOSession</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *session, <font class="keywordtype">long</font> access = (<font class="keywordtype">long</font>)FILE_ATTR_GROUP, <a class="code" href="class_semaphore.html">Semaphore</a> *start = NULL, <font class="keywordtype">int</font> pri = 0, <font class="keywordtype">int</font> stack = 0);
00197         <a class="code" href="class_fifosession.html#a1">~FIFOSession</a>();
00198 };
00199 
<a name="l00208"></a><a class="code" href="class_dir.html">00208</a> <font class="keyword">class </font><a class="code" href="class_dir.html">Dir</a>
00209 {
00210 <font class="keyword">private</font>:
00211         DIR *dir;
00212 
00213 <font class="keyword">public</font>:
00214         <a class="code" href="class_dir.html#a0">Dir</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *name);
00215         <a class="code" href="class_dir.html#a1">~Dir</a>();
00216 
00217         <font class="keywordtype">char</font> *<a class="code" href="class_dir.html#a2">getName</a>(<font class="keywordtype">void</font>);
00218 
<a name="l00219"></a><a class="code" href="class_dir.html#a3">00219</a>         <font class="keywordtype">bool</font> <a class="code" href="class_dir.html#a3">operator!</a>()<font class="keyword"></font>
00220 <font class="keyword">                </font>{<font class="keywordflow">return</font> !dir;};
00221 
00222         <font class="keywordtype">bool</font> <a class="code" href="class_dir.html#a4">isValid</a>(<font class="keywordtype">void</font>);
00223 };
00224 
<a name="l00235"></a><a class="code" href="class_randomfile.html">00235</a> <font class="keyword">class </font><a class="code" href="class_randomfile.html">RandomFile</a> : <font class="keyword">public</font> <a class="code" href="class_mutex.html">Mutex</a>
00236 {
00237 <font class="keyword">private</font>:
00238         fileerror_t errid;
00239         <font class="keywordtype">char</font> *errstr;
00240 
00241 <font class="keyword">protected</font>:
<a name="l00242"></a><a class="code" href="class_randomfile.html#n0">00242</a>         <font class="keywordtype">int</font> fd;
<a name="l00243"></a><a class="code" href="class_randomfile.html#n1">00243</a>         fileaccess_t access;
<a name="l00244"></a><a class="code" href="class_randomfile.html#n2">00244</a>         <font class="keywordtype">char</font> *pathname;
00245 
00246         <font class="keyword">struct</font>
00247 <font class="keyword">        </font>{
<a name="l00248"></a><a class="code" href="class_randomfile.html#n3">00248</a>                 <font class="keywordtype">unsigned</font> count : 16;
<a name="l00249"></a><a class="code" href="class_randomfile.html#n4">00249</a>                 <font class="keywordtype">bool</font> thrown : 1;
<a name="l00250"></a><a class="code" href="class_randomfile.html#n5">00250</a>                 <font class="keywordtype">bool</font> initial : 1;
<a name="l00251"></a><a class="code" href="class_randomfile.html#n6">00251</a>                 <font class="keywordtype">bool</font> immediate : 1;
<a name="l00252"></a><a class="code" href="class_randomfile.html#n7">00252</a>                 <font class="keywordtype">bool</font> temp : 1;
00253         } flags;
00254 
00258         <a class="code" href="class_randomfile.html#b0">RandomFile</a>();
00259 
00263         <a class="code" href="class_randomfile.html#b0">RandomFile</a>(<font class="keyword">const</font> <a class="code" href="class_randomfile.html">RandomFile</a> &amp;rf);
00264 
00272         fileerror_t <a class="code" href="class_randomfile.html#b2">Error</a>(fileerror_t errid, <font class="keywordtype">char</font> *errstr = NULL);
00273         
<a name="l00280"></a><a class="code" href="class_randomfile.html#b3">00280</a>         <font class="keyword">inline</font> fileerror_t <a class="code" href="class_randomfile.html#b2">Error</a>(<font class="keywordtype">char</font> *errstr)<font class="keyword"></font>
00281 <font class="keyword">                </font>{<font class="keywordflow">return</font> <a class="code" href="class_randomfile.html#b2">Error</a>(FILE_EXTENDED_ERROR, errstr);};
00282 
<a name="l00289"></a><a class="code" href="class_randomfile.html#b4">00289</a>         <font class="keyword">inline</font> <font class="keywordtype">void</font> <a class="code" href="class_randomfile.html#b4">setError</a>(<font class="keywordtype">bool</font> enable)<font class="keyword"></font>
00290 <font class="keyword">                </font>{flags.thrown = !enable;};
00291 
00298         fileerror_t <a class="code" href="class_randomfile.html#b5">setCompletion</a>(filecomplete_t mode);
00299 
<a name="l00306"></a><a class="code" href="class_randomfile.html#b6">00306</a>         <font class="keyword">inline</font> <font class="keywordtype">void</font> <a class="code" href="class_randomfile.html#b6">setTemporary</a>(<font class="keywordtype">bool</font> enable)<font class="keyword"></font>
00307 <font class="keyword">                </font>{flags.temp = enable;};
00308 
<a name="l00320"></a><a class="code" href="class_randomfile.html#b7">00320</a>         <font class="keyword">virtual</font> fileattr_t <a class="code" href="class_randomfile.html#b7">Initialize</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00321 <font class="keyword">                </font>{<font class="keywordflow">return</font> FILE_ATTR_PUBLIC;};
00322 
00326         <font class="keywordtype">void</font> <a class="code" href="class_thread.html#b2">Final</a>(<font class="keywordtype">void</font>);
00327 
00328 <font class="keyword">public</font>:
<a name="l00332"></a><a class="code" href="class_randomfile.html#a0">00332</a>         <font class="keyword">virtual</font> <a class="code" href="class_randomfile.html#a0">~RandomFile</a>()<font class="keyword"></font>
00333 <font class="keyword">                </font>{<a class="code" href="class_thread.html#b2">Final</a>();};
00334 
00343         <font class="keywordtype">bool</font> <a class="code" href="class_thread.html#b3">Initial</a>(<font class="keywordtype">void</font>);
00344 
00350         off_t <a class="code" href="class_randomfile.html#a2">getCapacity</a>(<font class="keywordtype">void</font>);
00351 
<a name="l00357"></a><a class="code" href="class_randomfile.html#a3">00357</a>         <font class="keyword">virtual</font> fileerror_t <a class="code" href="class_randomfile.html#a3">Restart</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00358 <font class="keyword">                </font>{<font class="keywordflow">return</font> FILE_OPEN_FAILED;};
00359 
<a name="l00365"></a><a class="code" href="class_randomfile.html#a4">00365</a>         <font class="keyword">inline</font> fileerror_t <a class="code" href="class_randomfile.html#a4">getErrorNumber</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00366 <font class="keyword">                </font>{<font class="keywordflow">return</font> errid;};
00367 
<a name="l00373"></a><a class="code" href="class_randomfile.html#a5">00373</a>         <font class="keyword">inline</font> <font class="keywordtype">char</font> *<a class="code" href="class_randomfile.html#a5">getErrorString</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00374 <font class="keyword">                </font>{<font class="keywordflow">return</font> errstr;};
00375 
00376         <font class="keywordtype">bool</font> <a class="code" href="class_randomfile.html#a6">operator!</a>(<font class="keywordtype">void</font>);
00377 };
00378 
<a name="l00398"></a><a class="code" href="class_threadfile.html">00398</a> <font class="keyword">class </font><a class="code" href="class_threadfile.html">ThreadFile</a> : <font class="keyword">public</font> <a class="code" href="class_randomfile.html">RandomFile</a>
00399 {
00400 <font class="keyword">private</font>:
00401         <a class="code" href="class_threadkey.html">ThreadKey</a> state;
00402         <a class="code" href="struct__fcb.html">fcb_t</a> *first;
00403         <a class="code" href="struct__fcb.html">fcb_t</a> *getFCB(<font class="keywordtype">void</font>);
00404         fileerror_t Open(<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
00405 
00406 <font class="keyword">public</font>:
00413         <a class="code" href="class_threadfile.html#a0">ThreadFile</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
00414 
00418         <a class="code" href="class_threadfile.html#a1">~ThreadFile</a>();
00419 
<a name="l00425"></a><a class="code" href="class_threadfile.html#a2">00425</a>         fileerror_t <a class="code" href="class_randomfile.html#a3">Restart</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00426 <font class="keyword">                </font>{<font class="keywordflow">return</font> Open(pathname);};
00427 
00437         fileerror_t <a class="code" href="class_threadfile.html#a3">Fetch</a>(caddr_t address = NULL, size_t length = 0, off_t position = - 1);
00438 
00448         fileerror_t <a class="code" href="class_threadfile.html#a4">Update</a>(caddr_t address = NULL, size_t length = 0, off_t position = -1);
00449 
00455         fileerror_t <a class="code" href="class_threadfile.html#a5">Append</a>(caddr_t address = NULL, size_t length = 0);
00456 
00462         off_t <a class="code" href="class_threadfile.html#a6">getPosition</a>(<font class="keywordtype">void</font>);
00463         
00464         <font class="keywordtype">bool</font> <a class="code" href="thread_h.html#a34">operator++</a>(<font class="keywordtype">void</font>);
00465         <font class="keywordtype">bool</font> <a class="code" href="thread_h.html#a35">operator--</a>(<font class="keywordtype">void</font>);
00466 };
00467 
<a name="l00482"></a><a class="code" href="class_sharedfile.html">00482</a> <font class="keyword">class </font><a class="code" href="class_sharedfile.html">SharedFile</a> : <font class="keyword">public</font> <a class="code" href="class_randomfile.html">RandomFile</a>
00483 {
00484 <font class="keyword">private</font>:
00485         <a class="code" href="struct__fcb.html">fcb_t</a> fcb;
00486         fileerror_t Open(<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
00487 
00488 <font class="keyword">public</font>:
00496         <a class="code" href="class_sharedfile.html#a0">SharedFile</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
00497 
00504         <a class="code" href="class_sharedfile.html#a0">SharedFile</a>(<font class="keyword">const</font> <a class="code" href="class_sharedfile.html">SharedFile</a> &amp;file);
00505 
00509         <a class="code" href="class_sharedfile.html#a2">~SharedFile</a>();
00510 
<a name="l00516"></a><a class="code" href="class_sharedfile.html#a3">00516</a>         fileerror_t <a class="code" href="class_randomfile.html#a3">Restart</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00517 <font class="keyword">                </font>{<font class="keywordflow">return</font> Open(pathname);};
00518 
00529         fileerror_t <a class="code" href="class_sharedfile.html#a4">Fetch</a>(caddr_t address = NULL, size_t length = 0, off_t position = - 1);
00530 
00541         fileerror_t <a class="code" href="class_sharedfile.html#a5">Update</a>(caddr_t address = NULL, size_t length = 0, off_t position = -1);
00542 
00551         fileerror_t <a class="code" href="class_sharedfile.html#a6">Clear</a>(size_t length = 0, off_t pos = -1);
00552 
00559         fileerror_t <a class="code" href="class_sharedfile.html#a7">Append</a>(caddr_t address = NULL, size_t length = 0);
00560 
00566         off_t <a class="code" href="class_sharedfile.html#a8">getPosition</a>(<font class="keywordtype">void</font>);
00567         
00568         <font class="keywordtype">bool</font> <a class="code" href="thread_h.html#a34">operator++</a>(<font class="keywordtype">void</font>);
00569         <font class="keywordtype">bool</font> <a class="code" href="thread_h.html#a35">operator--</a>(<font class="keywordtype">void</font>);
00570 };
00571 
<a name="l00582"></a><a class="code" href="class_mappedfile.html">00582</a> <font class="keyword">class </font><a class="code" href="class_mappedfile.html">MappedFile</a> : <font class="keyword">public</font> <a class="code" href="class_randomfile.html">RandomFile</a>
00583 {
00584 <font class="keyword">private</font>:
00585         <a class="code" href="struct__fcb.html">fcb_t</a> fcb;
00586         <font class="keywordtype">int</font> prot;
00587 
00588 <font class="keyword">public</font>:
00596         <a class="code" href="class_mappedfile.html#a0">MappedFile</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *fname, fileaccess_t mode);
00597 
00608         <a class="code" href="class_mappedfile.html#a0">MappedFile</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *fname, pos_t offset, size_t size, fileaccess_t mode);    
00609         
00614         <font class="keyword">virtual</font> <a class="code" href="class_mappedfile.html#a2">~MappedFile</a>();
00615 
<a name="l00621"></a><a class="code" href="class_mappedfile.html#a3">00621</a>         <font class="keyword">inline</font> <font class="keywordtype">void</font> <a class="code" href="class_mappedfile.html#a3">Sync</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00622 <font class="keyword">                </font>{msync(fcb.address, fcb.len, MS_SYNC);};
00623 
00630         <font class="keywordtype">void</font> <a class="code" href="class_mappedfile.html#a3">Sync</a>(caddr_t address, size_t len);
00631 
00640         <font class="keywordtype">void</font> <a class="code" href="class_mappedfile.html#a5">Update</a>(size_t offset = 0, size_t len = 0);
00641 
00649         <font class="keywordtype">void</font> <a class="code" href="class_mappedfile.html#a5">Update</a>(caddr_t address, size_t len);
00650 
00657         <font class="keywordtype">void</font> <a class="code" href="class_mappedfile.html#a7">Release</a>(caddr_t address, size_t len);
00658 
<a name="l00667"></a><a class="code" href="class_mappedfile.html#a8">00667</a>         <font class="keyword">inline</font> caddr_t <a class="code" href="class_mappedfile.html#a8">Fetch</a>(size_t offset = 0)<font class="keyword"></font>
00668 <font class="keyword">                </font>{<font class="keywordflow">return</font> ((<font class="keywordtype">char</font> *)(fcb.address)) + offset;};
00669 
00678         caddr_t <a class="code" href="class_mappedfile.html#a8">Fetch</a>(off_t pos, size_t len);
00679 };
00680 
<a name="l00697"></a><a class="code" href="class_pipe.html">00697</a> <font class="keyword">class </font><a class="code" href="class_pipe.html">Pipe</a>
00698 {
00699 <font class="keyword">private</font>:
00700         <font class="keywordtype">int</font> fd[2];
00701         <font class="keywordtype">int</font> objcount;
00702         <font class="keywordtype">int</font> objsize;
00703 
00704 <font class="keyword">protected</font>:
<a name="l00710"></a><a class="code" href="class_pipe.html#b0">00710</a>         <font class="keyword">inline</font> <font class="keywordtype">int</font> <a class="code" href="class_pipe.html#b0">getSize</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00711 <font class="keyword">                </font>{<font class="keywordflow">return</font> objsize;};
00712 
<a name="l00721"></a><a class="code" href="class_pipe.html#b1">00721</a>         <font class="keyword">inline</font> <font class="keywordtype">void</font> <a class="code" href="class_pipe.html#b1">endSender</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00722 <font class="keyword">                </font>{close(fd[1]);};
<a name="l00731"></a><a class="code" href="class_pipe.html#b2">00731</a>         <font class="keyword">inline</font> <font class="keywordtype">void</font> <a class="code" href="class_pipe.html#b2">endReceiver</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00732 <font class="keyword">                </font>{close(fd[0]);};
00733 
00744         <a class="code" href="class_pipe.html#b3">Pipe</a>(<font class="keywordtype">int</font> size = 512, <font class="keywordtype">int</font> count = 1);
00745 
00749         <a class="code" href="class_pipe.html#b4">~Pipe</a>();
00750 
00756         <a class="code" href="class_pipe.html#b3">Pipe</a>(<font class="keyword">const</font> <a class="code" href="class_pipe.html">Pipe</a> &amp;orig);
00757 
00758         <a class="code" href="class_pipe.html">Pipe</a> &amp;<a class="code" href="class_pipe.html#b6">operator=</a>(<font class="keyword">const</font> <a class="code" href="class_pipe.html">Pipe</a> &amp;orig);
00759 
00760         <font class="comment">/* depreciated methods */</font>
<a name="l00761"></a><a class="code" href="class_pipe.html#b7">00761</a>         <font class="keywordtype">void</font> <a class="code" href="class_pipe.html#b7">Sender</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00762 <font class="keyword">                </font>{<a class="code" href="class_pipe.html#b2">endReceiver</a>();};
00763 
<a name="l00764"></a><a class="code" href="class_pipe.html#b8">00764</a>         <font class="keywordtype">void</font> <a class="code" href="class_pipe.html#b8">Receiver</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00765 <font class="keyword">                </font>{<a class="code" href="class_pipe.html#b1">endSender</a>();};
00766 
<a name="l00767"></a><a class="code" href="class_pipe.html#b9">00767</a>         <font class="keywordtype">int</font> <a class="code" href="class_pipe.html#b9">Read</a>(<font class="keywordtype">void</font> *buf, <font class="keywordtype">int</font> len)<font class="keyword"></font>
00768 <font class="keyword">                </font>{return ::read(fd[0], (<font class="keywordtype">char</font> *)buf, len);};
00769 
<a name="l00770"></a><a class="code" href="class_pipe.html#b10">00770</a>         <font class="keywordtype">int</font> <a class="code" href="class_pipe.html#b10">Write</a>(<font class="keywordtype">void</font> *buf, <font class="keywordtype">int</font> len)<font class="keyword"></font>
00771 <font class="keyword">                </font>{return ::write(fd[1], (<font class="keywordtype">char</font> *)buf, len);};
00772         
00773 <font class="keyword">public</font>:
00777         <font class="keywordtype">bool</font> <a class="code" href="class_randomfile.html#a6">operator!</a>();
00778 
<a name="l00786"></a><a class="code" href="class_pipe.html#a1">00786</a>         <font class="keyword">inline</font> <font class="keywordtype">int</font> <a class="code" href="class_pipe.html#a1">Recv</a>(<font class="keywordtype">void</font> *addr)<font class="keyword"></font>
00787 <font class="keyword">                </font>{return ::read(fd[0], (<font class="keywordtype">char</font> *)addr, objsize);};
00788 
<a name="l00796"></a><a class="code" href="class_pipe.html#a2">00796</a>         <font class="keyword">inline</font> <font class="keywordtype">int</font> <a class="code" href="class_pipe.html#a2">Send</a>(<font class="keywordtype">void</font> *addr)<font class="keyword"></font>
00797 <font class="keyword">                </font>{return ::write(fd[1], (<font class="keywordtype">char</font> *)addr, objsize);};
00798 
00804         <font class="keywordtype">bool</font> <a class="code" href="class_pipe.html#a3">isValid</a>(<font class="keywordtype">void</font>);
00805 };
00806 
<a name="l00816"></a><a class="code" href="class_dso.html">00816</a> <font class="keyword">class </font><a class="code" href="class_dso.html">DSO</a> 
00817 {
00818 <font class="keyword">private</font>:
00819 <font class="preprocessor">#ifdef  HAVE_MODULES</font>
00820 <font class="preprocessor"></font>        <font class="keyword">static</font> <a class="code" href="class_mutex.html">Mutex</a> mutex;
00821         <font class="keyword">static</font> <a class="code" href="class_dso.html">DSO</a> *first, *last;
00822         <a class="code" href="class_dso.html">DSO</a> *next, *prev;
00823         <font class="keywordtype">void</font> *image;
00824         <font class="keywordtype">void</font> loader(<font class="keyword">const</font> <font class="keywordtype">char</font> *filename, <font class="keywordtype">bool</font> resolve);
00825 <font class="preprocessor">#endif</font>
00826 <font class="preprocessor"></font>
00827 <font class="keyword">public</font>:
00833 <font class="preprocessor">#ifdef  HAVE_MODULES</font>
<a name="l00834"></a><a class="code" href="class_dso.html#a0">00834</a> <font class="preprocessor"></font>        <a class="code" href="class_dso.html#a0">DSO</a>(<font class="keywordtype">char</font> *filename)<font class="keyword"></font>
00835 <font class="keyword">                </font>{loader(filename, <font class="keyword">true</font>);};
00836 
<a name="l00837"></a><a class="code" href="class_dso.html#a1">00837</a>         <a class="code" href="class_dso.html#a0">DSO</a>(<font class="keywordtype">char</font> *filename, <font class="keywordtype">bool</font> resolve)<font class="keyword"></font>
00838 <font class="keyword">                </font>{loader(filename, resolve);};
00839 <font class="preprocessor">#else</font>
<a name="l00840"></a><a class="code" href="class_dso.html#a2">00840</a> <font class="preprocessor"></font>        <a class="code" href="class_dso.html#a0">DSO</a>(<font class="keywordtype">char</font> *filename)<font class="keyword"></font>
00841 <font class="keyword">                </font>{<font class="keywordflow">throw</font> <font class="keyword">this</font>;};
<a name="l00842"></a><a class="code" href="class_dso.html#a3">00842</a>         <a class="code" href="class_dso.html#a0">DSO</a>(<font class="keywordtype">char</font> *filename, <font class="keywordtype">bool</font> resolve)<font class="keyword"></font>
00843 <font class="keyword">                </font>{<font class="keywordflow">throw</font> <font class="keyword">this</font>;};
00844 <font class="preprocessor">#endif</font>
00845 <font class="preprocessor"></font>
00850         <font class="keywordtype">char</font> *<a class="code" href="class_dso.html#a4">getError</a>(<font class="keywordtype">void</font>);
00851 
00855 <font class="preprocessor">#ifdef  HAVE_MODULES</font>
00856 <font class="preprocessor"></font>        <a class="code" href="class_dso.html#a5">~DSO</a>();
00857 <font class="preprocessor">#endif</font>
00858 <font class="preprocessor"></font>
00862 <font class="preprocessor">#ifdef  HAVE_MODULES</font>
00863 <font class="preprocessor"></font>        <font class="keywordtype">void</font> *<a class="code" href="class_dso.html#a6">operator[]</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *);
00864 <font class="preprocessor">#else</font>
<a name="l00865"></a><a class="code" href="class_dso.html#a7">00865</a> <font class="preprocessor"></font>        <font class="keywordtype">void</font> *<a class="code" href="class_dso.html#a6">operator[]</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *)<font class="keyword"></font>
00866 <font class="keyword">                </font>{<font class="keywordflow">return</font> NULL;};
00867 <font class="preprocessor">#endif  </font>
00868 <font class="preprocessor"></font>
00869 <font class="preprocessor">#ifdef  HAVE_MODULES</font>
00870 <font class="preprocessor"></font>        <font class="keyword">friend</font> <font class="keywordtype">void</font> <a class="code" href="class_dso.html#l0">dynunload</a>(<font class="keywordtype">void</font>);
00871 <font class="preprocessor">#else</font>
<a name="l00872"></a><a class="code" href="class_dso.html#l1">00872</a> <font class="preprocessor"></font>        <font class="keyword">friend</font> <font class="keywordtype">void</font> <a class="code" href="class_dso.html#l0">dynunload</a>(<font class="keywordtype">void</font>)<font class="keyword"></font>
00873 <font class="keyword">                </font>{<font class="keywordflow">return</font>;};
00874 <font class="preprocessor">#endif</font>
00875 <font class="preprocessor"></font>
00881         <font class="keywordtype">bool</font> <a class="code" href="class_dso.html#a8">isValid</a>(<font class="keywordtype">void</font>);
00882 };
00883 
00884 <font class="keywordtype">bool</font> <a class="code" href="file_h.html#a32">isDir</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
00885 <font class="keywordtype">bool</font> <a class="code" href="file_h.html#a33">isFile</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
00886 <font class="keywordtype">bool</font> <a class="code" href="file_h.html#a34">isDevice</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
00887 <font class="keywordtype">bool</font> <a class="code" href="file_h.html#a35">canAccess</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
00888 <font class="keywordtype">bool</font> <a class="code" href="file_h.html#a36">canModify</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *path);
00889 
00890 <font class="preprocessor">#ifdef  __CCXX_NAMESPACE_H__</font>
00891 <font class="preprocessor"></font><font class="preprocessor">#undef  __CCXX_NAMESPACE_H__</font>
00892 <font class="preprocessor"></font><font class="preprocessor">#include &lt;cc++/<a class="code" href="namespace_h.html">namespace.h</a>&gt;</font>
00893 <font class="preprocessor">#endif</font>
00894 <font class="preprocessor"></font>
00895 <font class="preprocessor">#endif</font>
00896 <font class="preprocessor"></font>
</div></pre><hr><address><small>Generated at Thu Oct 4 15:32:58 2001 for CommonC++ by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.gif" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.5 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
 &copy;&nbsp;1997-2001</small></address>
</body>
</html>