Zmeika
простая аркадная игра
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Страницы
Файл ConfigFile.hpp
#include <map>
#include <string>
#include <sstream>
#include <type_traits>
Граф включаемых заголовочных файлов для ConfigFile.hpp:
Граф файлов, в которые включается этот файл:

См. исходные тексты.

Определения типов

using Dictionary = std::map< std::string, std::string >
 базовый тип словаря Подробнее...
 

Функции

Dictionary loadDictionary (const char *fn)
 загрузить словарь из файла Подробнее...
 
void refreshDictionary (const char *fn, const Dictionary &d)
 обновить файл содержимым словаря (сохранить словарь) Подробнее...
 
template<class T >
std::string toString (T t)
 вспомогательная функция для перевода значений в строки Подробнее...
 
template<class T >
std::decay< T >::type try_parse (const std::string &input, T &&default_value=T())
 вспомогательная конструкция для разбора строк "на месте". Подробнее...
 
template<class T >
std::decay< T >::type try_get (const Dictionary &dict, const std::string &key, T &&default_value=T())
 попытаться извлечь значение по ключу и одновременно разобрать его строковое представление Подробнее...
 

Подробное описание

Средства для чтения файлов-"словарей", состоящих из строчек вида "ключ" = "значение" // комментарий Нераспознанные строчки игнорируются (refreshDictionary сохраняет их нетронутыми).

Кавычки не обязательны, но если их нет, то читается только одно "слово". В начале полагается, что ключи и значения – строки.

Типы

using Dictionary = std::map<std::string, std::string>

базовый тип словаря

На данный момент это map, который хранит уникальные ключи. При совпадении ключей, будет сохранено только последнее из значений. При сохранении в файл, содержащий несколько записей с совпадающим ключом, все их значения будут заменены на одно.

Потенциальная проблема возможна в случае, если два игрока имеют одинаковое количество очков, так как в списке результатов игроков качестве ключа используется количество очков.

Функции

Dictionary loadDictionary ( const char *  fn)

загрузить словарь из файла

Аргументы
fnимя файла (чтение)
Возвращает
новый объект словаря (возможно пустой)

Граф вызова функции:

void refreshDictionary ( const char *  fn,
const Dictionary d 
)

обновить файл содержимым словаря (сохранить словарь)

Аргументы
fnимя файла (чтение-запись)
dобъект словаря – источник данных

Граф вызова функции:

template<class T >
std::string toString ( t)

вспомогательная функция для перевода значений в строки

Аргументы
tзначение произвольного типа, для которого определён оператор ostream& << T
Возвращает
объект строки, содержащей представление t

Граф вызова функции:

template<class T >
std::decay<T>::type try_get ( const Dictionary dict,
const std::string &  key,
T &&  default_value = T() 
)

попытаться извлечь значение по ключу и одновременно разобрать его строковое представление

Аргументы
dictсловарь, в котором будет произведён поиск значения
keyключ, по которому будет выбираться значения из словаря
default_valueзначение по умолчанию: то, что будет возвращено в случае ошибки разбора или отсутствия ключа в словаре
Возвращает
результат разбора в виде (значения) объекта типа T, "очищенного" от ссылок и cv-модификаторов

Граф вызовов:

Граф вызова функции:

template<class T >
std::decay<T>::type try_parse ( const std::string &  input,
T &&  default_value = T() 
)

вспомогательная конструкция для разбора строк "на месте".

Аргументы
inputстроковое представление, которое надо разобрать
default_valueзначение по умолчанию: то, что будет возвращено в случае ошибки разбора input
Возвращает
результат разбора в виде (значения) объекта типа T, "очищенного" от ссылок и cv-модификаторов

Граф вызова функции: