Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define REGISTER_FORMULA_FUNCTION(name, min_args, max_args, execute_body) \
- class name##_function : public function_expression \
- { \
- public: \
- explicit name##_function(const args_list& args) \
- : function_expression(#name, args, ##min_args, ##max_args) \
- { \
- } \
- \
- private: \
- variant execute(const formula_callable& variables, formula_debugger* fdb) const \
- execute_body \
- };
- REGISTER_FORMULA_FUNCTION(debug, 0, 1,
- {
- std::shared_ptr<formula_debugger> fdbp;
- bool need_wrapper = false;
- if(fdb == nullptr) {
- fdbp.reset(new formula_debugger());
- fdb = &*fdbp;
- need_wrapper = true;
- }
- if(args().size() == 1) {
- if(!need_wrapper) {
- return args()[0]->evaluate(variables, fdb);
- } else {
- return wrapper_formula(args()[0]).evaluate(variables, fdb);
- }
- } else {
- return wrapper_formula().evaluate(variables, fdb);
- }
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement