File: FileManager.h

package info (click to toggle)
bzflag 2.0.13.20080902-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 27,564 kB
  • ctags: 34,716
  • sloc: cpp: 139,842; ansic: 14,510; sh: 10,715; makefile: 2,454; perl: 477; php: 428; python: 345; objc: 243; xml: 24
file content (78 lines) | stat: -rw-r--r-- 2,197 bytes parent folder | download
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
/* bzflag
 * Copyright (c) 1993 - 2008 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 LICENSE 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;

protected:
  friend class Singleton<FileManager>;
  FileManager();
  ~FileManager();

};

#endif

// Local Variables: ***
// mode:C++ ***
// tab-width: 8 ***
// c-basic-offset: 2 ***
// indent-tabs-mode: t ***
// End: ***
// ex: shiftwidth=2 tabstop=8