]> sigrok.org Git - pulseview.git/blobdiff - pv/data/decode/decoder.hpp
DecodeSignal: Re-set decoder metadata after stack termination
[pulseview.git] / pv / data / decode / decoder.hpp
index 105c6f744b0cf897df19e64d7237a06ddf50fb67..55742c6070e5a020c00042b2c8894e744b13986e 100644 (file)
@@ -14,8 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #ifndef PULSEVIEW_PV_DATA_DECODE_DECODER_HPP
 #include <map>
 #include <memory>
 #include <set>
+#include <vector>
 
 #include <glib.h>
 
+using std::map;
+using std::string;
+using std::vector;
+
 struct srd_decoder;
 struct srd_decoder_inst;
 struct srd_channel;
@@ -36,6 +40,7 @@ namespace pv {
 
 namespace data {
 
+struct DecodeChannel;
 class Logic;
 class SignalBase;
 
@@ -53,30 +58,28 @@ public:
        bool shown() const;
        void show(bool show = true);
 
-       const std::map<const srd_channel*,
-               std::shared_ptr<data::SignalBase> >& channels() const;
-       void set_channels(std::map<const srd_channel*,
-               std::shared_ptr<data::SignalBase> > channels);
+       const vector<data::DecodeChannel*>& channels() const;
+       void set_channels(vector<data::DecodeChannel*> channels);
 
-       const std::map<std::string, GVariant*>& options() const;
+       const map<string, GVariant*>& options() const;
 
        void set_option(const char *id, GVariant *value);
 
-       bool have_required_channels() const;
+       void apply_all_options();
 
-       srd_decoder_inst* create_decoder_inst(
-               srd_session *session) const;
+       bool have_required_channels() const;
 
-       std::set< std::shared_ptr<pv::data::Logic> > get_data();
+       srd_decoder_inst* create_decoder_inst(srd_session *session);
+       void invalidate_decoder_inst();
 
 private:
        const srd_decoder *const decoder_;
 
        bool shown_;
 
-       std::map<const srd_channel*, std::shared_ptr<pv::data::SignalBase> >
-               channels_;
-       std::map<std::string, GVariant*> options_;
+       vector<data::DecodeChannel*> channels_;
+       map<string, GVariant*> options_;
+       srd_decoder_inst *decoder_inst_;
 };
 
 } // namespace decode