summaryrefslogtreecommitdiffstats
path: root/demux
diff options
context:
space:
mode:
authorPhilip Langdale <philipl@overt.org>2021-02-20 16:41:44 -0800
committerJan Ekström <jeebjp@gmail.com>2021-03-28 19:46:27 +0300
commit3f006eced47b35b7d752fdc19c22a7f39f970975 (patch)
tree7186f381e317fac2e8cc117d2ff20ab700a3b372 /demux
parent6265724f3331e3dee8d9ec2b6639def5004a5fa2 (diff)
downloadmpv-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 'demux')
0 files changed, 0 insertions, 0 deletions