diff bits/PreservingPluginHandleMapper.h @ 57:7aec704705c7

Make the output ID mapper stuff safer by using shared_ptr
author Chris Cannam <c.cannam@qmul.ac.uk>
date Mon, 19 Sep 2016 14:43:32 +0100
parents e90fd30990eb
children 8a4bcb3dc3a6
line wrap: on
line diff
--- a/bits/PreservingPluginHandleMapper.h	Mon Sep 19 14:10:19 2016 +0100
+++ b/bits/PreservingPluginHandleMapper.h	Mon Sep 19 14:43:32 2016 +0100
@@ -49,7 +49,10 @@
 class PreservingPluginHandleMapper : public PluginHandleMapper
 {
 public:
-    PreservingPluginHandleMapper() : m_handle(0), m_plugin(0) { }
+    PreservingPluginHandleMapper() :
+        m_handle(0),
+        m_plugin(0),
+        m_omapper(std::make_shared<PreservingPluginOutputIdMapper>()) { }
 
     virtual Handle pluginToHandle(Vamp::Plugin *p) const {
 	if (p == m_plugin) return m_handle;
@@ -68,18 +71,20 @@
 	return m_plugin;
     }
 
-    virtual const PluginOutputIdMapper &pluginToOutputIdMapper(Vamp::Plugin *) const {
+    virtual const std::shared_ptr<PluginOutputIdMapper> pluginToOutputIdMapper
+    (Vamp::Plugin *) const {
         return m_omapper;
     }
         
-    virtual const PluginOutputIdMapper &handleToOutputIdMapper(Handle h) const {
+    virtual const std::shared_ptr<PluginOutputIdMapper> handleToOutputIdMapper
+    (Handle h) const {
         return m_omapper;
     }
     
 private:
     mutable Handle m_handle;
     mutable Vamp::Plugin *m_plugin;
-    PreservingPluginOutputIdMapper m_omapper;
+    std::shared_ptr<PreservingPluginOutputIdMapper> m_omapper;
 };
 
 }