The problem was that reloading the add-on list invalidated the string
reference. Fixed by receiving the add-on ID by value instead.
I also fixed that status and type filters weren't honored after reloading
the list.
No one has used the configuration for a long time. In addition, the code
specific to that configuration was removed in commit 19e0d86e6dc3387196d8c2a8b5236b0828d97178:
after that, the configuration no longer had any differences relative to
Debug.
Note that like in 8bf345c, using emplace_back with config_of doesn't actually allow for in-place construction,
but does allow for use of the move ctor, which is more efficient.
Includes a few minor syntax changes such as range-for deployment.
Also moves the implementation of formula_callable::get_value and various map_formula_callable functions to their
appropriate places.
The debugger used a deque, but added elements to it while iterating over it.
Since it didn't rely on the random access property, I simply replaced it with list.
Also, there was an incorrect use of erase().
This also adds a new intermediary "action" function table between the
FormulaAI function table and the builtins function table.
This "actions" function table could be used in other areas of the code
where action objects are desired, for example in scenario events or
in the GUI2 Canvas.
With a simple enum it would be acceptable to create a new copy every time this is called. However, given that VARIANT_TYPE
is a more complex struct generated yb MAKE_ENUM, it makes sense to keep the creation/copying to a minimum.
The seen stack is an implementation detail that should generally only be
non-null when called recursively from the implementation, so it makes
more sense for it to be the second argument rather than the first.
I did not swap the arguments for variant_value_base::get_debug_string,
because that's entirely internal anyway so it doesn't really matter.
This reverts commit 725bd6291f33928d625535f644fe0b1e88774090.
Xcode doesn't support thread local variables until Xcode 8, and Visual
Studio doesn't allow thread-local non-POD objects until Visual Studio
2015. Because it's desirable to keep
variant_callable::get_debug_string() thread-safe, it's best to revert to
the previous implementation that explicitly passes the call stack as a
function parameter.