diff options
author | Philip Langdale <philipl@overt.org> | 2021-02-20 16:41:44 -0800 |
---|---|---|
committer | Jan Ekström <jeebjp@gmail.com> | 2021-03-28 19:46:27 +0300 |
commit | 3f006eced47b35b7d752fdc19c22a7f39f970975 (patch) | |
tree | 7186f381e317fac2e8cc117d2ff20ab700a3b372 /video/out/gpu/context.h | |
parent | 6265724f3331e3dee8d9ec2b6639def5004a5fa2 (diff) | |
download | mpv-3f006eced47b35b7d752fdc19c22a7f39f970975.tar.bz2 mpv-3f006eced47b35b7d752fdc19c22a7f39f970975.tar.xz |
options: Make validation and help possible for all option types
Today, validation is only possible for string type options. But there's
no particular reason why it needs to be restricted in this way, and
there are potential uses, to allow other options to be validated
without forcing the option to have to reimplement parsing from
scratch.
The first part, simply making the validation function an explicit
field instead of overloading priv is simple enough. But if we only do
that, then the validation function still needs to deal with the raw
pre-parsed string. Instead, we want to allow the value to be parsed
before it is validated. That in turn leads to us having validator
functions that should be type aware. Unfortunately, that means we need
to keep the explicit macro like OPT_STRING_VALIDATE() as a way to
enforce the correct typing of the function. Otherwise, we'd have to
have the validator take a void * and hope the implementation can cast
it correctly.
For help, we don't have this problem, as help doesn't look at the
value.
Then, we turn validators that are really help generators into explicit
help functions and where a validator is help + validation, we split
them into two parts.
I have, however, left functions that need to query information for both
help and validation as single functions to avoid code duplication.
In this change, I have not added an other OPT_FOO_VALIDATE() macros as
they are not needed, but I will add some in a separate change to
illustrate the pattern.
Diffstat (limited to 'video/out/gpu/context.h')
-rw-r--r-- | video/out/gpu/context.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/video/out/gpu/context.h b/video/out/gpu/context.h index 8c35eb0fc0..ca71150f54 100644 --- a/video/out/gpu/context.h +++ b/video/out/gpu/context.h @@ -100,7 +100,11 @@ struct ra_ctx *ra_ctx_create(struct vo *vo, const char *context_type, void ra_ctx_destroy(struct ra_ctx **ctx); struct m_option; +int ra_ctx_api_help(struct mp_log *log, const struct m_option *opt, + struct bstr name); int ra_ctx_validate_api(struct mp_log *log, const struct m_option *opt, - struct bstr name, struct bstr param); + struct bstr name, const char **value); +int ra_ctx_context_help(struct mp_log *log, const struct m_option *opt, + struct bstr name); int ra_ctx_validate_context(struct mp_log *log, const struct m_option *opt, - struct bstr name, struct bstr param); + struct bstr name, const char **value); |