<!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> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </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 <cc++/<a class="code" href="thread_h.html">thread.h</a>></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 <cc++/<a class="code" href="macros_h.html">macros.h</a>></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 <cstdio></font> 00053 <font class="preprocessor">#include <dirent.h></font> 00054 <font class="preprocessor">#include <sys/stat.h></font> 00055 <font class="preprocessor">#include <sys/mman.h></font> 00056 <font class="preprocessor">#include <iostream></font> 00057 <font class="preprocessor">#include <fstream></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> &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> &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> &orig); 00757 00758 <a class="code" href="class_pipe.html">Pipe</a> &<a class="code" href="class_pipe.html#b6">operator=</a>(<font class="keyword">const</font> <a class="code" href="class_pipe.html">Pipe</a> &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 <cc++/<a class="code" href="namespace_h.html">namespace.h</a>></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>, © 1997-2001</small></address> </body> </html>