StrReadFmtInternal
StrReadFmtInternal
Description
Parse input string according to format string with rust-style placeholders, extracting values into provided TypeSpecificIO arguments.
Takes in TypeSpecificIO structures as arguments. Use . to wrap any supported-type variable to its TypeSpecificIO object.
Parameters
| Name | Direction | Description |
|---|---|---|
input |
in | Input string to parse (null-terminated) |
fmtstr |
in | Format string with placeholders (null-terminated) |
argv |
in | Arguments that will be read into from placeholders. |
argc |
in | Number of arguments. |
Usage example (from documentation)
const char *input = "Count: 42, Name: Alice";
int count;
Str name;
const char *remaining = StrReadFmt(input, "Count: {}, Name: {}", count, name);Success
After reading through input, returns back const char* to start reading from (from inside input)
Failure
Returns NULL if fmtstr does not match with input. In any other case of error, does not return.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Io.c:420:
}
const char *StrReadFmtInternal(const char *input, const char *fmtstr, TypeSpecificIO *argv, u64 argc) {
if (!input || !fmtstr) {
LOG_FATAL("Invalid arguments");- In
Io.c:660:
StrPushBack(&buffer, in);
}
StrReadFmtInternal(buffer.data, fmtstr, argv, argc);
} else {
fpos_t start_pos;- In
Io.c:687:
if (buffer.length) {
const char *new_pos = NULL;
if (!(new_pos = StrReadFmtInternal(buffer.data, fmtstr, argv, argc))) {
if (can_rollback) {
LOG_ERROR("Parse failed, rolling back...");- In
Io.h:363:
char **_p_input_ = (char **)(&(input)); \
u64 argc_ = sizeof(varr) / sizeof(TypeSpecificIO); \
const char *_input_ = StrReadFmtInternal((const char *)*(_p_input_), (fmtstr), argv_, argc_ - 1); \
(*_p_input_) = (char *)(_input_) ? (char *)(_input_) : (*_p_input_); \
} while (0)
Last updated on