+ * [[classes]]
+ * Option classes
+ * --------------
+ *
+ * Each option belongs to one of the following classes, which define
+ * the overall behavior of the option. In most cases, the classes
+ * are set automatically by <<macros,declaration macros>>.
+ *
+ * - `OPT_CL_END`: this is not a real option class, but a signal
+ * that the list of options ends.
+ * - `OPT_CL_BOOL`: a boolean option. If specified without an argument,
+ * it sets the corresponding variable to 1 (true). So does an argument of
+ * `1`, `y`, `yes`, or `true`. Conversely, an argument of `0`, `n`, `no`,
+ * or `false` sets the variable to 0 (false) and the same happens if
+ * the option is given as `--no-`'option' with no argument.
+ * - `OPT_CL_STATIC`: options of this class just take a value and store
+ * it in the variable.
+ * - `OPT_CL_SWITCH`: a multiple-choice switch, which sets the variable
+ * to a fixed value provided in option definition.
+ * - `OPT_CL_INC`: increments the variable (or decrements, if the
+ * `OPT_NEGATIVE` flag is set).
+ * - `OPT_CL_CALL`: instead of setting a variable, call a function
+ * and pass the value of the option to it.
+ * - `OPT_CL_USER`: like `OPT_CL_STATIC`, but with user-defined value
+ * syntax, specified as <<conf:struct_cf_user_type,`cf_user_type`>>.
+ * - `OPT_CL_SECTION`: not a real option, but an instruction to insert
+ * contents of another list of options.
+ * - `OPT_CL_HELP`: no option, just print a help text.
+ * - `OPT_CL_HOOK`: no option, but a definition of a hook. (FIXME)