From 28a05ad4c68b84a1ce782091314b71f9d543884e Mon Sep 17 00:00:00 2001 From: dormando Date: Tue, 6 Aug 2024 14:36:17 -0700 Subject: [PATCH] more mcmc changes should have all of the accessors now --- vendor/mcmc/mcmc.c | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/vendor/mcmc/mcmc.c b/vendor/mcmc/mcmc.c index 49b31f86c..0d47eeaff 100644 --- a/vendor/mcmc/mcmc.c +++ b/vendor/mcmc/mcmc.c @@ -670,26 +670,41 @@ const char *mcmc_token_get_flag(const char *l, mcmc_tokenizer_t *t, char flag, i return NULL; } -// TODO: once tested, turn to macro for u64/32/64 int mcmc_token_get_flag_u32(const char *l, mcmc_tokenizer_t *t, char flag, uint32_t *val) { - for (int x = t->mstart; x < t->ntokens; x++) { - const char *tflag = l + t->tokens[x]; - if (tflag[0] == flag) { - int tlen = _mcmc_token_len(l, t, x); - return mcmc_toktou32(tflag+1, tlen-1, val); - } + int tlen = 0; + const char *tok = mcmc_token_get_flag(l, t, flag, &tlen); + if (tok) { + return mcmc_toktou32(tok, tlen, val); + } + + return MCMC_NOK; +} + +int mcmc_token_get_flag_u64(const char *l, mcmc_tokenizer_t *t, char flag, uint64_t *val) { + int tlen = 0; + const char *tok = mcmc_token_get_flag(l, t, flag, &tlen); + if (tok) { + return mcmc_toktou64(tok, tlen, val); + } + + return MCMC_NOK; +} + +int mcmc_token_get_flag_32(const char *l, mcmc_tokenizer_t *t, char flag, int32_t *val) { + int tlen = 0; + const char *tok = mcmc_token_get_flag(l, t, flag, &tlen); + if (tok) { + return mcmc_tokto32(tok, tlen, val); } return MCMC_NOK; } int mcmc_token_get_flag_64(const char *l, mcmc_tokenizer_t *t, char flag, int64_t *val) { - for (int x = t->mstart; x < t->ntokens; x++) { - const char *tflag = l + t->tokens[x]; - if (tflag[0] == flag) { - int tlen = _mcmc_token_len(l, t, x); - return mcmc_tokto64(tflag+1, tlen-1, val); - } + int tlen = 0; + const char *tok = mcmc_token_get_flag(l, t, flag, &tlen); + if (tok) { + return mcmc_tokto64(tok, tlen, val); } return MCMC_NOK;