[beast/devel: 16/26] PLUGINS: compile BseIIRFilter as C++ resident type



commit 68c4fde118e2943826bdbc8aa2c9943378847882
Author: Tim Janik <timj gnu org>
Date:   Tue Dec 18 02:41:47 2012 +0100

    PLUGINS: compile BseIIRFilter as C++ resident type

 plugins/Makefile.am                         |    5 +-
 plugins/Makefile.plugins                    |   15 -----
 plugins/{bseiirfilter.c => bseiirfilter.cc} |   88 +++++++++------------------
 plugins/bseiirfilter.h                      |   19 +------
 po/POTSCAN                                  |    2 +-
 5 files changed, 32 insertions(+), 97 deletions(-)
---
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 8dfe482..d0a427e 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -35,8 +35,8 @@ SFIDL_INC = --nostdinc -I$(top_srcdir) -I$(top_builddir)
 	$(SFIDL) --plugin  --macro $(<F) $(SFIDL_INC) -I$(top_builddir) $< > $@ || (rm $@ ; exit 1 )
 
 # == C++ Plugins ==
-cxx_plugin_headers = bseadder.h  bseatandistort.h  bsesimpleadsr.h  bsemixer.h  bsemult.h  bsesequencer.h
-cxx_plugin_sources = bseadder.cc bseatandistort.cc bsesimpleadsr.cc bsemixer.cc bsemult.cc bsesequencer.cc
+cxx_plugin_headers = bseadder.h  bseatandistort.h  bsesimpleadsr.h  bsemixer.h  bsemult.h  bsesequencer.h  bseiirfilter.h
+cxx_plugin_sources = bseadder.cc bseatandistort.cc bsesimpleadsr.cc bsemixer.cc bsemult.cc bsesequencer.cc bseiirfilter.cc
 cxx_plugin_extra   = bsesimpleadsr-aux.cc
 EXTRA_DIST        += $(cxx_plugin_headers) $(cxx_plugin_extra)
 cxxplugins_FPU_la_SOURCES  = $(cxx_plugin_sources)
@@ -56,7 +56,6 @@ UNPORTED = $(strip		\
 	davguitar.[hc]		\
 )
 cglob_plugins = $(strip		\
-	bseiirfilter.[hc]	\
 	davxtalstrings.[hc]	\
 	davsyndrum.[hc]		\
 	davcanyondelay.[hc]	\
diff --git a/plugins/Makefile.plugins b/plugins/Makefile.plugins
index b100642..681a7f1 100644
--- a/plugins/Makefile.plugins
+++ b/plugins/Makefile.plugins
@@ -113,21 +113,6 @@ plugins_built_sources      += davorgan.genidl.hh
 davplugins_FPU_la_SOURCES += davorgan.cc
 
 
-## C Plugin bseiirfilter
-EXTRA_HEADERS      += bseiirfilter.h
-$(srcdir)/bseiirfilter.c: bseiirfilter.h
-plugin_FPU_ltlibs += bseiirfilter.FPU.la
-bseiirfilter_FPU_la_SOURCES = bseiirfilter.c
-bseiirfilter_FPU_la_LDFLAGS = -module $(plugins_ldflags)
-bseiirfilter_FPU_la_LIBADD  = $(plugins_libs)
-bseiirfilter_FPU_la_CFLAGS    = $(FPU_PLUGIN_CFLAGS)
-plugin_SSE_ltlibs   += bseiirfilter.SSE.la
-bseiirfilter_SSE_la_SOURCES   = $(bseiirfilter_FPU_la_SOURCES)
-bseiirfilter_SSE_la_LDFLAGS   = $(bseiirfilter_FPU_la_LDFLAGS)
-bseiirfilter_SSE_la_LIBADD    = $(bseiirfilter_FPU_la_LIBADD)
-bseiirfilter_SSE_la_CFLAGS    = $(SSE_PLUGIN_CFLAGS)
-
-
 ## C Plugin davxtalstrings
 EXTRA_HEADERS      += davxtalstrings.h
 $(srcdir)/davxtalstrings.c: davxtalstrings.h
diff --git a/plugins/bseiirfilter.c b/plugins/bseiirfilter.cc
similarity index 83%
rename from plugins/bseiirfilter.c
rename to plugins/bseiirfilter.cc
index a17ed74..38114f5 100644
--- a/plugins/bseiirfilter.c
+++ b/plugins/bseiirfilter.cc
@@ -15,9 +15,9 @@
  * with this library; if not, see http://www.gnu.org/copyleft/.
  */
 #include "bseiirfilter.h"
-
 #include <bse/bseengine.h>
 #include <bse/gslfilter.h>
+#include <bse/bsecxxplugin.hh>
 
 #include <string.h>
 
@@ -40,7 +40,7 @@ enum
 
 /* --- prototypes --- */
 static void	   bse_iir_filter_init			(BseIIRFilter		*iir_filter);
-static void	   bse_iir_filter_class_init		(BseIIRFilterClass	*class);
+static void	   bse_iir_filter_class_init		(BseIIRFilterClass	*klass);
 static void	   bse_iir_filter_set_property		(GObject		*object,
 							 guint			 param_id,
 							 const GValue		*value,
@@ -57,41 +57,10 @@ static void	   bse_iir_filter_update_modules	(BseIIRFilter		*filt);
 
 
 /* --- Export to BSE --- */
-#define BSE_TYPE_IIR_FILTER_ALGORITHM   (BSE_EXPORT_TYPE_ID (BseIIRFilterAlgorithm))
-static GEnumValue bse_iir_filter_algorithm_values[] = {
-  { BSE_IIR_FILTER_BUTTERWORTH, "BSE_IIR_FILTER_BUTTERWORTH", "butterworth" },
-  { BSE_IIR_FILTER_CHEBYCHEFF1, "BSE_IIR_FILTER_CHEBYCHEFF1", "chebycheff1" },
-  { BSE_IIR_FILTER_CHEBYCHEFF2, "BSE_IIR_FILTER_CHEBYCHEFF2", "chebycheff2" },
-  { 0, NULL, NULL }
-};
-static GEnumValue* return_bse_iir_filter_algorithm_values (void) { return bse_iir_filter_algorithm_values; }
-static BseExportNodeEnum __enode_BseIIRFilterAlgorithm = {
-  { NULL,
-    BSE_EXPORT_NODE_ENUM, "BseIIRFilterAlgorithm", },
-  return_bse_iir_filter_algorithm_values,
-};
-#define BSE_TYPE_IIR_FILTER_TYPE        (BSE_EXPORT_TYPE_ID (BseIIRFilterType))
-static GEnumValue bse_iir_filter_type_values[] = {
-  { BSE_IIR_FILTER_LOW_PASS, "BSE_IIR_FILTER_LOW_PASS", "low-pass" },
-  { BSE_IIR_FILTER_HIGH_PASS, "BSE_IIR_FILTER_HIGH_PASS", "high-pass" },
-  { BSE_IIR_FILTER_BAND_PASS, "BSE_IIR_FILTER_BAND_PASS", "band-pass" },
-  { BSE_IIR_FILTER_BAND_STOP, "BSE_IIR_FILTER_BAND_STOP", "band-stop" },
-  { 0, NULL, NULL }
-};
-static GEnumValue* return_bse_iir_filter_type_values (void) { return bse_iir_filter_type_values; }
-static BseExportNodeEnum __enode_BseIIRFilterType = {
-  { (BseExportNode*) &__enode_BseIIRFilterAlgorithm,
-    BSE_EXPORT_NODE_ENUM, "BseIIRFilterType", },
-  return_bse_iir_filter_type_values,
-};
 #include "./icons/filter.c"
-BSE_REGISTER_OBJECT_P ((BseExportNode*) &__enode_BseIIRFilterType,
-                       BseIIRFilter, BseSource, "/Modules/Filters/IIR Filter", "",
+BSE_RESIDENT_TYPE_DEF (BseIIRFilter, bse_iir_filter, N_("Filters/IIR Filter"),
                        "BseIIRFilter is an infinite impulse response filter of variable order",
-                       filter_icon,
-                       bse_iir_filter_class_init, NULL, bse_iir_filter_init);
-BSE_DEFINE_EXPORTS ();
-
+                       filter_icon);
 
 /* --- variables --- */
 static gpointer	       parent_class = NULL;
@@ -99,14 +68,14 @@ static gpointer	       parent_class = NULL;
 
 /* --- functions --- */
 static void
-bse_iir_filter_class_init (BseIIRFilterClass *class)
+bse_iir_filter_class_init (BseIIRFilterClass *klass)
 {
-  GObjectClass *gobject_class = G_OBJECT_CLASS (class);
-  BseObjectClass *object_class = BSE_OBJECT_CLASS (class);
-  BseSourceClass *source_class = BSE_SOURCE_CLASS (class);
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  BseObjectClass *object_class = BSE_OBJECT_CLASS (klass);
+  BseSourceClass *source_class = BSE_SOURCE_CLASS (klass);
   guint ochannel_id, ichannel_id;
   
-  parent_class = g_type_class_peek_parent (class);
+  parent_class = g_type_class_peek_parent (klass);
   
   gobject_class->set_property = bse_iir_filter_set_property;
   gobject_class->get_property = bse_iir_filter_get_property;
@@ -174,7 +143,6 @@ bse_iir_filter_init (BseIIRFilter *filt)
   filt->epsilon = 0.1;
   filt->cut_off_freq1 = BSE_KAMMER_FREQUENCY / 2;
   filt->cut_off_freq2 = filt->cut_off_freq1 + FREQ_DELTA;
-  filt->filter_type = BSE_IIR_FILTER_BUTTERWORTH;
   bse_iir_filter_update_modules (filt);
 }
 
@@ -189,12 +157,12 @@ bse_iir_filter_set_property (GObject	  *object,
   switch (param_id)
     {
     case PARAM_FILTER_ALGO:
-      self->filter_algo = g_value_get_enum (value);
+      self->filter_algo = (BseIIRFilterAlgorithm) g_value_get_enum (value);
       self->algo_type_change = TRUE;
       bse_iir_filter_update_modules (self);
       break;
     case PARAM_FILTER_TYPE:
-      self->filter_type = g_value_get_enum (value);
+      self->filter_type = (BseIIRFilterType) g_value_get_enum (value);
       self->algo_type_change = TRUE;
       bse_iir_filter_update_modules (self);
       break;
@@ -211,11 +179,11 @@ bse_iir_filter_set_property (GObject	  *object,
       if (self->cut_off_freq1 + FREQ_DELTA > self->cut_off_freq2)
 	{
 	  self->cut_off_freq2 = self->cut_off_freq1 + FREQ_DELTA;
-	  g_object_notify (self, "cut_off_freq_2");
-	  g_object_notify (self, "cut_off_note_2");
+	  g_object_notify ((GObject*) self, "cut_off_freq_2");
+	  g_object_notify ((GObject*) self, "cut_off_note_2");
 	}
       bse_iir_filter_update_modules (self);
-      g_object_notify (self, "cut_off_note");
+      g_object_notify ((GObject*) self, "cut_off_note");
       break;
     case PARAM_CUT_OFF_NOTE1:
       self->cut_off_freq1 = bse_note_to_freq (bse_item_current_musical_tuning (BSE_ITEM (self)), sfi_value_get_note (value));
@@ -223,22 +191,22 @@ bse_iir_filter_set_property (GObject	  *object,
       if (self->cut_off_freq1 + FREQ_DELTA > self->cut_off_freq2)
 	{
 	  self->cut_off_freq2 = self->cut_off_freq1 + FREQ_DELTA;
-	  g_object_notify (self, "cut_off_freq_2");
-	  g_object_notify (self, "cut_off_note_2");
+	  g_object_notify ((GObject*) self, "cut_off_freq_2");
+	  g_object_notify ((GObject*) self, "cut_off_note_2");
 	}
       bse_iir_filter_update_modules (self);
-      g_object_notify (self, "cut_off_freq");
+      g_object_notify ((GObject*) self, "cut_off_freq");
       break;
     case PARAM_CUT_OFF_FREQ2:
       self->cut_off_freq2 = sfi_value_get_real (value);
       if (self->cut_off_freq1 + FREQ_DELTA > self->cut_off_freq2)
 	{
 	  self->cut_off_freq1 = self->cut_off_freq2 - FREQ_DELTA;
-	  g_object_notify (self, "cut_off_freq");
-	  g_object_notify (self, "cut_off_note");
+	  g_object_notify ((GObject*) self, "cut_off_freq");
+	  g_object_notify ((GObject*) self, "cut_off_note");
 	}
       bse_iir_filter_update_modules (self);
-      g_object_notify (self, "cut_off_note_2");
+      g_object_notify ((GObject*) self, "cut_off_note_2");
       break;
     case PARAM_CUT_OFF_NOTE2:
       self->cut_off_freq2 = bse_note_to_freq (bse_item_current_musical_tuning (BSE_ITEM (self)), sfi_value_get_note (value));
@@ -246,11 +214,11 @@ bse_iir_filter_set_property (GObject	  *object,
       if (self->cut_off_freq1 + FREQ_DELTA > self->cut_off_freq2)
 	{
 	  self->cut_off_freq1 = self->cut_off_freq2 - FREQ_DELTA;
-	  g_object_notify (self, "cut_off_freq");
-	  g_object_notify (self, "cut_off_note");
+	  g_object_notify ((GObject*) self, "cut_off_freq");
+	  g_object_notify ((GObject*) self, "cut_off_note");
 	}
       bse_iir_filter_update_modules (self);
-      g_object_notify (self, "cut_off_freq_2");
+      g_object_notify ((GObject*) self, "cut_off_freq_2");
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (self, param_id, pspec);
@@ -319,9 +287,9 @@ static void
 iir_filter_access (BseModule *module,
 		   gpointer   data)
 {
-  FilterModule *fmod = module->user_data;
-  FilterModule *src = data;
-  
+  FilterModule *fmod = (FilterModule*) module->user_data;
+  FilterModule *src = (FilterModule*) data;
+
   if (src->iir.w)	/* algo_type_change */
     gsl_iir_filter_setup (&fmod->iir, src->iir.order, src->iir.a, src->iir.b, fmod->dummy);
   else
@@ -405,7 +373,7 @@ static void
 iir_filter_process (BseModule *module,
 		    guint      n_values)
 {
-  FilterModule *fmod = module->user_data;
+  FilterModule *fmod = (FilterModule*) module->user_data;
   const gfloat *sig_in = BSE_MODULE_IBUFFER (module, BSE_IIR_FILTER_ICHANNEL_MONO);
   gfloat *sig_out = BSE_MODULE_OBUFFER (module, BSE_IIR_FILTER_OCHANNEL_MONO);
   
@@ -424,7 +392,7 @@ bse_iir_filter_context_create (BseSource *source,
     iir_filter_process,		/* process */
     NULL,                       /* process_defer */
     NULL,                       /* reset */
-    (gpointer) g_free,		/* free */
+    (BseModuleFreeFunc) g_free,	/* free */
     BSE_COST_NORMAL,		/* flags */
   };
   BseIIRFilter *filt = BSE_IIR_FILTER (source);
diff --git a/plugins/bseiirfilter.h b/plugins/bseiirfilter.h
index dfbcdcb..42b83a0 100644
--- a/plugins/bseiirfilter.h
+++ b/plugins/bseiirfilter.h
@@ -17,7 +17,6 @@
 #ifndef __BSE_IIR_FILTER_H__
 #define __BSE_IIR_FILTER_H__
 
-#include <bse/bseplugin.h>
 #include <bse/bsesource.h>
 
 #ifdef __cplusplus
@@ -26,7 +25,7 @@ extern "C" {
 
 
 /* --- type macros --- */
-#define BSE_TYPE_IIR_FILTER              (BSE_EXPORT_TYPE_ID (BseIIRFilter))
+#define BSE_TYPE_IIR_FILTER              (bse_iir_filter_get_type())
 #define BSE_IIR_FILTER(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_IIR_FILTER, BseIIRFilter))
 #define BSE_IIR_FILTER_CLASS(class)      (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_IIR_FILTER, BseIIRFilterClass))
 #define BSE_IS_IIR_FILTER(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_IIR_FILTER))
@@ -35,22 +34,6 @@ extern "C" {
 #define	BSE_IIR_FILTER_MAX_ORDER	 (18)
 
 
-/* --- enums --- */
-typedef enum
-{
-  BSE_IIR_FILTER_BUTTERWORTH = 1,
-  BSE_IIR_FILTER_CHEBYCHEFF1,
-  BSE_IIR_FILTER_CHEBYCHEFF2
-} BseIIRFilterAlgorithm;
-typedef enum
-{
-  BSE_IIR_FILTER_LOW_PASS = 1,
-  BSE_IIR_FILTER_HIGH_PASS,
-  BSE_IIR_FILTER_BAND_PASS,
-  BSE_IIR_FILTER_BAND_STOP
-} BseIIRFilterType;
-
-
 /* --- BseIIRFilter source --- */
 typedef struct _BseIIRFilter      BseIIRFilter;
 typedef struct _BseIIRFilterClass BseIIRFilterClass;
diff --git a/po/POTSCAN b/po/POTSCAN
index 67130eb..35d82e2 100644
--- a/po/POTSCAN
+++ b/po/POTSCAN
@@ -121,7 +121,7 @@ plugins/bseatandistort.cc
 plugins/bsebalance.idl
 plugins/bsecontribsampleandhold.idl
 # plugins/bsefirfilter.c
-plugins/bseiirfilter.c
+plugins/bseiirfilter.cc
 plugins/bsemixer.cc
 plugins/bsemult.cc
 plugins/bsenoise.idl



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]