From f4da8ece0ce02d6fe3dac6f8adc147e8a3d095a3 Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 26 Feb 2017 19:40:32 +0000 Subject: (svn r27755) -Codechange: Move TAB_SIZE to strings_type.h and use it consistently. --- src/language.h | 3 +-- src/newgrf_text.cpp | 7 +++---- src/strings_func.h | 7 ++++--- src/strings_type.h | 5 +++++ 4 files changed, 13 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/language.h b/src/language.h index ea3069756..8e09599c8 100644 --- a/src/language.h +++ b/src/language.h @@ -16,13 +16,12 @@ #ifdef WITH_ICU_SORT #include #endif /* WITH_ICU_SORT */ +#include "strings_type.h" static const uint8 CASE_GENDER_LEN = 16; ///< The (maximum) length of a case/gender string. static const uint8 MAX_NUM_GENDERS = 8; ///< Maximum number of supported genders. static const uint8 MAX_NUM_CASES = 16; ///< Maximum number of supported cases. -static const uint TAB_SIZE_BITS = 11; ///< The number of bits used for the tab size. -static const uint TAB_SIZE = 1 << TAB_SIZE_BITS; ///< The number of values in a tab. static const uint TAB_COUNT_BITS = 5; ///< The number of bits used for the amount of tabs. static const uint TAB_COUNT = 1 << TAB_COUNT_BITS; ///< The amount of tabs. diff --git a/src/newgrf_text.cpp b/src/newgrf_text.cpp index df00ef341..914d0ee1a 100644 --- a/src/newgrf_text.cpp +++ b/src/newgrf_text.cpp @@ -36,7 +36,6 @@ #include "safeguards.h" #define GRFTAB 28 -#define TABSIZE 11 /** * Explains the newgrf shift bit positioning. @@ -159,7 +158,7 @@ struct GRFTextEntry { static uint _num_grf_texts = 0; -static GRFTextEntry _grf_text[(1 << TABSIZE) * 3]; +static GRFTextEntry _grf_text[TAB_SIZE * 3]; static byte _currentLangID = GRFLX_ENGLISH; ///< by default, english is used. /** @@ -696,7 +695,7 @@ StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid_to_add, bool ne grfmsg(3, "Added 0x%X: grfid %08X string 0x%X lang 0x%X string '%s'", id, grfid, stringid, newtext->langid, newtext->text); - return (GRFTAB << TABSIZE) + id; + return MakeStringID(GRFTAB, 0) + id; // Id reaches across multiple tabs } /** @@ -706,7 +705,7 @@ StringID GetGRFStringID(uint32 grfid, uint16 stringid) { for (uint id = 0; id < _num_grf_texts; id++) { if (_grf_text[id].grfid == grfid && _grf_text[id].stringid == stringid) { - return (GRFTAB << TABSIZE) + id; + return MakeStringID(GRFTAB, 0) + id; // Id reaches across multiple tabs } } diff --git a/src/strings_func.h b/src/strings_func.h index 5d69121e3..3e3aa4840 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -24,7 +24,7 @@ */ static inline uint GetStringTab(StringID str) { - return GB(str, 11, 5); + return GB(str, TAB_SIZE_BITS, 5); } /** @@ -34,7 +34,7 @@ static inline uint GetStringTab(StringID str) */ static inline uint GetStringIndex(StringID str) { - return GB(str, 0, 11); + return GB(str, 0, TAB_SIZE_BITS); } /** @@ -45,7 +45,8 @@ static inline uint GetStringIndex(StringID str) */ static inline StringID MakeStringID(uint tab, uint index) { - return tab << 11 | index; + assert(index < TAB_SIZE); + return tab << TAB_SIZE_BITS | index; } class StringParameters { diff --git a/src/strings_type.h b/src/strings_type.h index c6eebd54d..780221d0a 100644 --- a/src/strings_type.h +++ b/src/strings_type.h @@ -26,6 +26,11 @@ enum TextDirection { TD_RTL, ///< Text is written right-to-left by default }; +/** Number of bits for the StringIndex within a StringTab */ +static const uint TAB_SIZE_BITS = 11; +/** Number of strings per StringTab */ +static const uint TAB_SIZE = 1 << TAB_SIZE_BITS; + /** Special string constants */ enum SpecialStrings { -- cgit v1.2.3-54-g00ecf