We want to add a simple plug-in mechanism for boolean global flags defined on
the command line.
The developer could write
FlagPlugin peter("strunkbolzen");
on the global level to define a plugin (similar to "normal" plugins and
PluginTypePlugins).
In their code, they can then use
if (peter) {
// debug stuff, special log output
}
to test if the flag has been set by the user. The user would set the flag by
saying "--flag strunkbolzen" on the command line.
This is mainly meant for simple debugging while working on the code. An
alternative is to add a new option to a plugin object. For example, if "peter"
is used for debugging the merge-and-shrink heuristic, then one could alternative
give the merge-and-shrink heuristic object a new option "debug" or whatever. But
this is much more work: it requires modifying the parser for merge-and-shrink
heuristic, adding the object to the class, setting it in the constructor, and
passing it around to users that don't have direct access to the merge-and-shrink
heuristic object. Also, it requires changing the option strings when calling the
planner in a more complex way than just appending "--flag strunkbolzen".
Also, if we want, we can later configure the state of the flag from other
sources (like environment variable DOWNWARD_FLAG_STRUNKBOLZEN) in situations
where it's not so easy to modify the option string, e.g. because it comes from a
script or alias. But this last bit is just an idea for future extension.
|