diff --git a/src/common/impl/jsonconfig.c b/src/common/impl/jsonconfig.c index 232d155e5..336d27212 100644 --- a/src/common/impl/jsonconfig.c +++ b/src/common/impl/jsonconfig.c @@ -417,6 +417,7 @@ static const char* printJsonConfig(FFdata* data, bool prepare) { return nullptr; } +[[gnu::cold]] void ffPrintJsonConfig(FFdata* data, bool prepare) { yyjson_mut_doc* jsonDoc = data->resultDoc; const char* error = printJsonConfig(data, prepare); diff --git a/src/common/impl/percent.c b/src/common/impl/percent.c index ef276484f..3ffbf9331 100644 --- a/src/common/impl/percent.c +++ b/src/common/impl/percent.c @@ -285,6 +285,7 @@ bool ffPercentParseJsonObject(yyjson_val* key, yyjson_val* value, FFPercentageMo return true; } +[[gnu::cold]] void ffPercentGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFPercentageModuleConfig config) { yyjson_mut_val* percent = yyjson_mut_obj_add_obj(doc, module, "percent"); yyjson_mut_obj_add_uint(doc, percent, "green", config.green); diff --git a/src/common/impl/temps.c b/src/common/impl/temps.c index 652f3fbb2..db2144142 100644 --- a/src/common/impl/temps.c +++ b/src/common/impl/temps.c @@ -154,6 +154,7 @@ bool ffTempsParseJsonObject(yyjson_val* key, yyjson_val* value, bool* useTemp, F return true; } +[[gnu::cold]] void ffTempsGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, bool temp, FFColorRangeConfig config) { if (!temp) { yyjson_mut_obj_add_bool(doc, module, "temp", false); diff --git a/src/modules/battery/battery.c b/src/modules/battery/battery.c index 57c4d5666..270f206c8 100644 --- a/src/modules/battery/battery.c +++ b/src/modules/battery/battery.c @@ -214,6 +214,7 @@ void ffParseBatteryJsonObject(FFBatteryOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateBatteryJsonConfig(FFBatteryOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/bios/bios.c b/src/modules/bios/bios.c index 3bde59597..7cef769f9 100644 --- a/src/modules/bios/bios.c +++ b/src/modules/bios/bios.c @@ -85,6 +85,7 @@ void ffParseBiosJsonObject(FFBiosOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateBiosJsonConfig(FFBiosOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/bluetooth/bluetooth.c b/src/modules/bluetooth/bluetooth.c index 66d6c809a..cabac5e6c 100644 --- a/src/modules/bluetooth/bluetooth.c +++ b/src/modules/bluetooth/bluetooth.c @@ -143,6 +143,7 @@ void ffParseBluetoothJsonObject(FFBluetoothOptions* options, yyjson_val* module) } } +[[gnu::cold]] void ffGenerateBluetoothJsonConfig(FFBluetoothOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/bluetoothradio/bluetoothradio.c b/src/modules/bluetoothradio/bluetoothradio.c index 1ea2d8699..238374f90 100644 --- a/src/modules/bluetoothradio/bluetoothradio.c +++ b/src/modules/bluetoothradio/bluetoothradio.c @@ -152,6 +152,7 @@ void ffParseBluetoothRadioJsonObject(FFBluetoothRadioOptions* options, yyjson_va } } +[[gnu::cold]] void ffGenerateBluetoothRadioJsonConfig(FFBluetoothRadioOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/board/board.c b/src/modules/board/board.c index c0f49baaa..bda70b062 100644 --- a/src/modules/board/board.c +++ b/src/modules/board/board.c @@ -60,6 +60,7 @@ void ffParseBoardJsonObject(FFBoardOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateBoardJsonConfig(FFBoardOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/bootmgr/bootmgr.c b/src/modules/bootmgr/bootmgr.c index 45e29bbbb..f176ef1b6 100644 --- a/src/modules/bootmgr/bootmgr.c +++ b/src/modules/bootmgr/bootmgr.c @@ -63,6 +63,7 @@ void ffParseBootmgrJsonObject(FFBootmgrOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateBootmgrJsonConfig(FFBootmgrOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/brightness/brightness.c b/src/modules/brightness/brightness.c index 3cdb28bf1..dbcc9fe84 100644 --- a/src/modules/brightness/brightness.c +++ b/src/modules/brightness/brightness.c @@ -135,6 +135,7 @@ void ffParseBrightnessJsonObject(FFBrightnessOptions* options, yyjson_val* modul } } +[[gnu::cold]] void ffGenerateBrightnessJsonConfig(FFBrightnessOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/btrfs/btrfs.c b/src/modules/btrfs/btrfs.c index 3cbacd9fd..643397577 100644 --- a/src/modules/btrfs/btrfs.c +++ b/src/modules/btrfs/btrfs.c @@ -141,6 +141,7 @@ void ffParseBtrfsJsonObject(FFBtrfsOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateBtrfsJsonConfig(FFBtrfsOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/camera/camera.c b/src/modules/camera/camera.c index 3263e0f18..8970c9f4f 100644 --- a/src/modules/camera/camera.c +++ b/src/modules/camera/camera.c @@ -71,6 +71,7 @@ void ffParseCameraJsonObject(FFCameraOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateCameraJsonConfig(FFCameraOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/chassis/chassis.c b/src/modules/chassis/chassis.c index 6049d533d..39aefe9a5 100644 --- a/src/modules/chassis/chassis.c +++ b/src/modules/chassis/chassis.c @@ -62,6 +62,7 @@ void ffParseChassisJsonObject(FFChassisOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateChassisJsonConfig(FFChassisOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/codec/codec.c b/src/modules/codec/codec.c index e404e8b20..93ab1b4a9 100644 --- a/src/modules/codec/codec.c +++ b/src/modules/codec/codec.c @@ -186,6 +186,7 @@ void ffParseCodecJsonObject(FFCodecOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateCodecJsonConfig(FFCodecOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); yyjson_mut_obj_add_bool(doc, module, "splitGPU", options->splitGPU); diff --git a/src/modules/colors/colors.c b/src/modules/colors/colors.c index b7e74c261..fcef805cc 100644 --- a/src/modules/colors/colors.c +++ b/src/modules/colors/colors.c @@ -236,6 +236,7 @@ void ffParseColorsJsonObject(FFColorsOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateColorsJsonConfig(FFColorsOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/command/command.c b/src/modules/command/command.c index 817bcf0d1..2e6336274 100644 --- a/src/modules/command/command.c +++ b/src/modules/command/command.c @@ -103,6 +103,7 @@ void ffParseCommandJsonObject(FFCommandOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateCommandJsonConfig(FFCommandOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/cpu/cpu.c b/src/modules/cpu/cpu.c index 9d5257687..4c9a9e617 100644 --- a/src/modules/cpu/cpu.c +++ b/src/modules/cpu/cpu.c @@ -144,6 +144,7 @@ void ffParseCPUJsonObject(FFCPUOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateCPUJsonConfig(FFCPUOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/cpucache/cpucache.c b/src/modules/cpucache/cpucache.c index bf93dcca5..ce47a1927 100644 --- a/src/modules/cpucache/cpucache.c +++ b/src/modules/cpucache/cpucache.c @@ -151,6 +151,7 @@ void ffParseCPUCacheJsonObject(FFCPUCacheOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateCPUCacheJsonConfig(FFCPUCacheOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/cpuusage/cpuusage.c b/src/modules/cpuusage/cpuusage.c index a5a7f2dab..6881a795f 100644 --- a/src/modules/cpuusage/cpuusage.c +++ b/src/modules/cpuusage/cpuusage.c @@ -144,6 +144,7 @@ void ffParseCPUUsageJsonObject(FFCPUUsageOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateCPUUsageJsonConfig(FFCPUUsageOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/cursor/cursor.c b/src/modules/cursor/cursor.c index 7bc274802..d8ceaf946 100644 --- a/src/modules/cursor/cursor.c +++ b/src/modules/cursor/cursor.c @@ -62,6 +62,7 @@ void ffParseCursorJsonObject(FFCursorOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateCursorJsonConfig(FFCursorOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/custom/custom.c b/src/modules/custom/custom.c index afb44196f..4a81879f0 100644 --- a/src/modules/custom/custom.c +++ b/src/modules/custom/custom.c @@ -9,6 +9,7 @@ bool ffPrintCustom(FFCustomOptions* options) { return true; } +[[gnu::cold]] void ffGenerateCustomJsonConfig(FFCustomOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/datetime/datetime.c b/src/modules/datetime/datetime.c index b3c505a16..ffd02b608 100644 --- a/src/modules/datetime/datetime.c +++ b/src/modules/datetime/datetime.c @@ -132,6 +132,7 @@ void ffParseDateTimeJsonObject(FFDateTimeOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateDateTimeJsonConfig(FFDateTimeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/de/de.c b/src/modules/de/de.c index a7bb99c3a..0a990d948 100644 --- a/src/modules/de/de.c +++ b/src/modules/de/de.c @@ -51,6 +51,7 @@ void ffParseDEJsonObject(FFDEOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateDEJsonConfig(FFDEOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/disk/disk.c b/src/modules/disk/disk.c index a533b450d..117b26232 100644 --- a/src/modules/disk/disk.c +++ b/src/modules/disk/disk.c @@ -332,6 +332,7 @@ void ffParseDiskJsonObject(FFDiskOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateDiskJsonConfig(FFDiskOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/diskio/diskio.c b/src/modules/diskio/diskio.c index f87aee72b..c6424cf74 100644 --- a/src/modules/diskio/diskio.c +++ b/src/modules/diskio/diskio.c @@ -125,6 +125,7 @@ void ffParseDiskIOJsonObject(FFDiskIOOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateDiskIOJsonConfig(FFDiskIOOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/display/display.c b/src/modules/display/display.c index b6d8a13f2..9303cf49e 100644 --- a/src/modules/display/display.c +++ b/src/modules/display/display.c @@ -278,6 +278,7 @@ void ffParseDisplayJsonObject(FFDisplayOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateDisplayJsonConfig(FFDisplayOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/dns/dns.c b/src/modules/dns/dns.c index 3c76a0b7f..4bc96c682 100644 --- a/src/modules/dns/dns.c +++ b/src/modules/dns/dns.c @@ -84,6 +84,7 @@ void ffParseDNSJsonObject(FFDNSOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateDNSJsonConfig(FFDNSOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/editor/editor.c b/src/modules/editor/editor.c index 7a0f4240e..afe65a75b 100644 --- a/src/modules/editor/editor.c +++ b/src/modules/editor/editor.c @@ -70,6 +70,7 @@ void ffParseEditorJsonObject(FFEditorOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateEditorJsonConfig(FFEditorOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/font/font.c b/src/modules/font/font.c index 47b6d8f2d..0ac29b345 100644 --- a/src/modules/font/font.c +++ b/src/modules/font/font.c @@ -53,6 +53,7 @@ void ffParseFontJsonObject(FFFontOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateFontJsonConfig(FFFontOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/gamepad/gamepad.c b/src/modules/gamepad/gamepad.c index 81dad9e49..a014fb9d7 100644 --- a/src/modules/gamepad/gamepad.c +++ b/src/modules/gamepad/gamepad.c @@ -128,6 +128,7 @@ void ffParseGamepadJsonObject(FFGamepadOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateGamepadJsonConfig(FFGamepadOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/gpu/gpu.c b/src/modules/gpu/gpu.c index 56c0eed62..7d5c3fa84 100644 --- a/src/modules/gpu/gpu.c +++ b/src/modules/gpu/gpu.c @@ -286,6 +286,7 @@ void ffParseGPUJsonObject(FFGPUOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateGPUJsonConfig(FFGPUOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/host/host.c b/src/modules/host/host.c index ef7288776..0552fc275 100644 --- a/src/modules/host/host.c +++ b/src/modules/host/host.c @@ -79,6 +79,7 @@ void ffParseHostJsonObject(FFHostOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateHostJsonConfig(FFHostOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/icons/icons.c b/src/modules/icons/icons.c index 358cc3dba..5b1393373 100644 --- a/src/modules/icons/icons.c +++ b/src/modules/icons/icons.c @@ -56,6 +56,7 @@ void ffParseIconsJsonObject(FFIconsOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateIconsJsonConfig(FFIconsOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/initsystem/initsystem.c b/src/modules/initsystem/initsystem.c index 3b5db0d8b..ae33286a5 100644 --- a/src/modules/initsystem/initsystem.c +++ b/src/modules/initsystem/initsystem.c @@ -58,6 +58,7 @@ void ffParseInitSystemJsonObject(FFInitSystemOptions* options, yyjson_val* modul } } +[[gnu::cold]] void ffGenerateInitSystemJsonConfig(FFInitSystemOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/kernel/kernel.c b/src/modules/kernel/kernel.c index 322b2b41d..ef7daa2ba 100644 --- a/src/modules/kernel/kernel.c +++ b/src/modules/kernel/kernel.c @@ -36,6 +36,7 @@ void ffParseKernelJsonObject(FFKernelOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateKernelJsonConfig(FFKernelOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/keyboard/keyboard.c b/src/modules/keyboard/keyboard.c index d7aae3ae5..47c6be684 100644 --- a/src/modules/keyboard/keyboard.c +++ b/src/modules/keyboard/keyboard.c @@ -92,6 +92,7 @@ void ffParseKeyboardJsonObject(FFKeyboardOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateKeyboardJsonConfig(FFKeyboardOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/lm/lm.c b/src/modules/lm/lm.c index ece31fb0e..6f6d88e13 100644 --- a/src/modules/lm/lm.c +++ b/src/modules/lm/lm.c @@ -58,6 +58,7 @@ void ffParseLMJsonObject(FFLMOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateLMJsonConfig(FFLMOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/loadavg/loadavg.c b/src/modules/loadavg/loadavg.c index 8d19eabef..7482a5144 100644 --- a/src/modules/loadavg/loadavg.c +++ b/src/modules/loadavg/loadavg.c @@ -116,6 +116,7 @@ void ffParseLoadavgJsonObject(FFLoadavgOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateLoadavgJsonConfig(FFLoadavgOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/locale/locale.c b/src/modules/locale/locale.c index 97d45a8d2..adfe35cbb 100644 --- a/src/modules/locale/locale.c +++ b/src/modules/locale/locale.c @@ -34,6 +34,7 @@ void ffParseLocaleJsonObject(FFLocaleOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateLocaleJsonConfig(FFLocaleOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/localip/localip.c b/src/modules/localip/localip.c index 49103bd0b..95cf2d06a 100644 --- a/src/modules/localip/localip.c +++ b/src/modules/localip/localip.c @@ -314,6 +314,7 @@ void ffParseLocalIpJsonObject(FFLocalIpOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateLocalIpJsonConfig(FFLocalIpOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/media/media.c b/src/modules/media/media.c index 8205ad340..953c56f44 100644 --- a/src/modules/media/media.c +++ b/src/modules/media/media.c @@ -205,6 +205,7 @@ void ffParseMediaJsonObject(FFMediaOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateMediaJsonConfig(FFMediaOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/memory/memory.c b/src/modules/memory/memory.c index 9b4ac2394..a3b2ae25b 100644 --- a/src/modules/memory/memory.c +++ b/src/modules/memory/memory.c @@ -86,6 +86,7 @@ void ffParseMemoryJsonObject(FFMemoryOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateMemoryJsonConfig(FFMemoryOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/monitor/monitor.c b/src/modules/monitor/monitor.c index 7022a044d..9644b5209 100644 --- a/src/modules/monitor/monitor.c +++ b/src/modules/monitor/monitor.c @@ -87,6 +87,7 @@ void ffParseMonitorJsonObject(FFMonitorOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateMonitorJsonConfig(FFMonitorOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/mouse/mouse.c b/src/modules/mouse/mouse.c index 6cd28e487..7fc763d5d 100644 --- a/src/modules/mouse/mouse.c +++ b/src/modules/mouse/mouse.c @@ -91,6 +91,7 @@ void ffParseMouseJsonObject(FFMouseOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateMouseJsonConfig(FFMouseOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/netio/netio.c b/src/modules/netio/netio.c index 70d74f64a..10ad5a5f6 100644 --- a/src/modules/netio/netio.c +++ b/src/modules/netio/netio.c @@ -140,6 +140,7 @@ void ffParseNetIOJsonObject(FFNetIOOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateNetIOJsonConfig(FFNetIOOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/opencl/opencl.c b/src/modules/opencl/opencl.c index b6c45430b..5809f33a5 100644 --- a/src/modules/opencl/opencl.c +++ b/src/modules/opencl/opencl.c @@ -39,6 +39,7 @@ void ffParseOpenCLJsonObject(FFOpenCLOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateOpenCLJsonConfig(FFOpenCLOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/opengl/opengl.c b/src/modules/opengl/opengl.c index 79bfc58f5..22339faad 100644 --- a/src/modules/opengl/opengl.c +++ b/src/modules/opengl/opengl.c @@ -69,6 +69,7 @@ void ffParseOpenGLJsonObject(FFOpenGLOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateOpenGLJsonConfig(FFOpenGLOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/os/os.c b/src/modules/os/os.c index 085a2058e..47d5d2a9a 100644 --- a/src/modules/os/os.c +++ b/src/modules/os/os.c @@ -117,6 +117,7 @@ void ffParseOSJsonObject(FFOSOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateOSJsonConfig(FFOSOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 307e1ccd4..f6b4f075c 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -376,6 +376,7 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGeneratePackagesJsonConfig(FFPackagesOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/physicaldisk/physicaldisk.c b/src/modules/physicaldisk/physicaldisk.c index 9da0d8214..4889223c5 100644 --- a/src/modules/physicaldisk/physicaldisk.c +++ b/src/modules/physicaldisk/physicaldisk.c @@ -171,6 +171,7 @@ void ffParsePhysicalDiskJsonObject(FFPhysicalDiskOptions* options, yyjson_val* m } } +[[gnu::cold]] void ffGeneratePhysicalDiskJsonConfig(FFPhysicalDiskOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/physicalmemory/physicalmemory.c b/src/modules/physicalmemory/physicalmemory.c index 29f281fde..195b2ce76 100644 --- a/src/modules/physicalmemory/physicalmemory.c +++ b/src/modules/physicalmemory/physicalmemory.c @@ -105,6 +105,7 @@ void ffParsePhysicalMemoryJsonObject(FFPhysicalMemoryOptions* options, yyjson_va } } +[[gnu::cold]] void ffGeneratePhysicalMemoryJsonConfig(FFPhysicalMemoryOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); yyjson_mut_obj_add_bool(doc, module, "showEmptySlots", options->showEmptySlots); diff --git a/src/modules/player/player.c b/src/modules/player/player.c index f50aca999..7674522b1 100644 --- a/src/modules/player/player.c +++ b/src/modules/player/player.c @@ -89,6 +89,7 @@ void ffParsePlayerJsonObject(FFPlayerOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGeneratePlayerJsonConfig(FFPlayerOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/poweradapter/poweradapter.c b/src/modules/poweradapter/poweradapter.c index 3780ba103..f3c26d10a 100644 --- a/src/modules/poweradapter/poweradapter.c +++ b/src/modules/poweradapter/poweradapter.c @@ -51,6 +51,7 @@ bool ffPrintPowerAdapter(FFPowerAdapterOptions* options) { return true; } +[[gnu::cold]] void ffGeneratePowerAdapterJsonConfig(FFPowerAdapterOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/processes/processes.c b/src/modules/processes/processes.c index d7bafbff0..12f769a59 100644 --- a/src/modules/processes/processes.c +++ b/src/modules/processes/processes.c @@ -44,6 +44,7 @@ void ffParseProcessesJsonObject(FFProcessesOptions* options, yyjson_val* module) } } +[[gnu::cold]] void ffGenerateProcessesJsonConfig(FFProcessesOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); yyjson_mut_obj_add_bool(doc, module, "countKprocs", options->countKprocs); diff --git a/src/modules/publicip/publicip.c b/src/modules/publicip/publicip.c index 6e4f30429..9728df99e 100644 --- a/src/modules/publicip/publicip.c +++ b/src/modules/publicip/publicip.c @@ -62,6 +62,7 @@ void ffParsePublicIpJsonObject(FFPublicIPOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGeneratePublicIpJsonConfig(FFPublicIPOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/separator/separator.c b/src/modules/separator/separator.c index 0ef3e41ee..9e29f2405 100644 --- a/src/modules/separator/separator.c +++ b/src/modules/separator/separator.c @@ -106,6 +106,7 @@ void ffParseSeparatorJsonObject(FFSeparatorOptions* options, yyjson_val* module) } } +[[gnu::cold]] void ffGenerateSeparatorJsonConfig(FFSeparatorOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { yyjson_mut_obj_add_strbuf(doc, module, "string", &options->string); yyjson_mut_obj_add_strbuf(doc, module, "outputColor", &options->outputColor); diff --git a/src/modules/shell/shell.c b/src/modules/shell/shell.c index 849a905be..882b7b42b 100644 --- a/src/modules/shell/shell.c +++ b/src/modules/shell/shell.c @@ -50,6 +50,7 @@ void ffParseShellJsonObject(FFShellOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateShellJsonConfig(FFShellOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/sound/sound.c b/src/modules/sound/sound.c index 4f51fa368..67f79b818 100644 --- a/src/modules/sound/sound.c +++ b/src/modules/sound/sound.c @@ -127,6 +127,7 @@ void ffParseSoundJsonObject(FFSoundOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateSoundJsonConfig(FFSoundOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/swap/swap.c b/src/modules/swap/swap.c index 803db7069..9459842ed 100644 --- a/src/modules/swap/swap.c +++ b/src/modules/swap/swap.c @@ -141,6 +141,7 @@ void ffParseSwapJsonObject(FFSwapOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateSwapJsonConfig(FFSwapOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffPercentGenerateJsonConfig(doc, module, options->percent); diff --git a/src/modules/terminal/terminal.c b/src/modules/terminal/terminal.c index b13e32e9e..5de9f4e1c 100644 --- a/src/modules/terminal/terminal.c +++ b/src/modules/terminal/terminal.c @@ -48,6 +48,7 @@ void ffParseTerminalJsonObject(FFTerminalOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateTerminalJsonConfig(FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/terminalfont/terminalfont.c b/src/modules/terminalfont/terminalfont.c index ecfb58548..38842906c 100644 --- a/src/modules/terminalfont/terminalfont.c +++ b/src/modules/terminalfont/terminalfont.c @@ -52,6 +52,7 @@ void ffParseTerminalFontJsonObject(FFTerminalFontOptions* options, yyjson_val* m } } +[[gnu::cold]] void ffGenerateTerminalFontJsonConfig(FFTerminalFontOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/terminalsize/terminalsize.c b/src/modules/terminalsize/terminalsize.c index 23f2099d0..04fc1dde2 100644 --- a/src/modules/terminalsize/terminalsize.c +++ b/src/modules/terminalsize/terminalsize.c @@ -44,6 +44,7 @@ void ffParseTerminalSizeJsonObject(FFTerminalSizeOptions* options, yyjson_val* m } } +[[gnu::cold]] void ffGenerateTerminalSizeJsonConfig(FFTerminalSizeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/terminaltheme/terminaltheme.c b/src/modules/terminaltheme/terminaltheme.c index a3daf4f42..177d27c06 100644 --- a/src/modules/terminaltheme/terminaltheme.c +++ b/src/modules/terminaltheme/terminaltheme.c @@ -53,6 +53,7 @@ void ffParseTerminalThemeJsonObject(FFTerminalThemeOptions* options, yyjson_val* } } +[[gnu::cold]] void ffGenerateTerminalThemeJsonConfig(FFTerminalThemeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/theme/theme.c b/src/modules/theme/theme.c index 1f7917930..bcab55ce6 100644 --- a/src/modules/theme/theme.c +++ b/src/modules/theme/theme.c @@ -52,6 +52,7 @@ void ffParseThemeJsonObject(FFThemeOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateThemeJsonConfig(FFThemeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/title/title.c b/src/modules/title/title.c index b5a7acace..586961da3 100644 --- a/src/modules/title/title.c +++ b/src/modules/title/title.c @@ -128,6 +128,7 @@ void ffParseTitleJsonObject(FFTitleOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateTitleJsonConfig(FFTitleOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/top/top.c b/src/modules/top/top.c index 02d811617..05dcb7878 100644 --- a/src/modules/top/top.c +++ b/src/modules/top/top.c @@ -174,6 +174,7 @@ void ffParseTopJsonObject(FFTopOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateTopJsonConfig(FFTopOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); yyjson_mut_obj_add_str(doc, module, "type", "top"); diff --git a/src/modules/tpm/tpm.c b/src/modules/tpm/tpm.c index 726d60ae6..69c623b03 100644 --- a/src/modules/tpm/tpm.c +++ b/src/modules/tpm/tpm.c @@ -48,6 +48,7 @@ void ffParseTPMJsonObject(FFTPMOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateTPMJsonConfig(FFTPMOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/uptime/uptime.c b/src/modules/uptime/uptime.c index 25b8d1f45..4ff4b4719 100644 --- a/src/modules/uptime/uptime.c +++ b/src/modules/uptime/uptime.c @@ -54,6 +54,7 @@ void ffParseUptimeJsonObject(FFUptimeOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateUptimeJsonConfig(FFUptimeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/users/users.c b/src/modules/users/users.c index 0b84901b8..e1571ef32 100644 --- a/src/modules/users/users.c +++ b/src/modules/users/users.c @@ -125,6 +125,7 @@ void ffParseUsersJsonObject(FFUsersOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateUsersJsonConfig(FFUsersOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/version/version.c b/src/modules/version/version.c index c744343fb..e0e8472dc 100644 --- a/src/modules/version/version.c +++ b/src/modules/version/version.c @@ -52,6 +52,7 @@ void ffParseVersionJsonObject(FFVersionOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateVersionJsonConfig(FFVersionOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/vulkan/vulkan.c b/src/modules/vulkan/vulkan.c index c8586b6f5..2115dbb95 100644 --- a/src/modules/vulkan/vulkan.c +++ b/src/modules/vulkan/vulkan.c @@ -58,6 +58,7 @@ void ffParseVulkanJsonObject(FFVulkanOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateVulkanJsonConfig(FFVulkanOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/wallpaper/wallpaper.c b/src/modules/wallpaper/wallpaper.c index 38c7b204a..bc83b8c6a 100644 --- a/src/modules/wallpaper/wallpaper.c +++ b/src/modules/wallpaper/wallpaper.c @@ -50,6 +50,7 @@ void ffParseWallpaperJsonObject(FFWallpaperOptions* options, yyjson_val* module) } } +[[gnu::cold]] void ffGenerateWallpaperJsonConfig(FFWallpaperOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/weather/weather.c b/src/modules/weather/weather.c index ac9dc229c..d6d267841 100644 --- a/src/modules/weather/weather.c +++ b/src/modules/weather/weather.c @@ -52,6 +52,7 @@ void ffParseWeatherJsonObject(FFWeatherOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateWeatherJsonConfig(FFWeatherOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/wifi/wifi.c b/src/modules/wifi/wifi.c index ee723c497..50ef65dfe 100644 --- a/src/modules/wifi/wifi.c +++ b/src/modules/wifi/wifi.c @@ -143,6 +143,7 @@ void ffParseWifiJsonObject(FFWifiOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateWifiJsonConfig(FFWifiOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/wm/wm.c b/src/modules/wm/wm.c index c094e45c6..7c6a0c8fa 100644 --- a/src/modules/wm/wm.c +++ b/src/modules/wm/wm.c @@ -76,6 +76,7 @@ void ffParseWMJsonObject(FFWMOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateWMJsonConfig(FFWMOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/modules/wmtheme/wmtheme.c b/src/modules/wmtheme/wmtheme.c index 89caff388..fd532c34b 100644 --- a/src/modules/wmtheme/wmtheme.c +++ b/src/modules/wmtheme/wmtheme.c @@ -35,6 +35,7 @@ void ffParseWMThemeJsonObject(FFWMThemeOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateWMThemeJsonConfig(FFWMThemeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } diff --git a/src/modules/zpool/zpool.c b/src/modules/zpool/zpool.c index a1dd31032..e9fa22f57 100644 --- a/src/modules/zpool/zpool.c +++ b/src/modules/zpool/zpool.c @@ -143,6 +143,7 @@ void ffParseZpoolJsonObject(FFZpoolOptions* options, yyjson_val* module) { } } +[[gnu::cold]] void ffGenerateZpoolJsonConfig(FFZpoolOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); diff --git a/src/options/display.c b/src/options/display.c index f764e2d7a..62b85aa64 100644 --- a/src/options/display.c +++ b/src/options/display.c @@ -1037,6 +1037,48 @@ void ffOptionsDestroyDisplay(FFOptionsDisplay* options) { ffListDestroy(&options->constants); } +// `names` is indexed by the enum value, so its order must match the enum declaration. A value outside +// the array adds no key at all, which is what the exhaustive switches this replaces did. +static void optionAddEnumString(yyjson_mut_doc* doc, yyjson_mut_val* obj, const char* key, const char* const names[], size_t count, uint32_t value) { + if (value < count) { + yyjson_mut_obj_add_str(doc, obj, key, names[value]); + } +} + +static void optionAddSpaceBeforeUnit(yyjson_mut_doc* doc, yyjson_mut_val* obj, FFSpaceBeforeUnitType type) { + static const char* const names[] = {"default", "always", "never"}; + optionAddEnumString(doc, obj, "spaceBeforeUnit", names, sizeof(names) / sizeof(*names), type); +} + +// @returns the language code for offsetof(FFModuleDisplayName, ), or nullptr if unknown +// @see optionParseLanguageString +static const char* optionGetLanguageString(uint32_t offset) { + switch (offset) { + case offsetof(FFModuleDisplayName, en): return "en"; + case offsetof(FFModuleDisplayName, ar): return "ar"; + case offsetof(FFModuleDisplayName, cs): return "cs"; + case offsetof(FFModuleDisplayName, de): return "de"; + case offsetof(FFModuleDisplayName, es): return "es"; + case offsetof(FFModuleDisplayName, fr): return "fr"; + case offsetof(FFModuleDisplayName, gl): return "gl"; + case offsetof(FFModuleDisplayName, he): return "he"; + case offsetof(FFModuleDisplayName, id): return "id"; + case offsetof(FFModuleDisplayName, it): return "it"; + case offsetof(FFModuleDisplayName, ja): return "ja"; + case offsetof(FFModuleDisplayName, ko): return "ko"; + case offsetof(FFModuleDisplayName, pl): return "pl"; + case offsetof(FFModuleDisplayName, pt): return "pt"; + case offsetof(FFModuleDisplayName, ru): return "ru"; + case offsetof(FFModuleDisplayName, tr): return "tr"; + case offsetof(FFModuleDisplayName, uk): return "uk"; + case offsetof(FFModuleDisplayName, vi): return "vi"; + case offsetof(FFModuleDisplayName, zh_CN): return "zh_CN"; + case offsetof(FFModuleDisplayName, zh_TW): return "zh_TW"; + } + return nullptr; +} + +[[gnu::cold]] void ffOptionsGenerateDisplayJsonConfig(FFdata* data, FFOptionsDisplay* options) { yyjson_mut_doc* doc = data->resultDoc; yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, doc->root, "display"); @@ -1070,20 +1112,11 @@ void ffOptionsGenerateDisplayJsonConfig(FFdata* data, FFOptionsDisplay* options) { yyjson_mut_val* duration = yyjson_mut_obj_add_obj(doc, obj, "duration"); yyjson_mut_obj_add_bool(doc, duration, "abbreviation", options->durationAbbreviation); - switch (options->durationSpaceBeforeUnit) { - case FF_SPACE_BEFORE_UNIT_DEFAULT: - yyjson_mut_obj_add_str(doc, duration, "spaceBeforeUnit", "default"); - break; - case FF_SPACE_BEFORE_UNIT_ALWAYS: - yyjson_mut_obj_add_str(doc, duration, "spaceBeforeUnit", "always"); - break; - case FF_SPACE_BEFORE_UNIT_NEVER: - yyjson_mut_obj_add_str(doc, duration, "spaceBeforeUnit", "never"); - break; - } + optionAddSpaceBeforeUnit(doc, duration, options->durationSpaceBeforeUnit); } { + static const char* const binaryPrefixNames[] = {"iec", "si", "jedec"}; yyjson_mut_val* size = yyjson_mut_obj_add_obj(doc, obj, "size"); yyjson_mut_obj_add_str(doc, size, "maxPrefix", ((const char*[]) { "B", @@ -1096,47 +1129,15 @@ void ffOptionsGenerateDisplayJsonConfig(FFdata* data, FFOptionsDisplay* options) "ZB", "YB", })[options->sizeMaxPrefix]); - switch (options->sizeBinaryPrefix) { - case FF_SIZE_BINARY_PREFIX_TYPE_IEC: - yyjson_mut_obj_add_str(doc, size, "binaryPrefix", "iec"); - break; - case FF_SIZE_BINARY_PREFIX_TYPE_SI: - yyjson_mut_obj_add_str(doc, size, "binaryPrefix", "si"); - break; - case FF_SIZE_BINARY_PREFIX_TYPE_JEDEC: - yyjson_mut_obj_add_str(doc, size, "binaryPrefix", "jedec"); - break; - } + optionAddEnumString(doc, size, "binaryPrefix", binaryPrefixNames, sizeof(binaryPrefixNames) / sizeof(*binaryPrefixNames), options->sizeBinaryPrefix); yyjson_mut_obj_add_uint(doc, size, "ndigits", options->sizeNdigits); - switch (options->sizeSpaceBeforeUnit) { - case FF_SPACE_BEFORE_UNIT_DEFAULT: - yyjson_mut_obj_add_str(doc, size, "spaceBeforeUnit", "default"); - break; - case FF_SPACE_BEFORE_UNIT_ALWAYS: - yyjson_mut_obj_add_str(doc, size, "spaceBeforeUnit", "always"); - break; - case FF_SPACE_BEFORE_UNIT_NEVER: - yyjson_mut_obj_add_str(doc, size, "spaceBeforeUnit", "never"); - break; - } + optionAddSpaceBeforeUnit(doc, size, options->sizeSpaceBeforeUnit); } { + static const char* const tempUnitNames[] = {"D", "C", "F", "K"}; yyjson_mut_val* temperature = yyjson_mut_obj_add_obj(doc, obj, "temp"); - switch (options->tempUnit) { - case FF_TEMPERATURE_UNIT_DEFAULT: - yyjson_mut_obj_add_str(doc, temperature, "unit", "D"); - break; - case FF_TEMPERATURE_UNIT_CELSIUS: - yyjson_mut_obj_add_str(doc, temperature, "unit", "C"); - break; - case FF_TEMPERATURE_UNIT_FAHRENHEIT: - yyjson_mut_obj_add_str(doc, temperature, "unit", "F"); - break; - case FF_TEMPERATURE_UNIT_KELVIN: - yyjson_mut_obj_add_str(doc, temperature, "unit", "K"); - break; - } + optionAddEnumString(doc, temperature, "unit", tempUnitNames, sizeof(tempUnitNames) / sizeof(*tempUnitNames), options->tempUnit); yyjson_mut_obj_add_uint(doc, temperature, "ndigits", options->tempNdigits); { yyjson_mut_val* color = yyjson_mut_obj_add_obj(doc, temperature, "color"); @@ -1144,17 +1145,7 @@ void ffOptionsGenerateDisplayJsonConfig(FFdata* data, FFOptionsDisplay* options) yyjson_mut_obj_add_strbuf(doc, color, "yellow", &options->tempColorYellow); yyjson_mut_obj_add_strbuf(doc, color, "red", &options->tempColorRed); } - switch (options->tempSpaceBeforeUnit) { - case FF_SPACE_BEFORE_UNIT_DEFAULT: - yyjson_mut_obj_add_str(doc, temperature, "spaceBeforeUnit", "default"); - break; - case FF_SPACE_BEFORE_UNIT_ALWAYS: - yyjson_mut_obj_add_str(doc, temperature, "spaceBeforeUnit", "always"); - break; - case FF_SPACE_BEFORE_UNIT_NEVER: - yyjson_mut_obj_add_str(doc, temperature, "spaceBeforeUnit", "never"); - break; - } + optionAddSpaceBeforeUnit(doc, temperature, options->tempSpaceBeforeUnit); } { @@ -1184,17 +1175,7 @@ void ffOptionsGenerateDisplayJsonConfig(FFdata* data, FFOptionsDisplay* options) yyjson_mut_obj_add_strbuf(doc, color, "yellow", &options->percentColorYellow); yyjson_mut_obj_add_strbuf(doc, color, "red", &options->percentColorRed); } - switch (options->percentSpaceBeforeUnit) { - case FF_SPACE_BEFORE_UNIT_DEFAULT: - yyjson_mut_obj_add_str(doc, percent, "spaceBeforeUnit", "default"); - break; - case FF_SPACE_BEFORE_UNIT_ALWAYS: - yyjson_mut_obj_add_str(doc, percent, "spaceBeforeUnit", "always"); - break; - case FF_SPACE_BEFORE_UNIT_NEVER: - yyjson_mut_obj_add_str(doc, percent, "spaceBeforeUnit", "never"); - break; - } + optionAddSpaceBeforeUnit(doc, percent, options->percentSpaceBeforeUnit); yyjson_mut_obj_add_uint(doc, percent, "width", options->percentWidth); } @@ -1220,6 +1201,7 @@ void ffOptionsGenerateDisplayJsonConfig(FFdata* data, FFOptionsDisplay* options) } { + static const char* const trailingZerosNames[] = {"default", "always", "never"}; yyjson_mut_val* fraction = yyjson_mut_obj_add_obj(doc, obj, "fraction"); if (options->fractionNdigits < 0) { @@ -1228,17 +1210,7 @@ void ffOptionsGenerateDisplayJsonConfig(FFdata* data, FFOptionsDisplay* options) yyjson_mut_obj_add_uint(doc, fraction, "ndigits", (uint8_t) options->fractionNdigits); } - switch (options->fractionTrailingZeros) { - case FF_FRACTION_TRAILING_ZEROS_TYPE_DEFAULT: - yyjson_mut_obj_add_str(doc, fraction, "trailingZeros", "default"); - break; - case FF_FRACTION_TRAILING_ZEROS_TYPE_ALWAYS: - yyjson_mut_obj_add_str(doc, fraction, "trailingZeros", "always"); - break; - case FF_FRACTION_TRAILING_ZEROS_TYPE_NEVER: - yyjson_mut_obj_add_str(doc, fraction, "trailingZeros", "never"); - break; - } + optionAddEnumString(doc, fraction, "trailingZeros", trailingZerosNames, sizeof(trailingZerosNames) / sizeof(*trailingZerosNames), options->fractionTrailingZeros); } yyjson_mut_obj_add_bool(doc, obj, "noBuffer", options->noBuffer); @@ -1275,84 +1247,16 @@ void ffOptionsGenerateDisplayJsonConfig(FFdata* data, FFOptionsDisplay* options) yyjson_mut_obj_add_uint(doc, key, "paddingLeft", options->keyPaddingLeft); - switch (options->keyLanguage) { - case offsetof(FFModuleDisplayName, en): - yyjson_mut_obj_add_str(doc, key, "language", "en"); - break; - case offsetof(FFModuleDisplayName, ar): - yyjson_mut_obj_add_str(doc, key, "language", "ar"); - break; - case offsetof(FFModuleDisplayName, cs): - yyjson_mut_obj_add_str(doc, key, "language", "cs"); - break; - case offsetof(FFModuleDisplayName, de): - yyjson_mut_obj_add_str(doc, key, "language", "de"); - break; - case offsetof(FFModuleDisplayName, es): - yyjson_mut_obj_add_str(doc, key, "language", "es"); - break; - case offsetof(FFModuleDisplayName, fr): - yyjson_mut_obj_add_str(doc, key, "language", "fr"); - break; - case offsetof(FFModuleDisplayName, gl): - yyjson_mut_obj_add_str(doc, key, "language", "gl"); - break; - case offsetof(FFModuleDisplayName, he): - yyjson_mut_obj_add_str(doc, key, "language", "he"); - break; - case offsetof(FFModuleDisplayName, id): - yyjson_mut_obj_add_str(doc, key, "language", "id"); - break; - case offsetof(FFModuleDisplayName, it): - yyjson_mut_obj_add_str(doc, key, "language", "it"); - break; - case offsetof(FFModuleDisplayName, ja): - yyjson_mut_obj_add_str(doc, key, "language", "ja"); - break; - case offsetof(FFModuleDisplayName, ko): - yyjson_mut_obj_add_str(doc, key, "language", "ko"); - break; - case offsetof(FFModuleDisplayName, pl): - yyjson_mut_obj_add_str(doc, key, "language", "pl"); - break; - case offsetof(FFModuleDisplayName, pt): - yyjson_mut_obj_add_str(doc, key, "language", "pt"); - break; - case offsetof(FFModuleDisplayName, ru): - yyjson_mut_obj_add_str(doc, key, "language", "ru"); - break; - case offsetof(FFModuleDisplayName, tr): - yyjson_mut_obj_add_str(doc, key, "language", "tr"); - break; - case offsetof(FFModuleDisplayName, uk): - yyjson_mut_obj_add_str(doc, key, "language", "uk"); - break; - case offsetof(FFModuleDisplayName, vi): - yyjson_mut_obj_add_str(doc, key, "language", "vi"); - break; - case offsetof(FFModuleDisplayName, zh_CN): - yyjson_mut_obj_add_str(doc, key, "language", "zh_CN"); - break; - case offsetof(FFModuleDisplayName, zh_TW): - yyjson_mut_obj_add_str(doc, key, "language", "zh_TW"); - break; + const char* language = optionGetLanguageString(options->keyLanguage); + if (language != nullptr) { + yyjson_mut_obj_add_str(doc, key, "language", language); } } { yyjson_mut_val* freq = yyjson_mut_obj_add_obj(doc, obj, "freq"); yyjson_mut_obj_add_int(doc, freq, "ndigits", options->freqNdigits); - switch (options->freqSpaceBeforeUnit) { - case FF_SPACE_BEFORE_UNIT_DEFAULT: - yyjson_mut_obj_add_str(doc, freq, "spaceBeforeUnit", "default"); - break; - case FF_SPACE_BEFORE_UNIT_ALWAYS: - yyjson_mut_obj_add_str(doc, freq, "spaceBeforeUnit", "always"); - break; - case FF_SPACE_BEFORE_UNIT_NEVER: - yyjson_mut_obj_add_str(doc, freq, "spaceBeforeUnit", "never"); - break; - } + optionAddSpaceBeforeUnit(doc, freq, options->freqSpaceBeforeUnit); } { diff --git a/src/options/general.c b/src/options/general.c index 890f38e7d..b3a29a16d 100644 --- a/src/options/general.c +++ b/src/options/general.c @@ -134,6 +134,7 @@ void ffOptionsDestroyGeneral(FFOptionsGeneral* options) { ffStrbufDestroy(&options->playerName); } +[[gnu::cold]] void ffOptionsGenerateGeneralJsonConfig(FFdata* data, FFOptionsGeneral* options) { yyjson_mut_doc* doc = data->resultDoc; yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, doc->root, "general"); diff --git a/src/options/logo.c b/src/options/logo.c index a46d1d728..bc667c7e0 100644 --- a/src/options/logo.c +++ b/src/options/logo.c @@ -515,6 +515,7 @@ const char* ffOptionsParseLogoJsonConfig(FFOptionsLogo* options, yyjson_val* roo return nullptr; } +[[gnu::cold]] void ffOptionsGenerateLogoJsonConfig(FFdata* data, FFOptionsLogo* options) { yyjson_mut_doc* doc = data->resultDoc; yyjson_mut_val* obj = yyjson_mut_obj(doc);