From f60042942473640e60136e7a43d2bc6a4c824a26 Mon Sep 17 00:00:00 2001 From: rubidium Date: Mon, 14 Nov 2011 20:38:56 +0000 Subject: (svn r23215) -Codechange: stricter type safety for CommandFlags --- src/command.cpp | 6 +++--- src/command_func.h | 4 ++-- src/command_type.h | 9 +++++---- 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. }; /** -- cgit v1.2.3-70-g09d2