📄 filereader.cc
字号:
//// Copyright (c) 2005 by Istv醤 V醨adi//// This file is part of dxr3Player, a DVD player written specifically // for the DXR3 (aka Hollywood+) decoder card.// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//------------------------------------------------------------------------------#include "FileReader.h"#include <cassert>#include <byteswap.h>//------------------------------------------------------------------------------FileReader::FileReader(FILE* file) : file(file){}//------------------------------------------------------------------------------bool FileReader::read(uint8_t& x){ size_t s = fread(&x, sizeof(x), 1, file); return s==1;}//------------------------------------------------------------------------------uint8_t FileReader::read8(){ uint8_t x; bool isok = read(x); assert(isok); return x;}//------------------------------------------------------------------------------bool FileReader::read(int8_t& x){ size_t s = fread(&x, sizeof(x), 1, file); return s==1;}//------------------------------------------------------------------------------int8_t FileReader::readS8(){ int8_t x; bool isok = read(x); assert(isok); return x;}//------------------------------------------------------------------------------bool FileReader::read(uint16_t& x){ size_t s = fread(&x, sizeof(x), 1, file);#ifndef WORDS_BIGENDIAN x = bswap_16(x);#endif return s==1;}//------------------------------------------------------------------------------uint16_t FileReader::read16(){ uint16_t x; bool isok = read(x); assert(isok); return x;}//------------------------------------------------------------------------------bool FileReader::read(uint32_t& x){ size_t s = fread(&x, sizeof(x), 1, file);#ifndef WORDS_BIGENDIAN x = bswap_32(x);#endif return s==1;}//------------------------------------------------------------------------------uint32_t FileReader::read32(){ uint32_t x; bool isok = read(x); assert(isok); return x;}//------------------------------------------------------------------------------bool FileReader::read(uint64_t& x){ size_t s = fread(&x, sizeof(x), 1, file);#ifndef WORDS_BIGENDIAN uint32_t* x1 = (uint32_t*)&x; x1[0] = bswap_32(x1[0]); x1[1] = bswap_32(x1[1]); x = x1[1]; x <<= 32; x |= x1[0];#endif return s==1;}//------------------------------------------------------------------------------uint64_t FileReader::read64(){ uint64_t x; bool isok = read(x); assert(isok); return x;}//------------------------------------------------------------------------------bool FileReader::read(void* buffer, size_t length){ size_t s = fread(buffer, length, 1, file); return s==1;}//------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -