aboutsummaryrefslogtreecommitdiff
path: root/src/file.h
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2007-07-03 00:28:59 +0000
committerMike Buland <eichlan@xagasoft.com>2007-07-03 00:28:59 +0000
commitac517a2b7625e0aa0862679e961c6349f859ea3b (patch)
treee3e27a6b9bd5e2be6150088495c91fc91786ad9d /src/file.h
parentf8d4301e9fa4f3709258505941e37fab2eadadc6 (diff)
parentbd865cee5f89116c1f054cd0e5c275e97c2d0a9b (diff)
downloadlibbu++-ac517a2b7625e0aa0862679e961c6349f859ea3b.tar.gz
libbu++-ac517a2b7625e0aa0862679e961c6349f859ea3b.tar.bz2
libbu++-ac517a2b7625e0aa0862679e961c6349f859ea3b.tar.xz
libbu++-ac517a2b7625e0aa0862679e961c6349f859ea3b.zip
The reorg is being put in trunk, I think it's ready. Now we just get to find
out how many applications won't work anymore :)
Diffstat (limited to 'src/file.h')
-rw-r--r--src/file.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/file.h b/src/file.h
new file mode 100644
index 0000000..d4e43eb
--- /dev/null
+++ b/src/file.h
@@ -0,0 +1,78 @@
1#ifndef BU_FILE_H
2#define BU_FILE_H
3
4#include <stdint.h>
5
6#include "bu/stream.h"
7#include "bu/fstring.h"
8
9namespace Bu
10{
11 class File : public Bu::Stream
12 {
13 public:
14 File( const char *sName, const char *sFlags );
15 File( const Bu::FString &sName, const char *sFlags );
16 File( int fd, const char *sFlags );
17 virtual ~File();
18
19 virtual void close();
20 virtual size_t read( void *pBuf, size_t nBytes );
21 virtual size_t write( const void *pBuf, size_t nBytes );
22
23 virtual long tell();
24 virtual void seek( long offset );
25 virtual void setPos( long pos );
26 virtual void setPosEnd( long pos );
27 virtual bool isEOS();
28 virtual bool isOpen();
29
30 virtual void flush();
31
32 virtual bool canRead();
33 virtual bool canWrite();
34
35 virtual bool isReadable();
36 virtual bool isWritable();
37 virtual bool isSeekable();
38
39 virtual bool isBlocking();
40 virtual void setBlocking( bool bBlocking=true );
41
42 /**
43 * Create a temp file and return its handle
44 *@param sName (Bu::FString) Give in the form: "/tmp/tmpfileXXXXXXXX"
45 * It will alter your (sName) setting the 'X's to random
46 * characters.
47 *@param sFlags (const char *) Standard file flags 'rb'... etc..
48 *@returns (Bu::File) A file object representing your temp file.
49 */
50#ifndef WIN32
51 inline static Bu::File tempFile( Bu::FString &sName, const char *sFlags )
52 {
53 int afh_d = mkstemp( sName.getStr() );
54
55 return Bu::File( afh_d, sFlags );
56 }
57
58 /**
59 * Set the size of the file to (nSize). You can either grow or shrink
60 * the file.
61 *@param nSize (long) The new size of the file.
62 */
63 void truncate( long nSize );
64
65 /**
66 * Change the file access permissions.
67 *@param t (mode_t) The new file access permissions.
68 */
69 void chmod( mode_t t );
70#endif
71
72 private:
73 FILE *fh;
74
75 };
76}
77
78#endif