1 : #include "filedatasource.h"
2 : #include "cpl_error.h"
3 :
4 0 : FileDataSource::FileDataSource(const char * fileName)
5 0 : : closeFile(true)
6 : {
7 0 : fp = VSIFOpenL(fileName, "rb");
8 0 : }
9 :
10 6 : FileDataSource::FileDataSource(VSILFILE* fp)
11 6 : : closeFile(false)
12 : {
13 6 : this->fp = fp;
14 6 : }
15 :
16 6 : FileDataSource::~FileDataSource()
17 : {
18 6 : if (closeFile)
19 0 : VSIFCloseL(fp);
20 6 : }
21 :
22 140 : size_t FileDataSource::DataSourceFread(void* lpBuf, size_t size, size_t count)
23 : {
24 140 : return VSIFReadL(lpBuf, size, count, (VSILFILE*)fp);
25 : }
26 :
27 29 : int FileDataSource::DataSourceFgetc()
28 : {
29 : char chData;
30 :
31 29 : if( VSIFReadL( &chData, 1, 1, fp ) == 1 )
32 26 : return chData;
33 : else
34 3 : return EOF;
35 : }
36 :
37 26 : int FileDataSource::DataSourceUngetc(int c)
38 : {
39 26 : DataSourceFseek(-1, SEEK_CUR );
40 :
41 26 : return c;
42 : }
43 :
44 58 : int FileDataSource::DataSourceFseek(long offset, int origin)
45 : {
46 58 : if (origin == SEEK_CUR && offset < 0)
47 26 : return VSIFSeekL(fp, VSIFTellL(fp) + offset, SEEK_SET);
48 : else
49 32 : return VSIFSeekL(fp, offset, origin);
50 : }
51 :
52 0 : int FileDataSource::DataSourceFeof()
53 : {
54 0 : return VSIFEofL( fp );
55 : }
56 :
57 0 : long FileDataSource::DataSourceFtell()
58 : {
59 0 : return VSIFTellL( fp );
60 : }
|