mirror of https://github.com/OpenTTD/OpenTTD.git
Codechange: Pass initializer list instead of null-terminated list of group types.
This commit is contained in:
parent
1fecbeff76
commit
8bd06807e4
|
@ -32,9 +32,9 @@
|
|||
|
||||
/**
|
||||
* Create a new ini file with given group names.
|
||||
* @param list_group_names A \c nullptr terminated list with group names that should be loaded as lists instead of variables. @see IGT_LIST
|
||||
* @param list_group_names A list with group names that should be loaded as lists instead of variables. @see IGT_LIST
|
||||
*/
|
||||
IniFile::IniFile(const char * const *list_group_names) : IniLoadFile(list_group_names)
|
||||
IniFile::IniFile(const IniGroupNameList &list_group_names) : IniLoadFile(list_group_names)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -56,22 +56,8 @@ IniGroup::IniGroup(IniLoadFile *parent, const std::string &name) : next(nullptr)
|
|||
*parent->last_group = this;
|
||||
parent->last_group = &this->next;
|
||||
|
||||
if (parent->list_group_names != nullptr) {
|
||||
for (uint i = 0; parent->list_group_names[i] != nullptr; i++) {
|
||||
if (this->name == parent->list_group_names[i]) {
|
||||
this->type = IGT_LIST;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (parent->seq_group_names != nullptr) {
|
||||
for (uint i = 0; parent->seq_group_names[i] != nullptr; i++) {
|
||||
if (this->name == parent->seq_group_names[i]) {
|
||||
this->type = IGT_SEQUENCE;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (std::find(parent->list_group_names.begin(), parent->list_group_names.end(), name) != parent->list_group_names.end()) this->type = IGT_LIST;
|
||||
if (std::find(parent->seq_group_names.begin(), parent->seq_group_names.end(), name) != parent->seq_group_names.end()) this->type = IGT_SEQUENCE;
|
||||
}
|
||||
|
||||
/** Free everything we loaded. */
|
||||
|
@ -156,10 +142,10 @@ void IniGroup::Clear()
|
|||
|
||||
/**
|
||||
* Construct a new in-memory Ini file representation.
|
||||
* @param list_group_names A \c nullptr terminated list with group names that should be loaded as lists instead of variables. @see IGT_LIST
|
||||
* @param seq_group_names A \c nullptr terminated list with group names that should be loaded as lists of names. @see IGT_SEQUENCE
|
||||
* @param list_group_names A list with group names that should be loaded as lists instead of variables. @see IGT_LIST
|
||||
* @param seq_group_names A list with group names that should be loaded as lists of names. @see IGT_SEQUENCE
|
||||
*/
|
||||
IniLoadFile::IniLoadFile(const char * const *list_group_names, const char * const *seq_group_names) :
|
||||
IniLoadFile::IniLoadFile(const IniGroupNameList &list_group_names, const IniGroupNameList &seq_group_names) :
|
||||
group(nullptr),
|
||||
list_group_names(list_group_names),
|
||||
seq_group_names(seq_group_names)
|
||||
|
|
|
@ -53,13 +53,15 @@ struct IniGroup {
|
|||
|
||||
/** Ini file that only supports loading. */
|
||||
struct IniLoadFile {
|
||||
using IniGroupNameList = std::initializer_list<std::string_view>;
|
||||
|
||||
IniGroup *group; ///< the first group in the ini
|
||||
IniGroup **last_group; ///< the last group in the ini
|
||||
std::string comment; ///< last comment in file
|
||||
const char * const *list_group_names; ///< nullptr terminated list with group names that are lists
|
||||
const char * const *seq_group_names; ///< nullptr terminated list with group names that are sequences.
|
||||
const IniGroupNameList list_group_names; ///< list of group names that are lists
|
||||
const IniGroupNameList seq_group_names; ///< list of group names that are sequences.
|
||||
|
||||
IniLoadFile(const char * const *list_group_names = nullptr, const char * const *seq_group_names = nullptr);
|
||||
IniLoadFile(const IniGroupNameList &list_group_names = {}, const IniGroupNameList &seq_group_names = {});
|
||||
virtual ~IniLoadFile();
|
||||
|
||||
IniGroup *GetGroup(const std::string &name) const;
|
||||
|
@ -89,7 +91,7 @@ struct IniLoadFile {
|
|||
|
||||
/** Ini file that supports both loading and saving. */
|
||||
struct IniFile : IniLoadFile {
|
||||
IniFile(const char * const *list_group_names = nullptr);
|
||||
IniFile(const IniGroupNameList &list_group_names = {});
|
||||
|
||||
bool SaveToDisk(const std::string &filename);
|
||||
|
||||
|
|
|
@ -131,12 +131,11 @@ static bool IsSignedVarMemType(VarType vt)
|
|||
*/
|
||||
class ConfigIniFile : public IniFile {
|
||||
private:
|
||||
inline static const char * const list_group_names[] = {
|
||||
inline static const IniGroupNameList list_group_names = {
|
||||
"bans",
|
||||
"newgrf",
|
||||
"servers",
|
||||
"server_bind_addresses",
|
||||
nullptr,
|
||||
};
|
||||
|
||||
public:
|
||||
|
|
|
@ -151,10 +151,10 @@ private:
|
|||
struct SettingsIniFile : IniLoadFile {
|
||||
/**
|
||||
* Construct a new ini loader.
|
||||
* @param list_group_names A \c nullptr terminated list with group names that should be loaded as lists instead of variables. @see IGT_LIST
|
||||
* @param seq_group_names A \c nullptr terminated list with group names that should be loaded as lists of names. @see IGT_SEQUENCE
|
||||
* @param list_group_names A list with group names that should be loaded as lists instead of variables. @see IGT_LIST
|
||||
* @param seq_group_names A list with group names that should be loaded as lists of names. @see IGT_SEQUENCE
|
||||
*/
|
||||
SettingsIniFile(const char * const *list_group_names = nullptr, const char * const *seq_group_names = nullptr) :
|
||||
SettingsIniFile(const IniGroupNameList &list_group_names = {}, const IniGroupNameList &seq_group_names = {}) :
|
||||
IniLoadFile(list_group_names, seq_group_names)
|
||||
{
|
||||
}
|
||||
|
@ -416,9 +416,9 @@ static const OptionData _opts[] = {
|
|||
*/
|
||||
static void ProcessIniFile(const char *fname)
|
||||
{
|
||||
static const char * const seq_groups[] = {PREAMBLE_GROUP_NAME, POSTAMBLE_GROUP_NAME, nullptr};
|
||||
static const IniLoadFile::IniGroupNameList seq_groups = {PREAMBLE_GROUP_NAME, POSTAMBLE_GROUP_NAME};
|
||||
|
||||
SettingsIniFile ini{nullptr, seq_groups};
|
||||
SettingsIniFile ini{{}, seq_groups};
|
||||
ini.LoadFromDisk(fname, NO_DIRECTORY);
|
||||
|
||||
DumpGroup(ini, PREAMBLE_GROUP_NAME);
|
||||
|
|
Loading…
Reference in New Issue