author | celestar |
Tue, 19 Jun 2007 07:21:01 +0000 | |
branch | gamebalance |
changeset 9913 | e79cd19772dd |
parent 9895 | 7bd07f43b0e3 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6505
diff
changeset
|
3 |
/** @file fileio.h Declarations for Standard In/Out file operations */ |
6505
abcb0580d976
(svn r8950) -Cleanup: doxygen changes. Mostly @files missing tags and a few comments style.
belugas
parents:
5726
diff
changeset
|
4 |
|
0 | 5 |
#ifndef FILEIO_H |
6 |
#define FILEIO_H |
|
7 |
||
9913
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
8 |
#include "helpers.hpp" |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
9 |
|
0 | 10 |
void FioSeekTo(uint32 pos, int mode); |
11 |
void FioSeekToFile(uint32 pos); |
|
9895
7bd07f43b0e3
(svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents:
6527
diff
changeset
|
12 |
uint32 FioGetPos(); |
9913
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
13 |
const char *FioGetFilename(); |
9895
7bd07f43b0e3
(svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents:
6527
diff
changeset
|
14 |
byte FioReadByte(); |
7bd07f43b0e3
(svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents:
6527
diff
changeset
|
15 |
uint16 FioReadWord(); |
7bd07f43b0e3
(svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents:
6527
diff
changeset
|
16 |
uint32 FioReadDword(); |
7bd07f43b0e3
(svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents:
6527
diff
changeset
|
17 |
void FioCloseAll(); |
0 | 18 |
void FioOpenFile(int slot, const char *filename); |
19 |
void FioReadBlock(void *ptr, uint size); |
|
20 |
void FioSkipBytes(int n); |
|
9895
7bd07f43b0e3
(svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents:
6527
diff
changeset
|
21 |
void FioCreateDirectory(const char *filename); |
7bd07f43b0e3
(svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents:
6527
diff
changeset
|
22 |
|
9913
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
23 |
/** |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
24 |
* The different kinds of subdirectories OpenTTD uses |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
25 |
*/ |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
26 |
enum Subdirectory { |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
27 |
BASE_DIR, ///< Base directory for all subdirectories |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
28 |
SAVE_DIR, ///< Base directory for all savegames |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
29 |
AUTOSAVE_DIR, ///< Subdirectory of save for autosaves |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
30 |
SCENARIO_DIR, ///< Base directory for all scenarios |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
31 |
HEIGHTMAP_DIR, ///< Subdirectory of scenario for heightmaps |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
32 |
GM_DIR, ///< Subdirectory for all music |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
33 |
DATA_DIR, ///< Subdirectory for all data (GRFs, sample.cat, intro game) |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
34 |
LANG_DIR, ///< Subdirectory for all translation files |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
35 |
NUM_SUBDIRS, ///< Number of subdirectories |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
36 |
NO_DIRECTORY, ///< A path without any base directory |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
37 |
}; |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
38 |
|
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
39 |
/** |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
40 |
* Types of searchpaths OpenTTD might use |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
41 |
*/ |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
42 |
enum Searchpath { |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
43 |
SP_FIRST_DIR, |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
44 |
SP_WORKING_DIR = SP_FIRST_DIR, ///< Search in the working directory |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
45 |
SP_PERSONAL_DIR, ///< Search in the personal directory |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
46 |
SP_SHARED_DIR, ///< Search in the shared directory, like 'Shared Files' under Windows |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
47 |
SP_BINARY_DIR, ///< Search in the directory where the binary resides |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
48 |
SP_INSTALLATION_DIR, ///< Search in the installation directory |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
49 |
SP_APPLICATION_BUNDLE_DIR, ///< Search within the application bundle |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
50 |
NUM_SEARCHPATHS |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
51 |
}; |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
52 |
|
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
53 |
DECLARE_POSTFIX_INCREMENT(Searchpath); |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
54 |
|
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
55 |
/** |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
56 |
* The searchpaths OpenTTD could search through. |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
57 |
* At least one of the slots has to be filled with a path. |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
58 |
* NULL paths tell that there is no such path for the |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
59 |
* current operating system. |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
60 |
*/ |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
61 |
extern const char *_searchpaths[NUM_SEARCHPATHS]; |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
62 |
|
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
63 |
/** |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
64 |
* Checks whether the given search path is a valid search path |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
65 |
* @param sp the search path to check |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
66 |
* @return true if the search path is valid |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
67 |
*/ |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
68 |
static inline bool IsValidSearchPath(Searchpath sp) |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
69 |
{ |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
70 |
return sp < NUM_SEARCHPATHS && _searchpaths[sp] != NULL; |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
71 |
} |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
72 |
|
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
73 |
/** Iterator for all the search paths */ |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
74 |
#define FOR_ALL_SEARCHPATHS(sp) for (sp = SP_FIRST_DIR; sp < NUM_SEARCHPATHS; sp++) if (IsValidSearchPath(sp)) |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
75 |
|
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
76 |
FILE *FioFOpenFile(const char *filename, const char *mode = "rb", Subdirectory subdir = DATA_DIR); |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
77 |
bool FioCheckFileExists(const char *filename, Subdirectory subdir = DATA_DIR); |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
78 |
char *FioGetFullPath(char *buf, size_t buflen, Searchpath sp, Subdirectory subdir, const char *filename); |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
79 |
char *FioFindFullPath(char *buf, size_t buflen, Subdirectory subdir, const char *filename); |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
80 |
char *FioAppendDirectory(char *buf, size_t buflen, Searchpath sp, Subdirectory subdir); |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
81 |
char *FioGetDirectory(char *buf, size_t buflen, Subdirectory subdir); |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
82 |
|
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
83 |
static inline const char *FioGetSubdirectory(Subdirectory subdir) |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
84 |
{ |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
85 |
extern const char *_subdirs[NUM_SUBDIRS]; |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
86 |
assert(subdir < NUM_SUBDIRS); |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
87 |
return _subdirs[subdir]; |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
88 |
} |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
89 |
|
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
90 |
void SanitizeFilename(char *filename); |
9895
7bd07f43b0e3
(svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents:
6527
diff
changeset
|
91 |
void AppendPathSeparator(char *buf, size_t buflen); |
7bd07f43b0e3
(svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents:
6527
diff
changeset
|
92 |
void DeterminePaths(const char *exe); |
0 | 93 |
|
9913
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
94 |
extern char *_personal_dir; ///< custom directory for personal settings, saves, newgrf, etc. |
e79cd19772dd
(svn r10213) [gamebalance] -Sync: r10100:10200 from trunk
celestar
parents:
9895
diff
changeset
|
95 |
|
0 | 96 |
#endif /* FILEIO_H */ |