diff options
| author | peter <peter@pmikkelsen.com> | 2026-08-31 19:44:56 +0000 |
|---|---|---|
| committer | peter <peter@pmikkelsen.com> | 2026-08-31 19:44:56 +0000 |
| commit | 7f7a2fb4fb23433e7be3d6953725690c8ea958d2 (patch) | |
| tree | e73bc6f3bd9d5132a0262966cd99986027142144 /src/include/aplwc.h | |
| parent | 729964bea692f9683860978b89848784a7fc2f46 (diff) | |
The objects returned to the user are now integer-based references,
not actual pointers. This means the aplwc internals can update those
pointers without the user noticing.
FossilOrigin-Name: 654c7d0ec85da295a7fb6ed381500410686b280f342fa81a30481f5e9a20c58a
Diffstat (limited to 'src/include/aplwc.h')
| -rw-r--r-- | src/include/aplwc.h | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/include/aplwc.h b/src/include/aplwc.h index 843fe42..6ba2e35 100644 --- a/src/include/aplwc.h +++ b/src/include/aplwc.h @@ -15,24 +15,34 @@ enum aplwc_rc { }; struct aplwc; -struct aplwc_line; -struct aplwc_value; + +struct aplwc_ref { + struct aplwc *aplwc; + int id; +}; + +typedef struct { struct aplwc_ref ref; } AplwcLine; +typedef struct { struct aplwc_ref ref; } AplwcValue; struct aplwc_fns { void *(*alloc)(size_t, size_t, size_t *); void (*dealloc)(void *); }; -enum aplwc_rc aplwc_new(struct aplwc **, struct aplwc_fns); +struct aplwc *aplwc_new(struct aplwc_fns, enum aplwc_rc *); void aplwc_destroy(struct aplwc *); +void aplwc_clear_line(AplwcLine *); +void aplwc_clear_value(AplwcValue *); +int aplwc_valid_line(AplwcLine); +int aplwc_valid_value(AplwcValue); const char *aplwc_errstr_rc(enum aplwc_rc); const char *aplwc_errstr(struct aplwc *); enum aplwc_rc aplwc_last_error(struct aplwc *); -struct aplwc_line *aplwc_read(struct aplwc *, const char *); -void aplwc_free_line(struct aplwc_line *); -struct aplwc_value *aplwc_eval(struct aplwc_line *); -void aplwc_free_value(struct aplwc_value *); -const char *aplwc_value_string(struct aplwc_value *); +AplwcLine aplwc_read(struct aplwc *, const char *); +void aplwc_free_line(AplwcLine); +AplwcValue aplwc_eval(AplwcLine); +void aplwc_free_value(AplwcValue); +const char *aplwc_value_string(AplwcValue); enum aplwc_rc aplwc_load_module(struct aplwc *, const char *, const char *, int n); #endif /* APLWC_H */ |