summaryrefslogtreecommitdiff
path: root/src/options/mkoptions
diff options
context:
space:
mode:
Diffstat (limited to 'src/options/mkoptions')
-rwxr-xr-xsrc/options/mkoptions72
1 files changed, 43 insertions, 29 deletions
diff --git a/src/options/mkoptions b/src/options/mkoptions
index 05280baa8..ad8d7033f 100755
--- a/src/options/mkoptions
+++ b/src/options/mkoptions
@@ -115,6 +115,7 @@ long_option_alternate=
long_option_alternate_set=
type=
predicates=
+notifications=
# just for duplicates-checking
all_declared_internal_options=
@@ -247,6 +248,7 @@ function handle_option {
default_value=
handlers=
predicates=
+ notifications=
links=
links_alternate=
smt_links=
@@ -425,6 +427,12 @@ function handle_option {
predicates="${predicates} ${args[$i]}"
done
;;
+ :notify)
+ while [ $(($i+1)) -lt ${#args[@]} ] && ! expr "${args[$(($i+1))]}" : '\:' &>/dev/null; do
+ let ++i
+ notifications="${notifications} ${args[$i]}"
+ done
+ ;;
:link)
while [ $(($i+1)) -lt ${#args[@]} ] && ! expr "${args[$(($i+1))]}" : '\:' &>/dev/null; do
let ++i
@@ -535,11 +543,11 @@ template <> bool Options::wasSetByUser(options::${internal}__option_t) const;"
if [ "$type" = bool ]; then
module_specializations="${module_specializations}
#line $lineno \"$kf\"
-template <> void Options::assignBool(options::${internal}__option_t, std::string option, bool value, options::OptionsHandler* handler);"
+template <> void Options::assignBool(options::${internal}__option_t, std::string option, bool value);"
elif [ "$internal" != - ]; then
module_specializations="${module_specializations}
#line $lineno \"$kf\"
-template <> void Options::assign(options::${internal}__option_t, std::string option, std::string value, options::OptionsHandler* handler);"
+template <> void Options::assign(options::${internal}__option_t, std::string option, std::string value);"
fi
module_accessors="${module_accessors}
@@ -585,6 +593,7 @@ template <> bool Options::wasSetByUser(options::${internal}__option_t) const { r
run_links=
run_links_alternate=
run_smt_links=
+ run_notifications=
if [ -n "$links" -a -z "$smt_links" -a -n "$smtname" ]; then
WARN "$smtname has no :link-smt, but equivalent command-line has :link"
elif [ -n "$smt_links" -a -z "$links" ] && [ -n "$short_option" -o -n "$short_option_alternate" -o -n "$long_option" -o "$long_option_alternate" ]; then
@@ -595,7 +604,7 @@ template <> bool Options::wasSetByUser(options::${internal}__option_t) const { r
for link in $links; do
run_links="$run_links
#line $lineno \"$kf\"
- preemptGetopt(extra_argc, extra_argv, \"$link\");"
+ argumentExtender.extend(extra_argc, extra_argv, \"$link\", allocated);"
done
fi
if [ -n "$smt_links" ]; then
@@ -605,7 +614,7 @@ template <> bool Options::wasSetByUser(options::${internal}__option_t) const { r
while [ $i -lt ${#smt_links[@]} ]; do
run_smt_links="$run_smt_links
#line $lineno \"$kf\"
- handler->setOption(std::string(\"${smt_links[$i]}\"), (${smt_links[$(($i+1))]}));"
+ setOption(std::string(\"${smt_links[$i]}\"), (${smt_links[$(($i+1))]}));"
i=$((i+2))
done
fi
@@ -614,7 +623,14 @@ template <> bool Options::wasSetByUser(options::${internal}__option_t) const { r
for link in $links_alternate; do
run_links_alternate="$run_links_alternate
#line $lineno \"$kf\"
- preemptGetopt(extra_argc, extra_argv, \"$link\");"
+ argumentExtender.extend(extra_argc, extra_argv, \"$link\", allocated);"
+ done
+ fi
+ if [ -n "$notifications" ]; then
+ for notification in $notifications; do
+ run_notifications="$run_notifications
+#line $lineno \"$kf\"
+ d_handler->$notification(option);"
done
fi
if [ "$type" = bool ] && [ -n "$cases" -o -n "$cases_alternate" -o -n "$smtname" ]; then
@@ -626,7 +642,7 @@ template <> bool Options::wasSetByUser(options::${internal}__option_t) const { r
for predicate in $predicates; do
run_handlers="$run_handlers
#line $lineno \"$kf\"
- $predicate(option, b, handler);"
+ handler->$predicate(option, b);"
done
fi
if [ -n "$run_handlers" ]; then
@@ -641,7 +657,7 @@ template <> void runBoolPredicates(options::${internal}__option_t, std::string o
if [ "$type" = bool ]; then
all_modules_option_handlers="${all_modules_option_handlers}${cases}
#line $lineno \"$kf\"
- assignBool(options::$internal, option, true, handler);$run_links
+ assignBool(options::$internal, option, true);$run_links
break;
"
elif [ -n "$expect_arg" -a "$internal" != - ]; then
@@ -650,7 +666,7 @@ template <> void runBoolPredicates(options::${internal}__option_t, std::string o
for handler in $handlers; do
run_handlers="$run_handlers
#line $lineno \"$kf\"
- $handler(option, optionarg, handler);"
+ handler->$handler(option, optionarg);"
done
else
run_handlers="
@@ -661,7 +677,7 @@ template <> void runBoolPredicates(options::${internal}__option_t, std::string o
for predicate in $predicates; do
run_handlers="$run_handlers
#line $lineno \"$kf\"
- $predicate(option, retval, handler);"
+ handler->$predicate(option, retval);"
done
fi
all_custom_handlers="${all_custom_handlers}
@@ -674,7 +690,7 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
}"
all_modules_option_handlers="${all_modules_option_handlers}${cases}
#line $lineno \"$kf\"
- assign(options::$internal, option, optionarg, handler);$run_links
+ assign(options::$internal, option, optionarg);$run_links
break;
"
elif [ -n "$expect_arg" ]; then
@@ -686,7 +702,7 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
for handler in $handlers; do
run_handlers="$run_handlers
#line $lineno \"$kf\"
- $handler(option, optionarg, handler);"
+ handler->$handler(option, optionarg);"
done
fi
all_modules_option_handlers="${all_modules_option_handlers}${cases}
@@ -703,7 +719,7 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
for handler in $handlers; do
run_handlers="$run_handlers
#line $lineno \"$kf\"
- $handler(option, handler);"
+ handler->$handler(option);"
done
fi
all_modules_option_handlers="${all_modules_option_handlers}${cases}
@@ -712,12 +728,12 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
break;
"
fi
- fi
+ fi # ends if [ -n "$cases" ];
if [ -n "$cases_alternate" ]; then
if [ "$type" = bool ]; then
all_modules_option_handlers="${all_modules_option_handlers}${cases_alternate}
#line $lineno \"$kf\"
- assignBool(options::$internal, option, false, handler);$run_links_alternate
+ assignBool(options::$internal, option, false);$run_links_alternate
break;
"
else
@@ -770,7 +786,7 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
#line $lineno \"$kf\"
if(key == \"$smtname\") {
#line $lineno \"$kf\"
- Options::current()->assignBool(options::$internal, \"$smtname\", optionarg == \"true\", handler);$run_smt_links
+ Options::current()->assignBool(options::$internal, \"$smtname\", optionarg == \"true\");$run_smt_links
return;
}"
elif [ -n "$expect_arg" -a "$internal" != - ]; then
@@ -779,7 +795,7 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
for handler in $handlers; do
run_handlers="$run_handlers
#line $lineno \"$kf\"
- $handler(\"$smtname\", optionarg, handler);
+ handler->$handler(\"$smtname\", optionarg);
"
done
fi
@@ -787,7 +803,7 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
#line $lineno \"$kf\"
if(key == \"$smtname\") {
#line $lineno \"$kf\"
- Options::current()->assign(options::$internal, \"$smtname\", optionarg, handler);$run_smt_links
+ Options::current()->assign(options::$internal, \"$smtname\", optionarg);$run_smt_links
return;
}"
elif [ -n "$expect_arg" ]; then
@@ -795,7 +811,7 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
for handler in $handlers; do
run_handlers="$run_handlers
#line $lineno \"$kf\"
- $handler(\"$smtname\", optionarg, handler);
+ handler->$handler(\"$smtname\", optionarg);
"
done
smt_setoption_handlers="${smt_setoption_handlers}
@@ -810,7 +826,7 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
for handler in $handlers; do
run_handlers="$run_handlers
#line $lineno \"$kf\"
- $handler(\"$smtname\", handler);
+ handler->$handler(\"$smtname\");
"
done
smt_setoption_handlers="${smt_setoption_handlers}
@@ -849,26 +865,26 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
# emit assignBool/assign
all_custom_handlers="${all_custom_handlers}
#line $lineno \"$kf\"
-template <> void Options::assignBool(options::${internal}__option_t, std::string option, bool value, options::OptionsHandler* handler) {
+template <> void Options::assignBool(options::${internal}__option_t, std::string option, bool value) {
#line $lineno \"$kf\"
- runBoolPredicates(options::$internal, option, value, handler);
+ runBoolPredicates(options::$internal, option, value, d_handler);
#line $lineno \"$kf\"
d_holder->$internal = value;
#line $lineno \"$kf\"
d_holder->${internal}__setByUser__ = true;
#line $lineno \"$kf\"
- Trace(\"options\") << \"user assigned option $internal\" << std::endl;
+ Trace(\"options\") << \"user assigned option $internal\" << std::endl;$run_notifications
}"
elif [ -n "$expect_arg" -a "$internal" != - ] && [ -n "$cases" -o -n "$cases_alternate" -o -n "$smtname" ]; then
all_custom_handlers="${all_custom_handlers}
#line $lineno \"$kf\"
-template <> void Options::assign(options::${internal}__option_t, std::string option, std::string value, options::OptionsHandler* handler) {
+template <> void Options::assign(options::${internal}__option_t, std::string option, std::string value) {
#line $lineno \"$kf\"
- d_holder->$internal = runHandlerAndPredicates(options::$internal, option, value, handler);
+ d_holder->$internal = runHandlerAndPredicates(options::$internal, option, value, d_handler);
#line $lineno \"$kf\"
d_holder->${internal}__setByUser__ = true;
#line $lineno \"$kf\"
- Trace(\"options\") << \"user assigned option $internal\" << std::endl;
+ Trace(\"options\") << \"user assigned option $internal\" << std::endl;$run_notifications
}"
fi
}
@@ -912,8 +928,6 @@ function handle_alias {
readOnly=true
required_argument=false
default_value=
- handlers=
- predicates=
links=
links_alternate=
@@ -999,12 +1013,12 @@ function handle_alias {
fi
links="$links
#line $lineno \"$kf\"
- preemptGetopt(extra_argc, extra_argv, \"$linkopt\");"
+ argumentExtender.extend(extra_argc, extra_argv, \"$linkopt\", allocated);"
if [ "$linkarg" ]; then
# include also the arg
links="$links
#line $lineno \"$kf\"
- preemptGetopt(extra_argc, extra_argv, optionarg.c_str());"
+ argumentExtender.extend(extra_argc, extra_argv, optionarg.c_str(), allocated);"
fi
shift
done
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback