ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
schema.h
Go to the documentation of this file.
1
13
14#pragma once
15
16#include <stdbool.h>
17#include <stddef.h>
18#include "../common.h"
19#include "../options/options.h"
20#include "../options/builder.h"
21
30
40typedef bool (*builder_validate_fn_t)(const void *options_struct);
41
48typedef struct {
49 const char *toml_key;
50 const char *cli_flag;
53 const char *category;
54 size_t field_offset;
55 size_t field_size;
56
57 // Validation - uses builder's validate function directly
59
60 // Custom parsing for OPTION_TYPE_CALLBACK
61 bool (*parse_fn)(const char *arg, void *dest, char **error_msg);
62
63 // Mode applicability bitmask
65
66 // Documentation
67 const char *description;
68
69 // Type-specific constraints (optional)
70 union {
71 struct {
72 int min;
73 int max;
74 } int_range;
75 struct {
76 double min;
77 double max;
78 } float_range;
79 } constraints;
80
81 // Mode-aware default getter (for options with mode-specific defaults)
82 const void *(*mode_default_getter)(
83 asciichat_mode_t mode);
88
95
102const config_option_metadata_t **config_schema_get_by_category(const char *category, size_t *count);
103
110
123asciichat_error_t config_schema_build_from_configs(const options_config_t **configs, size_t num_configs);
124
134void config_schema_destroy(void);
Options builder API for flexible command-line option configuration.
option_type_t
Custom help section descriptor.
Definition builder.h:166
⚙️ Common definitions, error codes, macros, and types shared throughout the application
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
asciichat_mode_t
Mode type for options parsing.
Definition options.h:919
option_mode_bitmask_t
Option mode bitmask.
Definition options.h:936
⚙️ Unified options parsing system for ascii-chat with builder pattern and lock-free access
const config_option_metadata_t ** config_schema_get_by_category(const char *category, size_t *count)
Get all option metadata for a category.
Definition schema.c:416
void config_schema_destroy(void)
Clean up dynamically allocated schema resources.
Definition schema.c:469
option_context_t
Context where an option can appear.
Definition schema.h:25
@ OPTION_CONTEXT_BOTH
Can appear in both CLI and config.
Definition schema.h:28
@ OPTION_CONTEXT_CONFIG
Config-only option (never on CLI).
Definition schema.h:27
@ OPTION_CONTEXT_CLI
CLI-only option (cannot appear in config).
Definition schema.h:26
const config_option_metadata_t * config_schema_get_all(size_t *count)
Get all option metadata.
Definition schema.c:449
asciichat_error_t config_schema_build_from_configs(const options_config_t **configs, size_t num_configs)
Build schema dynamically from options builder configs.
Definition schema.c:252
const config_option_metadata_t * config_schema_get_by_toml_key(const char *toml_key)
Get option metadata by TOML key.
Definition schema.c:395
bool(* builder_validate_fn_t)(const void *options_struct)
Validation function from options builder.
Definition schema.h:40
Option metadata for config file parsing.
Definition schema.h:48
option_context_t context
Where this option can appear.
Definition schema.h:52
option_type_t type
Value type (from builder).
Definition schema.h:51
size_t field_size
Size of field in options_t.
Definition schema.h:55
bool(* parse_fn)(const char *arg, void *dest, char **error_msg)
Custom parser for callbacks (or NULL).
Definition schema.h:61
option_mode_bitmask_t mode_bitmask
Which modes this option applies to.
Definition schema.h:64
size_t field_offset
offsetof(options_t, field) - where to store value
Definition schema.h:54
const char * description
Description for docs/help generation.
Definition schema.h:67
const char * category
Category name (e.g., "network", "client", "audio").
Definition schema.h:53
builder_validate_fn_t validate_fn
Builder's validation function (can be NULL for simple types).
Definition schema.h:58
const char * toml_key
TOML key path (e.g., "network.port", "client.address").
Definition schema.h:49
const char * cli_flag
CLI flag name (e.g., "--port") or NULL if no CLI flag.
Definition schema.h:50
Immutable parsing tables produced from an options builder.
Definition builder.h:414