From 9d4abba0d4f80b691cffea53322f0a4912653d25 Mon Sep 17 00:00:00 2001
From: Vito Caputo <vcaputo@pengaru.com>
Date: Mon, 28 Mar 2022 13:57:45 -0700
Subject: til_settings: provide a user_data pointer w/til_setting_t

Particularly in implementing a stateful/"retained" GUI it can be
desirable to embed something like a widget pointer in a
til_setting_t once described and shown to the user.

Management of this pointer is largely nonexistant from the
libtil perspective.  It's simply initialized to NULL when a new
setting is added, and never accessed again.  100% the caller's
responsibility.

This works fine since libtil/til_settings_t only accumulates
til_setting_t entries and never removes them except when
discarding an entire til_settings_t wholesale.
---
 src/til_settings.c | 1 +
 src/til_settings.h | 1 +
 2 files changed, 2 insertions(+)

(limited to 'src')

diff --git a/src/til_settings.c b/src/til_settings.c
index 0c2eff1..a1466d9 100644
--- a/src/til_settings.c
+++ b/src/til_settings.c
@@ -53,6 +53,7 @@ static int add_value(til_settings_t *settings, const char *key, const char *valu
 	settings->settings[settings->num - 1]->key = key;
 	settings->settings[settings->num - 1]->value = value;
 	settings->settings[settings->num - 1]->desc = desc;
+	settings->settings[settings->num - 1]->user_data = NULL;
 
 	return 0;
 }
diff --git a/src/til_settings.h b/src/til_settings.h
index 2896405..cbff2a7 100644
--- a/src/til_settings.h
+++ b/src/til_settings.h
@@ -29,6 +29,7 @@ struct til_setting_t {
 	const char			*key;
 	const char			*value;
 	const til_setting_desc_t	*desc;
+	void				*user_data;
 };
 
 til_settings_t * til_settings_new(const char *settings);
-- 
cgit v1.2.3