Size: a a a

cxx.Дискуссионная

2020 February 15

АК

Александр Караев in cxx.Дискуссионная
Ну тут два стула - если у тебя все filename известны на стадии компиляции, то мой комментарий актуален и ты зря сделал костыль с подсчётом хеша этого файла.
Если же названия файлов становятся известны только в рантайме, то компайл-тайм хеши тебе тем более не нужны.
источник

RM

Roy Mustang in cxx.Дискуссионная
А то что ты говоришь имя файла известно все время, то это так и задумано чтоб в случае внесения каких либо изменений в файл можно было вызвать метод Init с флагом Update по имени файла и тогда ConfigManager прочитает файл и добавит в существующий конфиг новое поле
источник

RM

Roy Mustang in cxx.Дискуссионная
Александр Караев
Ну тут два стула - если у тебя все filename известны на стадии компиляции, то мой комментарий актуален и ты зря сделал костыль с подсчётом хеша этого файла.
Если же названия файлов становятся известны только в рантайме, то компайл-тайм хеши тебе тем более не нужны.
Там все продумано и ненужного ничего нет
источник

RM

Roy Mustang in cxx.Дискуссионная
Хеши нужны чтоб старшие 32 бита под тип файла уходили, а младшие под идентификатор настроек внутри конфига если оно там нужно
источник

O

Ostrich Corpsе in cxx.Дискуссионная
Так
источник

RM

Roy Mustang in cxx.Дискуссионная
И это умещалось в uint64_t
источник

O

Ostrich Corpsе in cxx.Дискуссионная
Иди ка ты в pro
источник

АК

Александр Караев in cxx.Дискуссионная
Чтобы вызвать Init/Update по имени файла (что должно быть относительно редким), достаточно в одном месте смастерить маппинг "server" -> &Manager::server_config_, "proxy" -> &Manager::proxy_config_
источник

RM

Roy Mustang in cxx.Дискуссионная
Зачем
источник

O

Ostrich Corpsе in cxx.Дискуссионная
Там тебе и пояснят
источник

O

Ostrich Corpsе in cxx.Дискуссионная
И помогут
источник

RM

Roy Mustang in cxx.Дискуссионная
Мне не нужна помощь
источник

RM

Roy Mustang in cxx.Дискуссионная
Александр Караев
Чтобы вызвать Init/Update по имени файла (что должно быть относительно редким), достаточно в одном месте смастерить маппинг "server" -> &Manager::server_config_, "proxy" -> &Manager::proxy_config_
У меня один метод для всего
источник

RM

Roy Mustang in cxx.Дискуссионная
С разными флагами
источник

O

Ostrich Corpsе in cxx.Дискуссионная
источник

RM

Roy Mustang in cxx.Дискуссионная
И имя файла мне нужно знать заранее чтобы сделать хеш
источник

RM

Roy Mustang in cxx.Дискуссионная
А чтобы сделать хеш, оно должно быть constexpr
источник

RM

Roy Mustang in cxx.Дискуссионная
А зачем нужны хеши я объяснил
источник

RM

Roy Mustang in cxx.Дискуссионная
Там все взаимозависимо
источник

RM

Roy Mustang in cxx.Дискуссионная
Если ты не сделаешь имя файла constexpr, то будешь до конца работы программы генерировать crc32 хеши при каждом вызове чтения данных из менеджера
источник