Skip to content

Refactor getter functions to caller-provided output pattern#55

Merged
ionux merged 1 commit intomainfrom
claude/refactor-getter-functions-X92DP
Mar 17, 2026
Merged

Refactor getter functions to caller-provided output pattern#55
ionux merged 1 commit intomainfrom
claude/refactor-getter-functions-X92DP

Conversation

@ionux
Copy link
Copy Markdown
Owner

@ionux ionux commented Mar 17, 2026

All eight getter functions now return OkjError and write results into a caller-supplied struct pointer instead of returning a pointer to a static file-scope variable. This makes the library fully thread-safe and reentrant, and aligns getters with the okj_parse() error-code convention.

New signatures:
OkjError okj_get_string(parser, key, OkJsonString *out_str);
OkjError okj_get_number(parser, key, OkJsonNumber *out_num);
OkjError okj_get_boolean(parser, key, OkJsonBoolean *out_bool);
OkjError okj_get_array(parser, key, OkJsonArray *out_arr);
OkjError okj_get_object(parser, key, OkJsonObject *out_obj);
OkjError okj_get_token(parser, key, OkJsonToken *out_tok);
OkjError okj_get_array_raw(parser, key, OkJsonArray *out_arr);
OkjError okj_get_object_raw(parser, key, OkJsonObject *out_obj);

NULL parser/key/output returns OKJ_ERROR_BAD_POINTER; type mismatch or key-not-found returns the type-specific error code (BAD_STRING, BAD_NUMBER, BAD_BOOLEAN, BAD_ARRAY, BAD_OBJECT). The seven static file-scope result structs (s_string_result etc.) are removed entirely.

All unit tests updated to use value-type locals, dot-operator member access, and assert-on-error-code patterns. All 230 tests pass.

https://claude.ai/code/session_017TcSrEaHq4Wg57Qq8wvFzM

All eight getter functions now return OkjError and write results into
a caller-supplied struct pointer instead of returning a pointer to a
static file-scope variable.  This makes the library fully thread-safe
and reentrant, and aligns getters with the okj_parse() error-code
convention.

New signatures:
  OkjError okj_get_string(parser, key, OkJsonString *out_str);
  OkjError okj_get_number(parser, key, OkJsonNumber *out_num);
  OkjError okj_get_boolean(parser, key, OkJsonBoolean *out_bool);
  OkjError okj_get_array(parser, key, OkJsonArray *out_arr);
  OkjError okj_get_object(parser, key, OkJsonObject *out_obj);
  OkjError okj_get_token(parser, key, OkJsonToken *out_tok);
  OkjError okj_get_array_raw(parser, key, OkJsonArray *out_arr);
  OkjError okj_get_object_raw(parser, key, OkJsonObject *out_obj);

NULL parser/key/output returns OKJ_ERROR_BAD_POINTER; type mismatch
or key-not-found returns the type-specific error code (BAD_STRING,
BAD_NUMBER, BAD_BOOLEAN, BAD_ARRAY, BAD_OBJECT).  The seven static
file-scope result structs (s_string_result etc.) are removed entirely.

All unit tests updated to use value-type locals, dot-operator member
access, and assert-on-error-code patterns.  All 230 tests pass.

https://claude.ai/code/session_017TcSrEaHq4Wg57Qq8wvFzM
@ionux ionux merged commit 746952e into main Mar 17, 2026
2 checks passed
@ionux ionux deleted the claude/refactor-getter-functions-X92DP branch March 17, 2026 03:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants