2022-06-20 01:30:01 +00:00
|
|
|
#include <gargoyle/codex.h>
|
|
|
|
#include <gargoyle/scribe.h>
|
|
|
|
#include <gargoyle/twine.h>
|
2022-06-20 17:51:19 +00:00
|
|
|
#include <stdlib.h>
|
2022-06-20 01:30:01 +00:00
|
|
|
|
2022-06-29 01:24:07 +00:00
|
|
|
uint8_t gargoyle_from_bool(struct gargoyle_opt *opt, const char *brand, const char *neg, uint16_t neg_sz, gargoyle_flag_type flags) {
|
2022-07-03 00:18:13 +00:00
|
|
|
if(!neg) {
|
|
|
|
neg = "no-";
|
|
|
|
neg_sz = 3;
|
|
|
|
}
|
|
|
|
|
2022-06-20 01:30:01 +00:00
|
|
|
if(opt->val) {
|
|
|
|
uint8_t *val = opt->val;
|
2022-06-29 01:24:07 +00:00
|
|
|
*val = !gargoyle_cmp(brand, neg, neg_sz, flags);
|
2022-06-20 01:30:01 +00:00
|
|
|
}
|
|
|
|
|
2022-06-29 01:42:32 +00:00
|
|
|
return GARGOYLE_ERR_SUCCESS;
|
2022-06-20 01:30:01 +00:00
|
|
|
}
|
|
|
|
|
2022-06-27 23:25:31 +00:00
|
|
|
uint8_t gargoyle_from_rope(struct gargoyle_opt *opt, const char *brand_val, gargoyle_flag_type flags) {
|
2022-06-20 17:51:19 +00:00
|
|
|
if(opt->type & GARGOYLE_TYPE_UINT) {
|
|
|
|
char *end = NULL;
|
|
|
|
uint64_t *val = opt->val;
|
2022-06-24 13:20:50 +00:00
|
|
|
*val = strtoull(brand_val, &end, 10);
|
2022-06-20 17:51:19 +00:00
|
|
|
|
|
|
|
if(*end) {
|
|
|
|
return GARGOYLE_ERR_INVALID_UINT;
|
|
|
|
}
|
2022-06-30 06:21:42 +00:00
|
|
|
} else if(opt->type & GARGOYLE_TYPE_SINT) {
|
|
|
|
char *end = NULL;
|
|
|
|
int64_t *val = opt->val;
|
|
|
|
*val = strtoll(brand_val, &end, 10);
|
|
|
|
|
|
|
|
if(*end) {
|
|
|
|
return GARGOYLE_ERR_INVALID_SINT;
|
|
|
|
}
|
2022-06-20 18:20:00 +00:00
|
|
|
} else if(opt->type & GARGOYLE_TYPE_DBLE) {
|
|
|
|
char *end = NULL;
|
|
|
|
double *val = opt->val;
|
2022-06-24 13:20:50 +00:00
|
|
|
*val = strtod(brand_val, &end);
|
2022-06-20 18:20:00 +00:00
|
|
|
|
|
|
|
if(*end) {
|
|
|
|
return GARGOYLE_ERR_INVALID_DBLE;
|
|
|
|
}
|
2022-06-22 21:45:57 +00:00
|
|
|
} else if(opt->type & GARGOYLE_TYPE_ROPE) {
|
|
|
|
char *val = opt->val;
|
2022-06-27 23:25:31 +00:00
|
|
|
gargoyle_cpy(val, brand_val, opt->val_sz, flags | GARGOYLE_FLG_FILL0);
|
2022-06-23 01:25:28 +00:00
|
|
|
} else {
|
|
|
|
return GARGOYLE_ERR_UNKNOWN_TYPE;
|
2022-06-20 17:51:19 +00:00
|
|
|
}
|
|
|
|
|
2022-06-29 01:42:32 +00:00
|
|
|
return GARGOYLE_ERR_SUCCESS;
|
2022-06-20 01:30:01 +00:00
|
|
|
}
|