MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / PickerLoadConfig

Function PickerLoadConfig

src/picker_gui.cpp:65–92  ·  view source on GitHub ↗

* Load favourites of a picker from config. * @param ini IniFile to load to. * @param callbacks Picker to load. */

Source from the content-addressed store, hash-verified

63 * @param callbacks Picker to load.
64 */
65static void PickerLoadConfig(const IniFile &ini, PickerCallbacks &callbacks)
66{
67 const IniGroup *group = ini.GetGroup(callbacks.ini_group);
68 if (group == nullptr) return;
69
70 callbacks.saved.clear();
71 for (const IniItem &item : group->items) {
72 std::array<uint8_t, 4> grfid_buf;
73
74 std::string_view str = item.name;
75
76 /* Try reading "<grfid>|<localid>" */
77 auto grfid_pos = str.find('|');
78 if (grfid_pos == std::string_view::npos) continue;
79
80 std::string_view grfid_str = str.substr(0, grfid_pos);
81 if (!ConvertHexToBytes(grfid_str, grfid_buf)) continue;
82
83 str = str.substr(grfid_pos + 1);
84 uint32_t grfid = grfid_buf[0] | (grfid_buf[1] << 8) | (grfid_buf[2] << 16) | (grfid_buf[3] << 24);
85 uint16_t localid;
86 auto [ptr, err] = std::from_chars(str.data(), str.data() + str.size(), localid);
87
88 if (err == std::errc{} && ptr == str.data() + str.size()) {
89 callbacks.saved.insert({grfid, localid, 0, 0});
90 }
91 }
92}
93
94/**
95 * Save favourites of a picker to config.

Callers 1

LoadFromConfigFunction · 0.85

Calls 8

ConvertHexToBytesFunction · 0.85
GetGroupMethod · 0.80
substrMethod · 0.80
clearMethod · 0.45
findMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected