OpenTTD
fileio_type.h
Go to the documentation of this file.
1 /*
2  * This file is part of OpenTTD.
3  * OpenTTD 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, version 2.
4  * OpenTTD 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.
5  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6  */
7 
10 #ifndef FILEIO_TYPE_H
11 #define FILEIO_TYPE_H
12 
13 #include "core/enum_type.hpp"
14 
21 
22  FT_INVALID = 7,
23  FT_NUMBITS = 3,
24  FT_MASK = (1 << FT_NUMBITS) - 1,
25 };
26 
29  /* Save game and scenario files. */
32 
33  /* Heightmap files. */
36 
37  /* fios 'files' */
42 
43  DFT_INVALID = 255,
44 };
45 
51 
53 };
54 
60 #define MAKE_FIOS_TYPE(abstract, detailed) ((abstract) | ((detailed) << FT_NUMBITS))
61 
67 enum FiosType {
68  FIOS_TYPE_DRIVE = MAKE_FIOS_TYPE(FT_NONE, DFT_FIOS_DRIVE),
69  FIOS_TYPE_PARENT = MAKE_FIOS_TYPE(FT_NONE, DFT_FIOS_PARENT),
70  FIOS_TYPE_DIR = MAKE_FIOS_TYPE(FT_NONE, DFT_FIOS_DIR),
71  FIOS_TYPE_DIRECT = MAKE_FIOS_TYPE(FT_NONE, DFT_FIOS_DIRECT),
72 
73  FIOS_TYPE_FILE = MAKE_FIOS_TYPE(FT_SAVEGAME, DFT_GAME_FILE),
74  FIOS_TYPE_OLDFILE = MAKE_FIOS_TYPE(FT_SAVEGAME, DFT_OLD_GAME_FILE),
75  FIOS_TYPE_SCENARIO = MAKE_FIOS_TYPE(FT_SCENARIO, DFT_GAME_FILE),
76  FIOS_TYPE_OLD_SCENARIO = MAKE_FIOS_TYPE(FT_SCENARIO, DFT_OLD_GAME_FILE),
79 
80  FIOS_TYPE_INVALID = MAKE_FIOS_TYPE(FT_INVALID, DFT_INVALID),
81 };
82 
83 #undef MAKE_FIOS_TYPE
84 
91 {
92  return static_cast<AbstractFileType>(fios_type & FT_MASK);
93 }
94 
101 {
102  return static_cast<DetailedFileType>(fios_type >> FT_NUMBITS);
103 }
104 
126 };
127 
132  SP_FIRST_DIR,
133  SP_WORKING_DIR = SP_FIRST_DIR,
134 #if defined(WITH_XDG_BASEDIR) && defined(WITH_PERSONAL_DIR)
135  SP_PERSONAL_DIR_XDG,
136 #endif
143  NUM_SEARCHPATHS
144 };
145 
147 
148 #endif /* FILEIO_TYPE_H */
FiosType
Elements of a file system that are recognized.
Definition: fileio_type.h:67
AbstractFileType
The different abstract types of files that the system knows about.
Definition: fileio_type.h:16
Old subdirectory for the music.
Definition: fileio_type.h:114
Subdirectory
The different kinds of subdirectories OpenTTD uses.
Definition: fileio_type.h:108
Number of subdirectories.
Definition: fileio_type.h:124
Search in the directory where the binary resides.
Definition: fileio_type.h:139
Subdirectory of scenario for heightmaps.
Definition: fileio_type.h:113
Subdirectory for all screenshots.
Definition: fileio_type.h:123
PNG file.
Definition: fileio_type.h:35
Subdirectory for all game scripts.
Definition: fileio_type.h:121
DetailedFileType GetDetailedFileType(FiosType fios_type)
Extract the detailed file type from a FiosType.
Definition: fileio_type.h:100
Searchpath
Types of searchpaths OpenTTD might use.
Definition: fileio_type.h:131
Subdirectory for all base data (base sets, intro game)
Definition: fileio_type.h:116
#define MAKE_FIOS_TYPE(abstract, detailed)
Construct an enum value for FiosType as a combination of an abstract and a detailed file type...
Definition: fileio_type.h:60
A directory entry.
Definition: fileio_type.h:40
File is being saved.
Definition: fileio_type.h:50
Type (helpers) for enums.
Load file for checking and/or preview.
Definition: fileio_type.h:48
Save game or scenario file.
Definition: fileio_type.h:31
old or new savegame
Definition: fileio_type.h:18
old or new scenario
Definition: fileio_type.h:19
Base directory for all scenarios.
Definition: fileio_type.h:112
nothing to do
Definition: fileio_type.h:17
BMP file.
Definition: fileio_type.h:34
Number of bits required for storing a AbstractFileType value.
Definition: fileio_type.h:23
Old save game or scenario file.
Definition: fileio_type.h:30
Subdirectory for all translation files.
Definition: fileio_type.h:118
A path without any base directory.
Definition: fileio_type.h:125
Base directory for all savegames.
Definition: fileio_type.h:110
Subdirectory of save for autosaves.
Definition: fileio_type.h:111
Base directory for all subdirectories.
Definition: fileio_type.h:109
Subdirectory for all GS libraries.
Definition: fileio_type.h:122
Search within the autodownload directory.
Definition: fileio_type.h:142
AbstractFileType GetAbstractFileType(FiosType fios_type)
Extract the abstract file type from a FiosType.
Definition: fileio_type.h:90
File is being loaded.
Definition: fileio_type.h:49
SaveLoadOperation
Operation performed on the file.
Definition: fileio_type.h:47
Bitmask for extracting an abstract file type.
Definition: fileio_type.h:24
Subdirectory for all NewGRFs.
Definition: fileio_type.h:117
Direct filename.
Definition: fileio_type.h:41
Unknown or invalid file.
Definition: fileio_type.h:43
Subdirectory for all AI libraries.
Definition: fileio_type.h:120
Search in the personal directory.
Definition: fileio_type.h:137
A drive (letter) entry.
Definition: fileio_type.h:38
Invalid or unknown file type.
Definition: fileio_type.h:22
Subdirectory for all AI files.
Definition: fileio_type.h:119
A parent directory entry.
Definition: fileio_type.h:39
Search in the working directory.
Definition: fileio_type.h:133
Search in the installation directory.
Definition: fileio_type.h:140
heightmap file
Definition: fileio_type.h:20
Search within the application bundle.
Definition: fileio_type.h:141
#define DECLARE_POSTFIX_INCREMENT(enum_type)
Some enums need to have allowed incrementing (i.e.
Definition: enum_type.hpp:14
DetailedFileType
Kinds of files in each AbstractFileType.
Definition: fileio_type.h:28
Search in the shared directory, like &#39;Shared Files&#39; under Windows.
Definition: fileio_type.h:138
Unknown file operation.
Definition: fileio_type.h:52
Old subdirectory for the data.
Definition: fileio_type.h:115