1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
/* bzflag
* Copyright (c) 1993-2025 Tim Riker
*
* This package is free software; you can redistribute it and/or
* modify it under the terms of the license found in the file
* named COPYING that should have accompanied this file.
*
* THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
#ifndef BZF_FILE_MANAGER_H
#define BZF_FILE_MANAGER_H
#include "common.h"
#include <string>
#include "bzfio.h"
#include "Singleton.h"
#define FILEMGR (FileManager::instance())
/**
Simple file management.
This class provides functions to create stream objects, and provides
some platform independence for files requiring directory names.
*/
class FileManager : public Singleton<FileManager>
{
public:
/** Open an input stream.
create an input stream for a file in the data directory.
this will look in several places until it finds the file.
if filename is an absolute path then only that place is
checked. if the file cannot be found or isn't readable
then NULL is returned.
*/
std::istream* createDataInStream(const std::string& filename,
bool binary = false) const;
/** Open an output stream.
create an output stream in the data directory (or wherever
indicated if filename is an absolute path). if the file
can be opened for writing then NULL is returned.
*/
std::ostream* createDataOutStream(const std::string& filename,
bool binary = false,
bool truncate = true) const;
/** Check for absolute path.
returns true if the path is absolute, false if relative
*/
bool isAbsolute(const std::string& path) const;
/** Concatenate directory names.
concatenate two pathname components with a directory separator
between them.
*/
std::string catPath(const std::string& a, const std::string& b) const;
void setDataPath ( const std::string &s )
{
dataPath = s;
}
protected:
friend class Singleton<FileManager>;
FileManager();
~FileManager();
std::string dataPath;
};
#endif
// Local Variables: ***
// mode: C++ ***
// tab-width: 4 ***
// c-basic-offset: 4 ***
// indent-tabs-mode: nil ***
// End: ***
// ex: shiftwidth=4 tabstop=4
|