Rollback: remove NUMBER in enums.

This commit is contained in:
Muzychenko Andrey 2022-08-29 08:10:38 +03:00
parent 0092343861
commit a489c7d897
2 changed files with 19 additions and 10 deletions

View File

@ -2,7 +2,7 @@
#include "translations.h" #include "translations.h"
#include "options.h" #include "options.h"
template <typename Key, typename Value> template <typename Key, typename Value, int N>
struct InitializedArray struct InitializedArray
{ {
@ -70,21 +70,25 @@ enum class lang {
Turkish, Turkish,
SimplifiedChinese, SimplifiedChinese,
TraditionalChinese, TraditionalChinese,
NUMBER
}; };
namespace { namespace {
// Use anonymous namespace instead of static to be able to forward declare translated_strings // Use anonymous namespace instead of static to be able to forward declare translated_strings
extern const InitializedArray< extern const InitializedArray<
lang, lang,
languageInfo languageInfo,
(int)lang::NUMBER
> languages; > languages;
extern const InitializedArray< extern const InitializedArray<
Msg, Msg,
InitializedArray< InitializedArray<
lang, lang,
const char* const char*,
> (int)lang::NUMBER
>,
(int)Msg::NUMBER
> translated_strings; > translated_strings;
lang current_language = lang::English; lang current_language = lang::English;
@ -99,8 +103,8 @@ const languageInfo* translations::get_languages(size_t* languages_number) {
void translations::set_current_language(const char* short_name) void translations::set_current_language(const char* short_name)
{ {
for(int i = 0; i < languages.size(); i++) { for(int i = 0; i < (int)lang::NUMBER; i++) {
if(!strcmp(short_name, languages[static_cast<lang>(i)].short_name)) { if(!strcmp(short_name, languages[(lang)i].short_name)) {
current_language = (lang) i; current_language = (lang) i;
return; return;
} }
@ -148,7 +152,7 @@ void translations::get_glyph_range(ImVector<ImWchar>* ranges)
{ {
ImFontGlyphRangesBuilder builder; ImFontGlyphRangesBuilder builder;
for(int i = 0; i < translated_strings.size(); i++) { for(int i = 0; i < (int)Msg::NUMBER; i++) {
const char* translation = get_translation((Msg)i); const char* translation = get_translation((Msg)i);
if(translation) if(translation)
{ {
@ -163,7 +167,8 @@ void translations::get_glyph_range(ImVector<ImWchar>* ranges)
namespace { namespace {
const InitializedArray< const InitializedArray<
lang, lang,
languageInfo languageInfo,
(int)lang::NUMBER
> languages = > languages =
{ {
{ lang::Arabic, {"ar", "Arabic" } }, { lang::Arabic, {"ar", "Arabic" } },
@ -196,8 +201,10 @@ const InitializedArray<
Msg, Msg,
InitializedArray< InitializedArray<
lang, lang,
const char* const char*,
> (int)lang::NUMBER
>,
(int)Msg::NUMBER
> translated_strings = > translated_strings =
{ {
{ {

View File

@ -253,6 +253,8 @@ enum class Msg
Menu1_UseMaxResolution_640x480, Menu1_UseMaxResolution_640x480,
Menu1_UseMaxResolution_800x600, Menu1_UseMaxResolution_800x600,
Menu1_UseMaxResolution_1024x768, Menu1_UseMaxResolution_1024x768,
NUMBER,
}; };
struct languageInfo struct languageInfo