summaryrefslogtreecommitdiffstats
path: root/DynamicColumn.c
diff options
context:
space:
mode:
Diffstat (limited to 'DynamicColumn.c')
-rw-r--r--DynamicColumn.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/DynamicColumn.c b/DynamicColumn.c
new file mode 100644
index 0000000..bd038df
--- /dev/null
+++ b/DynamicColumn.c
@@ -0,0 +1,66 @@
+/*
+htop - DynamicColumn.c
+(C) 2021 Sohaib Mohammed
+(C) 2021 htop dev team
+(C) 2021 Red Hat, Inc. All Rights Reserved.
+Released under the GNU GPLv2+, see the COPYING file
+in the source distribution for its full text.
+*/
+
+#include "config.h" // IWYU pragma: keep
+
+#include "DynamicColumn.h"
+
+#include <stddef.h>
+
+#include "Platform.h"
+#include "RichString.h"
+#include "XUtils.h"
+
+
+Hashtable* DynamicColumns_new(void) {
+ return Platform_dynamicColumns();
+}
+
+void DynamicColumns_delete(Hashtable* dynamics) {
+ if (dynamics) {
+ Platform_dynamicColumnsDone(dynamics);
+ Hashtable_delete(dynamics);
+ }
+}
+
+const char* DynamicColumn_init(unsigned int key) {
+ return Platform_dynamicColumnInit(key);
+}
+
+typedef struct {
+ const char* name;
+ const DynamicColumn* data;
+ unsigned int key;
+} DynamicIterator;
+
+static void DynamicColumn_compare(ht_key_t key, void* value, void* data) {
+ const DynamicColumn* column = (const DynamicColumn*)value;
+ DynamicIterator* iter = (DynamicIterator*)data;
+ if (String_eq(iter->name, column->name)) {
+ iter->data = column;
+ iter->key = key;
+ }
+}
+
+const DynamicColumn* DynamicColumn_search(Hashtable* dynamics, const char* name, unsigned int* key) {
+ DynamicIterator iter = { .key = 0, .data = NULL, .name = name };
+ if (dynamics)
+ Hashtable_foreach(dynamics, DynamicColumn_compare, &iter);
+ if (key)
+ *key = iter.key;
+ return iter.data;
+}
+
+const DynamicColumn* DynamicColumn_lookup(Hashtable* dynamics, unsigned int key) {
+ return (const DynamicColumn*) Hashtable_get(dynamics, key);
+}
+
+bool DynamicColumn_writeField(const Process* proc, RichString* str, unsigned int key) {
+ return Platform_dynamicColumnWriteField(proc, str, key);
+}