Rework enum ProcessField

Use only one enum instead of a global and a platform specific one.
Drop Platform_numberOfFields global variable.
Set known size of Process_fields array
This commit is contained in:
Christian Göttsche
2020-12-15 19:44:48 +01:00
committed by cgzones
parent d872e36308
commit 89473cc9ae
41 changed files with 208 additions and 175 deletions

View File

@ -18,7 +18,7 @@ in the source distribution for its full text.
#include "Process.h"
ProcessFieldData Process_fields[] = {
ProcessFieldData Process_fields[LAST_PROCESSFIELD] = {
[0] = { .name = "", .title = NULL, .description = NULL, .flags = 0, },
[PID] = { .name = "PID", .title = " PID ", .description = "Process/thread ID", .flags = 0, },
[COMM] = { .name = "Command", .title = "Command ", .description = "Command line", .flags = 0, },
@ -45,7 +45,6 @@ ProcessFieldData Process_fields[] = {
[NLWP] = { .name = "NLWP", .title = "NLWP ", .description = "Number of threads in the process", .flags = 0, },
[TGID] = { .name = "TGID", .title = " TGID ", .description = "Thread group ID (i.e. process ID)", .flags = 0, },
[TRANSLATED] = { .name = "TRANSLATED", .title = "T ", .description = "Translation info (T translated, N native)", .flags = 0, },
[LAST_PROCESSFIELD] = { .name = "*** report bug! ***", .title = NULL, .description = NULL, .flags = 0, },
};
Process* DarwinProcess_new(const Settings* settings) {
@ -73,7 +72,7 @@ static void DarwinProcess_writeField(const Process* this, RichString* str, Proce
char buffer[256]; buffer[255] = '\0';
int attr = CRT_colors[DEFAULT_COLOR];
int n = sizeof(buffer) - 1;
switch ((int) field) {
switch (field) {
// add Platform-specific fields here
case TRANSLATED: xSnprintf(buffer, n, "%c ", dp->translated ? 'T' : 'N'); break;
default:
@ -87,7 +86,7 @@ static long DarwinProcess_compareByKey(const Process* v1, const Process* v2, Pro
const DarwinProcess* p1 = (const DarwinProcess*)v1;
const DarwinProcess* p2 = (const DarwinProcess*)v2;
switch ((int) key) {
switch (key) {
// add Platform-specific fields here
case TRANSLATED:
return SPACESHIP_NUMBER(p1->translated, p2->translated);

View File

@ -12,11 +12,6 @@ in the source distribution for its full text.
#include "DarwinProcessList.h"
#include "Settings.h"
typedef enum DarwinProcessFields_ {
// Add platform-specific fields here, with ids >= 100
TRANSLATED = 100,
LAST_PROCESSFIELD = 101,
} DarwinProcessField;
typedef struct DarwinProcess_ {
Process super;
@ -29,7 +24,7 @@ typedef struct DarwinProcess_ {
extern const ProcessClass DarwinProcess_class;
extern ProcessFieldData Process_fields[];
extern ProcessFieldData Process_fields[LAST_PROCESSFIELD];
Process* DarwinProcess_new(const Settings* settings);

View File

@ -110,8 +110,6 @@ const MeterClass* const Platform_meterTypes[] = {
NULL
};
int Platform_numberOfFields = LAST_PROCESSFIELD;
double Platform_timebaseToNS = 1.0;
void Platform_init(void) {

View File

@ -19,12 +19,9 @@ in the source distribution for its full text.
#include "ProcessLocksScreen.h"
#include "SignalsPanel.h"
extern ProcessFieldData Process_fields[];
extern ProcessField Platform_defaultFields[];
extern int Platform_numberOfFields;
extern double Platform_timebaseToNS;
extern const SignalItem Platform_signals[];

16
darwin/ProcessField.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef HEADER_DarwinProcessField
#define HEADER_DarwinProcessField
/*
htop - darwin/ProcessField.h
(C) 2020 htop dev team
Released under the GNU GPLv2, see the COPYING file
in the source distribution for its full text.
*/
#define PLATFORM_PROCESS_FIELDS \
TRANSLATED = 100, \
// End of list
#endif /* HEADER_DarwinProcessField */