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