OpenTTD Source: IniLoadFile Struct Reference

OpenTTD Source 15.0-beta1

Public Types | Public Member Functions | Data Fields
IniLoadFile Struct Referenceabstract

Ini file that only supports loading. More...

`#include <ini_type.h>`

Inheritance diagram for IniLoadFile:

## Public Types
using | IniGroupNameList = std::initializer_list< std::string_view >

## Public Member Functions
| IniLoadFile (const IniGroupNameList &list_group_names={}, const IniGroupNameList &seq_group_names={})
| Construct a new in-memory Ini file representation.
const IniGroup * | GetGroup (std::string_view name) const
| Get the group with the given name.
IniGroup * | GetGroup (std::string_view name)
| Get the group with the given name.
IniGroup & | GetOrCreateGroup (std::string_view name)
| Get the group with the given name, and if it doesn't exist create a new group.
IniGroup & | CreateGroup (std::string_view name)
| Create an group with the given name.
void | RemoveGroup (std::string_view name)
| Remove the group with the given name.
void | LoadFromDisk (const std::string &filename, Subdirectory subdir)
| Load the Ini file's data from the disk.
virtual std::optional< FileHandle > | OpenFile (const std::string &filename, Subdirectory subdir, size_t *size)=0
| Open the INI file.
virtual void | ReportFileError (const char *const pre, const char *const buffer, const char *const post)=0
| Report an error about the file contents.

## Data Fields
std::list< IniGroup > | groups
| all groups in the ini
std::string | comment
| last comment in file
const IniGroupNameList | list_group_names
| list of group names that are lists
const IniGroupNameList | seq_group_names
| list of group names that are sequences.

## Detailed Description

Ini file that only supports loading.

Definition at line 50 of file ini_type.h.

## Member Typedef Documentation

## ◆ IniGroupNameList

using IniLoadFile::IniGroupNameList = std::initializer_list<std::string_view>

Definition at line 51 of file ini_type.h.

## Constructor & Destructor Documentation

## ◆ IniLoadFile()

IniLoadFile::IniLoadFile | ( | const IniGroupNameList & | list_group_names = `{}`,
|  | const IniGroupNameList & | seq_group_names = `{}`
| ) |  |

Construct a new in-memory Ini file representation.

Parameters

  list_group_names | A list with group names that should be loaded as lists instead of variables.

See also
  IGT_LIST

Parameters

  seq_group_names | A list with group names that should be loaded as lists of names.

See also
  IGT_SEQUENCE

Definition at line 108 of file ini_load.cpp.

## Member Function Documentation

## ◆ CreateGroup()

IniGroup & IniLoadFile::CreateGroup | ( | std::string_view | name | ) |

Create an group with the given name.

This does not reuse an existing group of the same name.

Parameters

  name | name of the group to create.

Returns
  the created group.

Definition at line 162 of file ini_load.cpp.

References groups, IGT_LIST, IGT_SEQUENCE, IGT_VARIABLES, list_group_names, and seq_group_names.

Referenced by GetOrCreateGroup(), and LoadFromDisk().

## ◆ GetGroup() [1/2]

IniGroup * IniLoadFile::GetGroup | ( | std::string_view | name | ) |

Get the group with the given name.

Parameters

  name | name of the group to find.

Returns
  The requested group or `nullptr` if not found.

Definition at line 133 of file ini_load.cpp.

References groups.

## ◆ GetGroup() [2/2]

const IniGroup * IniLoadFile::GetGroup | ( | std::string_view | name | ) | const

Get the group with the given name.

Parameters

  name | name of the group to find.

Returns
  The requested group or `nullptr` if not found.

Definition at line 119 of file ini_load.cpp.

References groups.

Referenced by DumpGroup(), DumpSections(), BaseSet< T, Tnum_files, Tsearch_in_tars >::FillSetDetails(), GraphicsSetLoadConfig(), GRFLoadConfig(), IniLoadSettingList(), IniLoadSettings(), IsConversionNeeded(), HotkeyList::Load(), LoadFromConfig(), PickerLoadConfig(), RemoveEntriesFromIni(), and SaveToConfig().

## ◆ GetOrCreateGroup()

IniGroup & IniLoadFile::GetOrCreateGroup | ( | std::string_view | name | ) |

Get the group with the given name, and if it doesn't exist create a new group.

Parameters

  name | name of the group to find.

Returns
  the requested group.

Definition at line 147 of file ini_load.cpp.

References CreateGroup(), and groups.

Referenced by GraphicsSetSaveConfig(), IniSaveSettingList(), IniSaveSettings(), PickerSaveConfig(), HotkeyList::Save(), and SaveVersionInConfig().

## ◆ LoadFromDisk()

void IniLoadFile::LoadFromDisk | ( | const std::string & | filename,
|  | Subdirectory | subdir
| ) |  |

Load the Ini file's data from the disk.

Parameters

  filename | the file to load.
  subdir | the sub directory to load the file from.

Precondition
  nothing has been loaded yet.

Definition at line 187 of file ini_load.cpp.

References IniItem::comment, IniGroup::comment, comment, CreateGroup(), IniGroup::CreateItem(), groups, IGT_SEQUENCE, OpenFile(), ReportFileError(), StrMakeValid(), IniGroup::type, and IniItem::value.

Referenced by BaseMedia< Tbase_set >::AddFile(), WindowDesc::LoadFromConfig(), ProcessIniFile(), and WindowDesc::SaveToConfig().

## ◆ OpenFile()

virtual std::optional< FileHandle > IniLoadFile::OpenFile | ( | const std::string & | filename,
|  | Subdirectory | subdir,
|  | size_t * | size
| ) |  |
| pure virtual

Open the INI file.

Parameters

  | filename | Name of the INI file.
  | subdir | The subdir to load the file from.
  [out] | size | Size of the opened file.

Returns
  File handle of the opened file, or `std::nullopt`.

Implemented in IniFile, and SettingsIniFile.

Referenced by LoadFromDisk().

## ◆ RemoveGroup()

void IniLoadFile::RemoveGroup | ( | std::string_view | name | ) |

Remove the group with the given name.

Parameters

  name | name of the group to remove.

Definition at line 175 of file ini_load.cpp.

References groups, and IniGroup::name.

Referenced by DeleteGRFPresetFromConfig(), and SaveToConfig().

## ◆ ReportFileError()

virtual void IniLoadFile::ReportFileError | ( | const char *const | pre,
|  | const char *const | buffer,
|  | const char *const | post
| ) |  |
| pure virtual

Report an error about the file contents.

Parameters

  pre | Prefix text of the buffer part.
  buffer | Part of the file with the error.
  post | Suffix text of the buffer part.

Implemented in IniFile, and SettingsIniFile.

Referenced by LoadFromDisk().

## Field Documentation

## ◆ comment

std::string IniLoadFile::comment

last comment in file

Definition at line 54 of file ini_type.h.

Referenced by LoadFromDisk(), and IniFile::SaveToDisk().

## ◆ groups

std::list<IniGroup> IniLoadFile::groups

all groups in the ini

Definition at line 53 of file ini_type.h.

Referenced by CreateGroup(), DumpSections(), GetGRFPresetList(), GetGroup(), GetGroup(), GetOrCreateGroup(), LoadFromDisk(), RemoveGroup(), and IniFile::SaveToDisk().

## ◆ list_group_names

const IniGroupNameList IniLoadFile::list_group_names

list of group names that are lists

Definition at line 55 of file ini_type.h.

Referenced by CreateGroup().

## ◆ seq_group_names

const IniGroupNameList IniLoadFile::seq_group_names

list of group names that are sequences.

Definition at line 56 of file ini_type.h.

Referenced by CreateGroup().

The documentation for this struct was generated from the following files:

- src/ini_type.h
- src/ini_load.cpp