aboutsummaryrefslogtreecommitdiffstats
path: root/DynamicScreen.c
diff options
context:
space:
mode:
authorDaniel Lange <DLange@git.local>2024-01-10 12:40:37 +0100
committerDaniel Lange <DLange@git.local>2024-01-10 12:40:37 +0100
commit7271b076b82785ffca73ee9e4ae84cabb77018ee (patch)
treee8270dd60ec096bee8157dbadf029e15ed584592 /DynamicScreen.c
parentf288666edc9180a2e81e6655951878124f321df6 (diff)
downloaddebian_htop-7271b076b82785ffca73ee9e4ae84cabb77018ee.tar.gz
debian_htop-7271b076b82785ffca73ee9e4ae84cabb77018ee.tar.bz2
debian_htop-7271b076b82785ffca73ee9e4ae84cabb77018ee.zip
New upstream version 3.3.0upstream/3.3.0upstream
Diffstat (limited to 'DynamicScreen.c')
-rw-r--r--DynamicScreen.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/DynamicScreen.c b/DynamicScreen.c
new file mode 100644
index 0000000..9e3d5e4
--- /dev/null
+++ b/DynamicScreen.c
@@ -0,0 +1,68 @@
+/*
+htop - DynamicScreen.c
+(C) 2022 Sohaib Mohammed
+(C) 2022-2023 htop dev team
+Released under the GNU GPLv2+, see the COPYING file
+in the source distribution for its full text.
+*/
+
+#include "config.h" // IWYU pragma: keep
+
+#include "DynamicScreen.h"
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+#include "Hashtable.h"
+#include "Platform.h"
+#include "XUtils.h"
+
+
+Hashtable* DynamicScreens_new(void) {
+ return Platform_dynamicScreens();
+}
+
+void DynamicScreens_delete(Hashtable* screens) {
+ if (screens) {
+ Platform_dynamicScreensDone(screens);
+ Hashtable_delete(screens);
+ }
+}
+
+void DynamicScreen_done(DynamicScreen* this) {
+ free(this->caption);
+ free(this->fields);
+ free(this->heading);
+ free(this->sortKey);
+ free(this->columnKeys);
+}
+
+typedef struct {
+ ht_key_t key;
+ const char* name;
+ bool found;
+} DynamicIterator;
+
+static void DynamicScreen_compare(ht_key_t key, void* value, void* data) {
+ const DynamicScreen* screen = (const DynamicScreen*)value;
+ DynamicIterator* iter = (DynamicIterator*)data;
+ if (String_eq(iter->name, screen->name)) {
+ iter->found = true;
+ iter->key = key;
+ }
+}
+
+bool DynamicScreen_search(Hashtable* screens, const char* name, ht_key_t* key) {
+ DynamicIterator iter = { .key = 0, .name = name, .found = false };
+ if (screens)
+ Hashtable_foreach(screens, DynamicScreen_compare, &iter);
+ if (key)
+ *key = iter.key;
+ return iter.found;
+}
+
+const char* DynamicScreen_lookup(Hashtable* screens, ht_key_t key) {
+ const DynamicScreen* screen = Hashtable_get(screens, key);
+ return screen ? screen->name : NULL;
+}

© 2014-2024 Faster IT GmbH | imprint | privacy policy