X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fsignalbase.hpp;h=f646a40dcc24f7255822b6f4a9584a4f721c92b6;hb=57e7e17efd833527069607595be0847080d0a6a2;hp=7e1196521d0d3ae303a8b6258e6f62dce71cb798;hpb=999869aa676f7077b7181355eee28e9b025d4cea;p=pulseview.git diff --git a/pv/data/signalbase.hpp b/pv/data/signalbase.hpp index 7e119652..f646a40d 100644 --- a/pv/data/signalbase.hpp +++ b/pv/data/signalbase.hpp @@ -22,6 +22,7 @@ #define PULSEVIEW_PV_DATA_SIGNALBASE_HPP #include +#include #include #include #include @@ -39,6 +40,8 @@ using std::atomic; using std::condition_variable; +using std::deque; +using std::enable_shared_from_this; using std::map; using std::mutex; using std::pair; @@ -58,9 +61,30 @@ class DecoderStack; class Logic; class LogicSegment; class Segment; +class SignalBase; class SignalData; -class SignalBase : public QObject +class SignalGroup : public QObject +{ + Q_OBJECT + +public: + SignalGroup(const QString& name); + + void append_signal(shared_ptr signal); + void remove_signal(shared_ptr signal); + deque> signals() const; + void clear(); + + const QString name() const; + +private: + deque> signals_; + QString name_; +}; + + +class SignalBase : public QObject, public enable_shared_from_this { Q_OBJECT @@ -141,6 +165,16 @@ public: */ unsigned int logic_bit_index() const; + /** + * Sets the signal group this signal belongs to + */ + void set_group(SignalGroup* group); + + /** + * Returns the signal group this signal belongs to or nullptr if none + */ + SignalGroup* group() const; + /** * Gets the name of this signal. */ @@ -351,6 +385,7 @@ private Q_SLOTS: protected: shared_ptr channel_; ChannelType channel_type_; + SignalGroup* group_; shared_ptr data_; shared_ptr converted_data_; ConversionType conversion_type_;