1 #ifndef teca_programmable_algorithm_h
2 #define teca_programmable_algorithm_h
4 #include "teca_algorithm.h"
5 #include "teca_metadata.h"
6 #include "teca_dataset_fwd.h"
7 #include "teca_programmable_algorithm_fwd.h"
64 virtual int set_name(
const std::string &name);
66 const char *get_class_name()
const override
67 {
return this->class_name; }
70 using teca_algorithm::set_number_of_input_connections;
71 using teca_algorithm::set_number_of_output_ports;
74 void use_default_report_action();
75 void use_default_request_action();
76 void use_default_execute_action();
86 TECA_ALGORITHM_CALLBACK_PROPERTY(
87 report_callback_t, report_callback)
99 TECA_ALGORITHM_CALLBACK_PROPERTY(
100 request_callback_t, request_callback)
111 TECA_ALGORITHM_CALLBACK_PROPERTY(
112 execute_callback_t, execute_callback)
120 const std::vector<teca_metadata> &input_md)
override;
122 std::vector<teca_metadata> get_upstream_request(
124 const std::vector<teca_metadata> &input_md,
127 const_p_teca_dataset execute(
129 const std::vector<const_p_teca_dataset> &input_data,
133 report_callback_t report_callback;
134 request_callback_t request_callback;
135 execute_callback_t execute_callback;