summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorBerke Güzel <berke.guzel@gdh.digital>2026-10-15 12:29:25 +0300
committerBerke Güzel <berke.guzel@gdh.digital>2026-10-15 12:29:25 +0300
commit57ebf3b3238a165c1973ecdf96ba79f95d650fc9 (patch)
tree6c6ee6ee17a32d392d068ded61f7a5483ef73e7a /include
parent5f03033b0e211f9ed13e7a1351f9a8f9011ab665 (diff)
Add soversion, version macros, and reserved term_options words
The shared library now carries its major version in the SONAME (libterm.so.0), so an ABI break gets a new file name. The header gains TERM_VERSION, TERM_VERSION_MAJOR/MINOR/PATCH and TERM_VERSION_CODE, and term_version() returns the code the library was built with. A test checks the macros against meson.build's project version and against the runtime value. term_options ends with uint32_t reserved[8]. term_new() returns NULL if a word is nonzero, so later versions can give those words a meaning without misreading a caller's leftover data. All-zero options stay valid. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Diffstat (limited to 'include')
-rw-r--r--include/term/term.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/term/term.h b/include/term/term.h
index dc41114..aa3178e 100644
--- a/include/term/term.h
+++ b/include/term/term.h
@@ -41,6 +41,16 @@ struct term_snapshot;
#define TERM_SCROLLBACK_DEFAULT 10000
/*
+ * The version of this header. A host compares TERM_VERSION_CODE with
+ * term_version() to check that the library matches the header.
+ */
+#define TERM_VERSION(major, minor, patch) (((major) << 16) | ((minor) << 8) | (patch))
+#define TERM_VERSION_MAJOR 0
+#define TERM_VERSION_MINOR 1
+#define TERM_VERSION_PATCH 0
+#define TERM_VERSION_CODE TERM_VERSION(TERM_VERSION_MAJOR, TERM_VERSION_MINOR, TERM_VERSION_PATCH)
+
+/*
* Colors. A term_color is either a direct color (alpha 0xFF, then RGB) or a
* palette slot: an index 0-255, the default foreground, or the default
* background. A slot resolves when a snapshot is painted, so a theme change
@@ -147,12 +157,17 @@ struct term_options {
enum term_cursor_style cursor_style;
bool cursor_steady; /* false: the cursor blinks */
struct term_callbacks callbacks;
+ /* Must be zero. term_new() returns NULL if any word is nonzero, so a
+ * later version can give a word a meaning. */
+ uint32_t reserved[8];
};
/* NULL when memory runs out. */
/* The Unicode version of the width tables, such as "18.0.0". A host can
* pass it to programs as UNICODE_VERSION. */
TERM_API const char *term_unicode_version(void);
+/* The TERM_VERSION_CODE the library was built with. */
+TERM_API unsigned term_version(void);
/* The length of the prefix of buf made of bytes in [0x20, hi). With hi
* 0x7f, it finds a run of printable ASCII in UTF-8 text, so a host can