/ source / libsmackerdec / include / FileStream.h
FileStream.h
 1  /*
 2   * libsmackerdec - Smacker video decoder
 3   * Copyright (C) 2011 Barry Duncan
 4   *
 5   * This library is free software; you can redistribute it and/or
 6   * modify it under the terms of the GNU Lesser General Public
 7   * License as published by the Free Software Foundation; either
 8   * version 2.1 of the License, or (at your option) any later version.
 9   *
10   * This library is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   * Lesser General Public License for more details.
14   *
15   * You should have received a copy of the GNU Lesser General Public
16   * License along with this library; if not, write to the Free Software
17   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18   */
19  
20  #ifndef _SmackerFileStream_h_
21  #define _SmackerFileStream_h_
22  
23  #include "vfs.h"
24  #include "compat.h"
25  #include <stdint.h>
26  
27  namespace SmackerCommon {
28  
29  class FileStream
30  {
31  	public:
32  
33  		bool Open(const char *fileName);
34  		bool Is_Open();
35  		void Close();
36  
37  		int32_t ReadBytes(uint8_t *data, uint32_t nBytes);
38  
39  		uint32_t ReadUint32LE();
40  		uint32_t ReadUint32BE();
41  
42  		uint16_t ReadUint16LE();
43  		uint16_t ReadUint16BE();
44  
45  		uint8_t ReadByte();
46  
47  		enum SeekDirection{
48  			kSeekCurrent = 0,
49  			kSeekStart   = 1,
50  			kSeekEnd     = 2
51  		};
52  
53          int32_t Seek(int32_t offset, SeekDirection = kSeekStart);
54          int32_t Skip(int32_t offset);
55  
56  		int32_t GetPosition();
57  
58  	private:
59  		int file;
60  };
61  
62  } // close namespace SmackerCommon
63  
64  #endif