mnemonics: misc cleanup

Pass relevant information to the base class instead of overwriting
default values later, use objects instead of pointers to objects
to avoid having to new objects unnecessarily.
release-v0.4.0.1
moneromooo-monero 9 years ago
parent e3d2b135e7
commit e98f1114a0
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3

@ -49,9 +49,7 @@ namespace Language
class Dutch: public Base
{
public:
Dutch()
{
word_list = new std::vector<std::string>({
Dutch(): Base("Dutch", std::vector<std::string>({
"aalglad",
"aalscholver",
"aambeeld",
@ -1678,11 +1676,8 @@ namespace Language
"zwiep",
"zwijmel",
"zworen"
});
unique_prefix_length = 4;
word_map = new std::unordered_map<std::string, uint32_t>;
trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
language_name = "Dutch";
}), 4)
{
populate_maps();
}
};

@ -49,9 +49,7 @@ namespace Language
class English: public Base
{
public:
English()
{
word_list = new std::vector<std::string>({
English(): Base("English", std::vector<std::string>({
"abbey",
"abducts",
"ability",
@ -1678,11 +1676,8 @@ namespace Language
"zombie",
"zones",
"zoom"
});
unique_prefix_length = 3;
word_map = new std::unordered_map<std::string, uint32_t>;
trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
language_name = "English";
}), 3)
{
populate_maps();
}
};

@ -49,9 +49,7 @@ namespace Language
class French: public Base
{
public:
French()
{
word_list = new std::vector<std::string>({
French(): Base("French", std::vector<std::string>({
"abandon",
"abattre",
"aboi",
@ -1678,11 +1676,8 @@ namespace Language
"zinc",
"zone",
"zoom"
});
unique_prefix_length = 4;
word_map = new std::unordered_map<std::string, uint32_t>;
trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
language_name = "French";
}), 4)
{
populate_maps();
}
};

@ -51,9 +51,7 @@ namespace Language
class German: public Base
{
public:
German()
{
word_list = new std::vector<std::string>({
German(): Base("German", std::vector<std::string>({
"Abakus",
"Abart",
"abbilden",
@ -1680,11 +1678,8 @@ namespace Language
"Zündung",
"Zweck",
"Zyklop"
});
unique_prefix_length = 4;
word_map = new std::unordered_map<std::string, uint32_t>;
trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
language_name = "German";
}), 4)
{
populate_maps();
}
};

@ -51,9 +51,7 @@ namespace Language
class Italian: public Base
{
public:
Italian()
{
word_list = new std::vector<std::string>({
Italian(): Base("Italian", std::vector<std::string>({
"abbinare",
"abbonato",
"abisso",
@ -1680,11 +1678,8 @@ namespace Language
"zolfo",
"zombie",
"zucchero"
});
unique_prefix_length = 4;
word_map = new std::unordered_map<std::string, uint32_t>;
trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
language_name = "Italian";
}), 4)
{
populate_maps();
}
};

@ -51,9 +51,7 @@ namespace Language
class Japanese: public Base
{
public:
Japanese()
{
word_list = new std::vector<std::string>({
Japanese(): Base("Japanese", std::vector<std::string>({
"あいこくしん",
"あいさつ",
"あいだ",
@ -1680,11 +1678,8 @@ namespace Language
"ひさん",
"びじゅつかん",
"ひしょ"
});
unique_prefix_length = 3;
word_map = new std::unordered_map<std::string, uint32_t>;
trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
language_name = "Japanese";
}), 3)
{
populate_maps();
}
};

@ -73,9 +73,9 @@ namespace Language
class Base
{
protected:
std::vector<std::string> *word_list; /*!< A pointer to the array of words */
std::unordered_map<std::string, uint32_t> *word_map; /*!< hash table to find word's index */
std::unordered_map<std::string, uint32_t> *trimmed_word_map; /*!< hash table to find word's trimmed index */
const std::vector<std::string> word_list; /*!< A pointer to the array of words */
std::unordered_map<std::string, uint32_t> word_map; /*!< hash table to find word's index */
std::unordered_map<std::string, uint32_t> trimmed_word_map; /*!< hash table to find word's trimmed index */
std::string language_name; /*!< Name of language */
uint32_t unique_prefix_length; /*!< Number of unique starting characters to trim the wordlist to when matching */
/*!
@ -84,33 +84,29 @@ namespace Language
void populate_maps()
{
int ii;
std::vector<std::string>::iterator it;
for (it = word_list->begin(), ii = 0; it != word_list->end(); it++, ii++)
std::vector<std::string>::const_iterator it;
for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
{
(*word_map)[*it] = ii;
word_map[*it] = ii;
if (it->length() > unique_prefix_length)
{
(*trimmed_word_map)[utf8prefix(*it, unique_prefix_length)] = ii;
trimmed_word_map[utf8prefix(*it, unique_prefix_length)] = ii;
}
else
{
(*trimmed_word_map)[*it] = ii;
trimmed_word_map[*it] = ii;
}
}
}
public:
Base()
Base(const char *language_name, const std::vector<std::string> &words, uint32_t prefix_length):
word_list(words),
unique_prefix_length(prefix_length),
language_name(language_name)
{
word_list = new std::vector<std::string>;
word_map = new std::unordered_map<std::string, uint32_t>;
trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
unique_prefix_length = 4;
}
virtual ~Base()
{
delete word_list;
delete word_map;
delete trimmed_word_map;
}
/*!
* \brief Returns a pointer to the word list.
@ -118,7 +114,7 @@ namespace Language
*/
const std::vector<std::string>& get_word_list() const
{
return *word_list;
return word_list;
}
/*!
* \brief Returns a pointer to the word map.
@ -126,7 +122,7 @@ namespace Language
*/
const std::unordered_map<std::string, uint32_t>& get_word_map() const
{
return *word_map;
return word_map;
}
/*!
* \brief Returns a pointer to the trimmed word map.
@ -134,13 +130,13 @@ namespace Language
*/
const std::unordered_map<std::string, uint32_t>& get_trimmed_word_map() const
{
return *trimmed_word_map;
return trimmed_word_map;
}
/*!
* \brief Returns the name of the language.
* \return Name of the language.
*/
std::string get_language_name() const
const std::string &get_language_name() const
{
return language_name;
}

@ -51,9 +51,7 @@ namespace Language
class OldEnglish: public Base
{
public:
OldEnglish()
{
word_list = new std::vector<std::string>({
OldEnglish(): Base("OldEnglish", std::vector<std::string>({
"like",
"just",
"love",
@ -1680,11 +1678,8 @@ namespace Language
"unseen",
"weapon",
"weary"
});
unique_prefix_length = 4;
word_map = new std::unordered_map<std::string, uint32_t>;
trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
language_name = "OldEnglish";
}), 4)
{
populate_maps();
}
};

@ -49,9 +49,7 @@ namespace Language
class Portuguese: public Base
{
public:
Portuguese()
{
word_list = new std::vector<std::string>({
Portuguese(): Base("Portuguese", std::vector<std::string>({
"abaular",
"abdominal",
"abeto",
@ -1678,11 +1676,8 @@ namespace Language
"zeloso",
"zenite",
"zumbi"
});
unique_prefix_length = 4;
word_map = new std::unordered_map<std::string, uint32_t>;
trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
language_name = "Portuguese";
}), 4)
{
populate_maps();
}
};

@ -51,9 +51,7 @@ namespace Language
class Russian: public Base
{
public:
Russian()
{
word_list = new std::vector<std::string>({
Russian(): Base("Russian", std::vector<std::string>({
"абажур",
"абзац",
"абонент",
@ -1680,11 +1678,8 @@ namespace Language
"яхта",
"ячейка",
"ящик"
});
unique_prefix_length = 4;
word_map = new std::unordered_map<std::string, uint32_t>;
trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
language_name = "Russian";
}), 4)
{
populate_maps();
}
};

@ -51,9 +51,7 @@ namespace Language
class Spanish: public Base
{
public:
Spanish()
{
word_list = new std::vector<std::string>({
Spanish(): Base("Spanish", std::vector<std::string>({
"ábaco",
"abdomen",
"abeja",
@ -1680,11 +1678,8 @@ namespace Language
"risa",
"ritmo",
"rito"
});
unique_prefix_length = 4;
word_map = new std::unordered_map<std::string, uint32_t>;
trimmed_word_map = new std::unordered_map<std::string, uint32_t>;
language_name = "Spanish";
}), 4)
{
populate_maps();
}
};

Loading…
Cancel
Save