aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/file.cpp37
-rw-r--r--src/file.h23
-rw-r--r--src/stream.cpp9
-rw-r--r--src/stream.h21
4 files changed, 90 insertions, 0 deletions
diff --git a/src/file.cpp b/src/file.cpp
new file mode 100644
index 0000000..9910b8a
--- /dev/null
+++ b/src/file.cpp
@@ -0,0 +1,37 @@
1#include "file.h"
2#include "exceptions.h"
3
4File::File( const char *sName, const char *sFlags )
5{
6 fh = fopen( sName, sFlags );
7}
8
9File::~File()
10{
11}
12
13void File::close()
14{
15 if( fh )
16 {
17 fclose( fh );
18 fh = NULL;
19 }
20}
21
22size_t File::read( char *pBuf, size_t nBytes )
23{
24 if( !fh )
25 throw FileException("File not open.");
26
27 return fread( pBuf, 1, nBytes, fh );
28}
29
30size_t File::write( char *pBuf, size_t nBytes )
31{
32 if( !fh )
33 throw FileException("File not open.");
34
35 return fwrite( pBuf, 1, nBytes, fh );
36}
37
diff --git a/src/file.h b/src/file.h
new file mode 100644
index 0000000..111a8b8
--- /dev/null
+++ b/src/file.h
@@ -0,0 +1,23 @@
1#ifndef FILE_H
2#define FILE_H
3
4#include <stdint.h>
5
6#include "stream.h"
7
8class File : public Stream
9{
10public:
11 File( const char *sName, const char *sFlags );
12 virtual ~File();
13
14 virtual void close();
15 virtual size_t read( char *pBuf, size_t nBytes );
16 virtual size_t write( char *pBuf, size_t nBytes );
17
18private:
19 FILE *fh;
20
21};
22
23#endif
diff --git a/src/stream.cpp b/src/stream.cpp
new file mode 100644
index 0000000..99c25f2
--- /dev/null
+++ b/src/stream.cpp
@@ -0,0 +1,9 @@
1#include "stream.h"
2
3Stream::Stream()
4{
5}
6
7Stream::~Stream()
8{
9}
diff --git a/src/stream.h b/src/stream.h
new file mode 100644
index 0000000..086e4a1
--- /dev/null
+++ b/src/stream.h
@@ -0,0 +1,21 @@
1#ifndef STREAM_H
2#define STREAM_H
3
4#include <stdint.h>
5#include <stdio.h>
6
7class Stream
8{
9public:
10 Stream();
11 virtual ~Stream();
12
13 virtual void close() = 0;
14 virtual size_t read( char *pBuf, size_t nBytes ) = 0;
15 virtual size_t write( char *pBuf, size_t nBytes ) = 0;
16
17private:
18
19};
20
21#endif