📄 file.h
字号:
//// Copyright (c) 2003 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#ifndef DXR3PLAYER_DVD_FILE_H#define DXR3PLAYER_DVD_FILE_H//------------------------------------------------------------------------------#include "FileHandler.h"#include <cstdlib>#include <cassert>//------------------------------------------------------------------------------namespace dvd {//------------------------------------------------------------------------------/** * A DVD file. */class File{ /** * The file handler. */ FileHandler* fileHandler;public: /** * Construct the file. */ File(FileHandler* fileHandler = 0); /** * Copy the file. */ File(const File& other); /** * Destroy the file. */ ~File(); /** * Assign to the file. */ File& operator=(const File& other); /** * Convert to a boolean value. If true, a valid file is opened. */ operator bool() const; /** * Get the number of sectors in this file. */ size_t getLength() const; /** * Read a number of sectors from the given offset. */ void readSectors(void* dest, size_t offset, size_t numSectors); /** * Close the file. */ void close();};//------------------------------------------------------------------------------// Inline definitions//------------------------------------------------------------------------------inline File::File(FileHandler* fileHandler) : fileHandler(fileHandler){ if (fileHandler!=0) fileHandler->addReference();}//------------------------------------------------------------------------------inline File::File(const File& other) : fileHandler(other.fileHandler){ if (fileHandler!=0) fileHandler->addReference();}//------------------------------------------------------------------------------inline File::~File(){ if (fileHandler!=0 && fileHandler->removeReference()==0) { delete fileHandler; }}//------------------------------------------------------------------------------inline File& File::operator=(const File& other){ if (fileHandler!=0 && fileHandler->removeReference()==0) { delete fileHandler; } fileHandler = other.fileHandler; if (fileHandler!=0) fileHandler->addReference(); return *this;}//------------------------------------------------------------------------------inline File::operator bool() const{ return fileHandler!=0;}//------------------------------------------------------------------------------inline size_t File::getLength() const{ return fileHandler->getLength();}//------------------------------------------------------------------------------inline void File::readSectors(void* dest, size_t offset, size_t numSectors){ fileHandler->readSectors(dest, offset, numSectors);}//------------------------------------------------------------------------------inline void File::close(){ if (fileHandler!=0 && fileHandler->removeReference()==0) { delete fileHandler; } fileHandler = 0;}//------------------------------------------------------------------------------//------------------------------------------------------------------------------} /* namespace dvd *///------------------------------------------------------------------------------#endif // DXR3PLAYER_DVD_FILE_H// Local variables:// mode: c++// End:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -