cpp_photon/include/util/FileBuffer.hpp

122 lines
2.9 KiB
C++
Raw Normal View History

2005-02-06 21:30:09 +00:00
//This file is part of Photon (http://photon.sourceforge.net)
//Copyright (C) 2004-2005 James Turk
//
// Author:
// James Turk (jpt2433@rit.edu)
//
// Version:
2005-11-13 07:59:48 +00:00
// $Id: FileBuffer.hpp,v 1.5 2005/11/13 07:59:48 cozman Exp $
2005-02-06 21:30:09 +00:00
2005-02-13 22:12:02 +00:00
#ifndef PHOTON_UTIL_FILEBUFFER_HPP
#define PHOTON_UTIL_FILEBUFFER_HPP
2005-02-06 21:30:09 +00:00
2005-02-13 22:12:02 +00:00
#include "types.hpp"
2005-02-06 21:30:09 +00:00
#include "physfs.h"
#include <string>
#include <vector>
namespace photon
{
namespace util
{
// Class: FileBuffer
2005-11-13 07:59:48 +00:00
// Class for reading data from a file, uses PhysFS
// (<http://physfs.icculus.org>)
// and is capable of reading from archives on the search path.
//
// All paths used are relative to the search path.
// By default only files within the directory the application is running or
// it's subdirectories are accessible. Additional directories may be added
// to the search path via <addToSearchPath>.
2005-02-06 21:30:09 +00:00
class FileBuffer
{
// Group: (Con/De)structors
public:
// Function: FileBuffer
// Initializes empty buffer.
FileBuffer();
// Function: FileBuffer
// Initializing constructor, calls <open>.
//
// Parameters:
2005-11-13 07:59:48 +00:00
// filename - Name of file to load. (See notes on how FileBuffer handles
// paths at top of page)
2005-02-07 01:48:25 +00:00
FileBuffer(const std::string& filename);
2005-02-06 21:30:09 +00:00
// Function: ~FileBuffer
// Destructor, calls <close>.
~FileBuffer();
// Group: General
public:
// Function: open
// Loads a file into the FileBuffer.
//
// Parameters:
2005-11-13 07:59:48 +00:00
// filename - Name of file to load. (See notes on how FileBuffer handles
// paths at top of page)
2005-02-07 01:48:25 +00:00
void open(const std::string& filename);
2005-02-06 21:30:09 +00:00
// Function: close
2005-11-13 07:59:48 +00:00
// Closes the file, all future read attempts will fail until <open> is
// called agian.
2005-02-06 21:30:09 +00:00
void close();
// Group: Accessors
public:
// Function: getData
2005-11-13 07:59:48 +00:00
// Reads data from file into a <ubyte>-vector.
2005-02-06 21:30:09 +00:00
// If the requested amount of data wasn't available, returns only
2005-06-10 07:06:06 +00:00
// what could be loaded. If amount is 0 (default), returns entire buffer.
2005-02-06 21:30:09 +00:00
//
// Parameters:
2005-06-10 07:06:06 +00:00
// amount - maximum amount of data to load [default: 0]
2005-02-06 21:30:09 +00:00
//
// Returns:
// Vector containing loaded data, empty if nothing loaded.
2005-06-10 07:06:06 +00:00
std::vector<ubyte> getData(int amount=0);
2005-02-06 21:30:09 +00:00
// Function: getPosition
// Gets position of internal cursor inside data.
//
// Returns:
// Position of cursor reading in data.
uint getPosition() const;
// Function: getSize
// Gets size of data.
//
// Returns:
// Size of currently loaded data.
uint getSize() const;
2005-02-07 01:48:25 +00:00
// Function: isEOF
2005-11-13 07:59:48 +00:00
// Checks if internal cursor has reached end of file.
2005-02-06 21:30:09 +00:00
//
// Returns:
// True iff eof, false otherwise.
bool isEOF() const;
// Function: isOpen
// Checks if file is open.
//
// Returns:
// True iff file is open, false otherwise.
bool isOpen() const;
private:
// PHYSFS_file* for the buffer
PHYSFS_file* file_;
};
}
}
2005-02-13 22:12:02 +00:00
#endif //PHOTON_UTIL_FILEBUFFER_HPP