summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2011-11-14 20:38:56 +0000
committerrubidium <rubidium@openttd.org>2011-11-14 20:38:56 +0000
commitf60042942473640e60136e7a43d2bc6a4c824a26 (patch)
treef338a814fbf9e1312236b184e07833babf0f8a27
parent15f671279df2696aad13aca3d431ee4a988694f3 (diff)
downloadopenttd-f60042942473640e60136e7a43d2bc6a4c824a26.tar.xz
(svn r23215) -Codechange: stricter type safety for CommandFlags
-rw-r--r--src/command.cpp6
-rw-r--r--src/command_func.h4
-rw-r--r--src/command_type.h9
3 files changed, 10 insertions, 9 deletions
diff --git a/src/command.cpp b/src/command.cpp
index 4b6035109..d521cda0e 100644
--- a/src/command.cpp
+++ b/src/command.cpp
@@ -173,7 +173,7 @@ CommandProc CmdSetVehicleOnTime;
CommandProc CmdAutofillTimetable;
CommandProc CmdSetTimetableStart;
-#define DEF_CMD(proc, flags, type) {proc, #proc, flags, type}
+#define DEF_CMD(proc, flags, type) {proc, #proc, (CommandFlags)flags, type}
/**
* The master command table
@@ -327,7 +327,7 @@ bool IsValidCommand(uint32 cmd)
* @param cmd The integer value of the command
* @return The flags for this command
*/
-byte GetCommandFlags(uint32 cmd)
+CommandFlags GetCommandFlags(uint32 cmd)
{
assert(IsValidCommand(cmd));
@@ -590,7 +590,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd,
assert(proc != NULL);
/* Command flags are used internally */
- uint cmd_flags = GetCommandFlags(cmd);
+ CommandFlags cmd_flags = GetCommandFlags(cmd);
/* Flags get send to the DoCommand */
DoCommandFlag flags = CommandFlagsToDCFlags(cmd_flags);
diff --git a/src/command_func.h b/src/command_func.h
index c741c7924..ef7971a0b 100644
--- a/src/command_func.h
+++ b/src/command_func.h
@@ -49,7 +49,7 @@ void NetworkSendCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, Comman
extern Money _additional_cash_required;
bool IsValidCommand(uint32 cmd);
-byte GetCommandFlags(uint32 cmd);
+CommandFlags GetCommandFlags(uint32 cmd);
const char *GetCommandName(uint32 cmd);
Money GetAvailableMoneyForCommand();
bool IsCommandAllowedWhilePaused(uint32 cmd);
@@ -59,7 +59,7 @@ bool IsCommandAllowedWhilePaused(uint32 cmd);
* @param cmd_flags Flags from GetCommandFlags
* @return flags for DoCommand
*/
-static inline DoCommandFlag CommandFlagsToDCFlags(uint cmd_flags)
+static inline DoCommandFlag CommandFlagsToDCFlags(CommandFlags cmd_flags)
{
DoCommandFlag flags = DC_NONE;
if (cmd_flags & CMD_NO_WATER) flags |= DC_NO_WATER;
diff --git a/src/command_type.h b/src/command_type.h
index 606bfc287..f085edf07 100644
--- a/src/command_type.h
+++ b/src/command_type.h
@@ -355,6 +355,7 @@ enum CommandFlags {
CMD_NO_WATER = 0x40, ///< set the DC_NO_WATER flag on this command
CMD_CLIENT_ID = 0x80, ///< set p2 with the ClientID of the sending client.
};
+DECLARE_ENUM_AS_BIT_SET(CommandFlags)
/** Types of commands we have. */
enum CommandType {
@@ -406,10 +407,10 @@ typedef CommandCost CommandProc(TileIndex tile, DoCommandFlag flags, uint32 p1,
* the #CMD_AUTO, #CMD_OFFLINE and #CMD_SERVER values.
*/
struct Command {
- CommandProc *proc; ///< The procedure to actually executing
- const char *name; ///< A human readable name for the procedure
- byte flags; ///< The (command) flags to that apply to this command
- CommandType type; ///< The type of command.
+ CommandProc *proc; ///< The procedure to actually executing
+ const char *name; ///< A human readable name for the procedure
+ CommandFlags flags; ///< The (command) flags to that apply to this command
+ CommandType type; ///< The type of command.
};
/**