From 6b8165983b3dc97485e3d3533d7f42ec5ecd683e Mon Sep 17 00:00:00 2001 From: Explorer09 Date: Tue, 16 Apr 2024 17:18:17 +0800 Subject: [PATCH] Redefine MeterModeId to uint8_t and use it throughout Change the `mode` and `defaultMode` members of Meter objects, `modes` array of MeterColumnSetting object, and `mode` parameters of Meter_setMode() and MeterClass.updateMode() to use the type `MeterModeId`. Redefine the type `MeterModeId` to uint8_t from an enum. Signed-off-by: Kang-Che Sung --- CPUMeter.c | 10 +++++----- Header.c | 4 ++-- MemorySwapMeter.c | 2 +- Meter.c | 2 +- Meter.h | 14 ++++++++------ Settings.c | 12 ++++++------ Settings.h | 3 ++- 7 files changed, 25 insertions(+), 22 deletions(-) diff --git a/CPUMeter.c b/CPUMeter.c index 2f777b2e7c..78afec2394 100644 --- a/CPUMeter.c +++ b/CPUMeter.c @@ -252,7 +252,7 @@ static void CPUMeterCommonInit(Meter* this) { } } -static void CPUMeterCommonUpdateMode(Meter* this, int mode, int ncol) { +static void CPUMeterCommonUpdateMode(Meter* this, MeterModeId mode, int ncol) { CPUMeterData* data = this->meterData; Meter** meters = data->meters; this->mode = mode; @@ -276,19 +276,19 @@ static void AllCPUsMeter_done(Meter* this) { free(data); } -static void SingleColCPUsMeter_updateMode(Meter* this, int mode) { +static void SingleColCPUsMeter_updateMode(Meter* this, MeterModeId mode) { CPUMeterCommonUpdateMode(this, mode, 1); } -static void DualColCPUsMeter_updateMode(Meter* this, int mode) { +static void DualColCPUsMeter_updateMode(Meter* this, MeterModeId mode) { CPUMeterCommonUpdateMode(this, mode, 2); } -static void QuadColCPUsMeter_updateMode(Meter* this, int mode) { +static void QuadColCPUsMeter_updateMode(Meter* this, MeterModeId mode) { CPUMeterCommonUpdateMode(this, mode, 4); } -static void OctoColCPUsMeter_updateMode(Meter* this, int mode) { +static void OctoColCPUsMeter_updateMode(Meter* this, MeterModeId mode) { CPUMeterCommonUpdateMode(this, mode, 8); } diff --git a/Header.c b/Header.c index fa0279da16..fe3b9bb5b5 100644 --- a/Header.c +++ b/Header.c @@ -149,8 +149,8 @@ void Header_writeBackToSettings(const Header* this) { const Vector* vec = this->columns[col]; int len = Vector_size(vec); - colSettings->names = len ? xCalloc(len + 1, sizeof(char*)) : NULL; - colSettings->modes = len ? xCalloc(len, sizeof(int)) : NULL; + colSettings->names = len ? xCalloc(len + 1, sizeof(*colSettings->names)) : NULL; + colSettings->modes = len ? xCalloc(len, sizeof(*colSetting->modes)) : NULL; colSettings->len = len; for (int i = 0; i < len; i++) { diff --git a/MemorySwapMeter.c b/MemorySwapMeter.c index 02b51d63ad..6f79daf969 100644 --- a/MemorySwapMeter.c +++ b/MemorySwapMeter.c @@ -66,7 +66,7 @@ static void MemorySwapMeter_init(Meter* this) { } } -static void MemorySwapMeter_updateMode(Meter* this, int mode) { +static void MemorySwapMeter_updateMode(Meter* this, MeterModeId mode) { MemorySwapMeterData* data = this->meterData; this->mode = mode; diff --git a/Meter.c b/Meter.c index 0edbda202e..4537a7ff7f 100644 --- a/Meter.c +++ b/Meter.c @@ -112,7 +112,7 @@ static inline void Meter_displayBuffer(const Meter* this, RichString* out) { } } -void Meter_setMode(Meter* this, int modeIndex) { +void Meter_setMode(Meter* this, MeterModeId modeIndex) { if (modeIndex > 0 && modeIndex == this->mode) { return; } diff --git a/Meter.h b/Meter.h index cf8eb3369a..7183dcf349 100644 --- a/Meter.h +++ b/Meter.h @@ -47,9 +47,11 @@ struct Machine_; // IWYU pragma: keep struct Meter_; typedef struct Meter_ Meter; +typedef uint8_t MeterModeId; + typedef void(*Meter_Init)(Meter*); typedef void(*Meter_Done)(Meter*); -typedef void(*Meter_UpdateMode)(Meter*, int); +typedef void(*Meter_UpdateMode)(Meter*, MeterModeId); typedef void(*Meter_UpdateValues)(Meter*); typedef void(*Meter_Draw)(Meter*, int, int, int); typedef const char* (*Meter_GetCaption)(const Meter*); @@ -64,7 +66,7 @@ typedef struct MeterClass_ { const Meter_Draw draw; const Meter_GetCaption getCaption; const Meter_GetUiName getUiName; - const int defaultMode; + const MeterModeId defaultMode; const double total; const int* const attributes; const char* const name; /* internal name of the meter, must not contain any space */ @@ -105,7 +107,7 @@ struct Meter_ { const struct Machine_* host; char* caption; - int mode; + MeterModeId mode; unsigned int param; GraphData drawData; int h; @@ -124,14 +126,14 @@ typedef struct MeterMode_ { int h; } MeterMode; -typedef enum { +enum MeterModeId_ { /* Meter mode 0 is reserved */ BAR_METERMODE = 1, TEXT_METERMODE, GRAPH_METERMODE, LED_METERMODE, LAST_METERMODE -} MeterModeId; +}; typedef enum { RATESTATUS_DATA, @@ -152,7 +154,7 @@ void Meter_delete(Object* cast); void Meter_setCaption(Meter* this, const char* caption); -void Meter_setMode(Meter* this, int modeIndex); +void Meter_setMode(Meter* this, MeterModeId modeIndex); ListItem* Meter_toListItem(const Meter* this, bool moving); diff --git a/Settings.c b/Settings.c index e2c94e2b66..9e70f99c13 100644 --- a/Settings.c +++ b/Settings.c @@ -107,9 +107,9 @@ static void Settings_readMeterModes(Settings* this, const char* line, unsigned i } column = MINIMUM(column, HeaderLayout_getColumns(this->hLayout) - 1); this->hColumns[column].len = len; - int* modes = len ? xCalloc(len, sizeof(int)) : NULL; + MeterModeId* modes = len ? xCalloc(len, sizeof(MeterModeId)) : NULL; for (int i = 0; i < len; i++) { - modes[i] = atoi(ids[i]); + modes[i] = (MeterModeId) atoi(ids[i]); } String_freeArray(ids); this->hColumns[column].modes = modes; @@ -122,7 +122,7 @@ static bool Settings_validateMeters(Settings* this) { for (size_t column = 0; column < colCount; column++) { char** names = this->hColumns[column].names; - const int* modes = this->hColumns[column].modes; + const MeterModeId* modes = this->hColumns[column].modes; const size_t len = this->hColumns[column].len; if (!len) @@ -162,8 +162,8 @@ static void Settings_defaultMeters(Settings* this, unsigned int initialCpuCount) this->hLayout = HF_TWO_50_50; this->hColumns = xCalloc(HeaderLayout_getColumns(this->hLayout), sizeof(MeterColumnSetting)); for (size_t i = 0; i < 2; i++) { - this->hColumns[i].names = xCalloc(sizes[i] + 1, sizeof(char*)); - this->hColumns[i].modes = xCalloc(sizes[i], sizeof(int)); + this->hColumns[i].names = xCalloc(sizes[i] + 1, sizeof(*this->hColumns[0].names)); + this->hColumns[i].modes = xCalloc(sizes[i], sizeof(*this->hColumns[0].modes)); this->hColumns[i].len = sizes[i]; } @@ -605,7 +605,7 @@ static void writeMeterModes(const Settings* this, FILE* fd, char separator, unsi if (this->hColumns[column].len) { const char* sep = ""; for (size_t i = 0; i < this->hColumns[column].len; i++) { - fprintf(fd, "%s%d", sep, this->hColumns[column].modes[i]); + fprintf(fd, "%s%d", sep, (int)this->hColumns[column].modes[i]); sep = " "; } } else { diff --git a/Settings.h b/Settings.h index de4e00962e..1434b3493a 100644 --- a/Settings.h +++ b/Settings.h @@ -13,6 +13,7 @@ in the source distribution for its full text. #include "Hashtable.h" #include "HeaderLayout.h" +#include "Meter.h" #include "Row.h" #include "RowField.h" @@ -34,7 +35,7 @@ typedef struct { typedef struct { size_t len; char** names; - int* modes; + MeterModeId* modes; } MeterColumnSetting; typedef struct ScreenSettings_ {