#ifndef PULSEVIEW_PV_DATA_MATHSIGNAL_HPP
#define PULSEVIEW_PV_DATA_MATHSIGNAL_HPP
+#define exprtk_disable_rtl_io_file /* Potential security issue, doubt anyone would use those anyway */
+#define exprtk_disable_rtl_vecops /* Vector ops are rather useless for math channels */
+#define exprtk_disable_caseinsensitivity /* So that we can have both 't' and 'T' */
+
#include <limits>
#include <QString>
class SignalBase;
template<typename T>
-struct sig_sample;
+struct fnc_sample;
struct signal_data {
signal_data(const shared_ptr<SignalBase> _sb) :
void reset_generation();
virtual void begin_generation();
- void generate_samples(uint32_t segment_id, const uint64_t start_sample,
+ uint64_t generate_samples(uint32_t segment_id, const uint64_t start_sample,
const int64_t sample_count);
void generation_proc();
bool all_input_signals_enabled(QString &disabled_signals) const;
Q_SIGNALS:
- void samples_cleared();
-
- void samples_added(uint64_t segment_id, uint64_t start_sample,
- uint64_t end_sample);
-
- void min_max_changed(float min, float max);
-
void expression_changed(QString expression);
private Q_SLOTS:
uint64_t custom_sample_rate_;
uint64_t custom_sample_count_;
bool use_custom_sample_rate_, use_custom_sample_count_;
+ uint64_t generation_chunk_size_;
map<std::string, signal_data> input_signals_;
QString expression_;
exprtk::parser<double> *exprtk_parser_;
double exprtk_current_time_, exprtk_current_sample_;
- sig_sample<double>* fnc_sig_sample_;
+ fnc_sample<double>* fnc_sample_;
// Give sig_sample access to the private helper functions
- friend struct sig_sample<double>;
+ friend struct fnc_sample<double>;
};
} // namespace data