[beast/devel: 14/26] PLUGINS: compile BseSequencer as C++ resident type



commit b5216c1999adc17c945253705c1604a1146c134a
Author: Tim Janik <timj gnu org>
Date:   Tue Dec 18 02:18:11 2012 +0100

    PLUGINS: compile BseSequencer as C++ resident type

 plugins/Makefile.am                         |    5 +--
 plugins/Makefile.plugins                    |   15 --------
 plugins/{bsesequencer.c => bsesequencer.cc} |   49 ++++++++++++--------------
 plugins/bsesequencer.h                      |    2 +-
 po/POTSCAN                                  |    2 +-
 5 files changed, 27 insertions(+), 46 deletions(-)
---
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 43d8377..8dfe482 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
-cxx_plugin_sources = bseadder.cc bseatandistort.cc bsesimpleadsr.cc bsemixer.cc bsemult.cc
+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_extra   = bsesimpleadsr-aux.cc
 EXTRA_DIST        += $(cxx_plugin_headers) $(cxx_plugin_extra)
 cxxplugins_FPU_la_SOURCES  = $(cxx_plugin_sources)
@@ -57,7 +57,6 @@ UNPORTED = $(strip		\
 )
 cglob_plugins = $(strip		\
 	bseiirfilter.[hc]	\
-	bsesequencer.[hc]	\
 	davxtalstrings.[hc]	\
 	davsyndrum.[hc]		\
 	davcanyondelay.[hc]	\
diff --git a/plugins/Makefile.plugins b/plugins/Makefile.plugins
index 3fc2f09..b100642 100644
--- a/plugins/Makefile.plugins
+++ b/plugins/Makefile.plugins
@@ -128,21 +128,6 @@ bseiirfilter_SSE_la_LIBADD    = $(bseiirfilter_FPU_la_LIBADD)
 bseiirfilter_SSE_la_CFLAGS    = $(SSE_PLUGIN_CFLAGS)
 
 
-## C Plugin bsesequencer
-EXTRA_HEADERS      += bsesequencer.h
-$(srcdir)/bsesequencer.c: bsesequencer.h
-plugin_FPU_ltlibs += bsesequencer.FPU.la
-bsesequencer_FPU_la_SOURCES = bsesequencer.c
-bsesequencer_FPU_la_LDFLAGS = -module $(plugins_ldflags)
-bsesequencer_FPU_la_LIBADD  = $(plugins_libs)
-bsesequencer_FPU_la_CFLAGS    = $(FPU_PLUGIN_CFLAGS)
-plugin_SSE_ltlibs   += bsesequencer.SSE.la
-bsesequencer_SSE_la_SOURCES   = $(bsesequencer_FPU_la_SOURCES)
-bsesequencer_SSE_la_LDFLAGS   = $(bsesequencer_FPU_la_LDFLAGS)
-bsesequencer_SSE_la_LIBADD    = $(bsesequencer_FPU_la_LIBADD)
-bsesequencer_SSE_la_CFLAGS    = $(SSE_PLUGIN_CFLAGS)
-
-
 ## C Plugin davxtalstrings
 EXTRA_HEADERS      += davxtalstrings.h
 $(srcdir)/davxtalstrings.c: davxtalstrings.h
diff --git a/plugins/bsesequencer.c b/plugins/bsesequencer.cc
similarity index 90%
rename from plugins/bsesequencer.c
rename to plugins/bsesequencer.cc
index f977c49..4b1da39 100644
--- a/plugins/bsesequencer.c
+++ b/plugins/bsesequencer.cc
@@ -17,6 +17,7 @@
 #include "bsesequencer.h"
 
 #include <bse/bseengine.h>
+#include <bse/bsecxxplugin.hh>
 
 
 enum {
@@ -30,7 +31,7 @@ enum {
 
 /* --- prototypes --- */
 static void	bse_sequencer_init		(BseSequencer		*sequencer);
-static void	bse_sequencer_class_init	(BseSequencerClass	*class);
+static void	bse_sequencer_class_init	(BseSequencerClass	*klass);
 static void	bse_sequencer_finalize		(GObject		*object);
 static void	bse_sequencer_set_property	(BseSequencer           *sequencer,
 						 guint                   param_id,
@@ -47,15 +48,11 @@ static void	bse_sequencer_context_create	(BseSource		*source,
 static void	bse_sequencer_reset		(BseSource		*source);
 static void	bse_sequencer_update_modules	(BseSequencer		*seq);
 
-
-/* --- Export to BSE --- */
+// == Type Registration ==
 #include "./icons/sequencer.c"
-BSE_REGISTER_OBJECT (BseSequencer, BseSource, "/Modules/Other Sources/Sequencer", "",
-                     "The Sequencer produces a frequency signal according to a sequence of notes",
-                     sequencer_icon,
-                     bse_sequencer_class_init, NULL, bse_sequencer_init);
-BSE_DEFINE_EXPORTS ();
-
+BSE_RESIDENT_TYPE_DEF (BseSequencer, bse_sequencer, N_("Other Sources/Sequencer"),
+                       "The Sequencer produces a frequency signal according to a sequence of notes",
+                       sequencer_icon);
 
 /* --- variables --- */
 static gpointer		 parent_class = NULL;
@@ -63,14 +60,14 @@ static gpointer		 parent_class = NULL;
 
 /* --- functions --- */
 static void
-bse_sequencer_class_init (BseSequencerClass *class)
+bse_sequencer_class_init (BseSequencerClass *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;
   
-  parent_class = g_type_class_peek_parent (class);
+  parent_class = g_type_class_peek_parent (klass);
   
   gobject_class->set_property = (GObjectSetPropertyFunc) bse_sequencer_set_property;
   gobject_class->get_property = (GObjectGetPropertyFunc) bse_sequencer_get_property;
@@ -139,16 +136,16 @@ bse_sequencer_set_property (BseSequencer *seq,
     {
       BseNoteSequence *sdata;
     case PARAM_LENGTH:
-      if (sfi_value_get_int (value) != bse_note_sequence_length (seq->sdata))
+      if (sfi_value_get_int (value) != (int) bse_note_sequence_length (seq->sdata))
 	{
 	  bse_note_sequence_resize (seq->sdata, sfi_value_get_int (value));
 	  bse_sequencer_update_modules (seq);
-	  g_object_notify (seq, "notes");
+	  g_object_notify ((GObject*) seq, "notes");
 	}
       break;
     case PARAM_NOTES:
       bse_note_sequence_free (seq->sdata);
-      sdata = bse_value_get_boxed (value);
+      sdata = (BseNoteSequence*) bse_value_get_boxed (value);
       if (sdata)
 	{
 	  guint i, l, mnote = SFI_MAX_NOTE;
@@ -169,7 +166,7 @@ bse_sequencer_set_property (BseSequencer *seq,
 	  seq->sdata->offset = SFI_NOTE_C (SFI_KAMMER_OCTAVE);
 	}
       bse_sequencer_update_modules (seq);
-      g_object_notify (seq, "length");
+      g_object_notify ((GObject*) seq, "length");
       break;
     case PARAM_COUNTER:
       seq->counter = sfi_value_get_real (value);
@@ -250,9 +247,9 @@ static void
 seq_access (BseModule *module,
 	    gpointer   data)
 {
-  SeqModule *smod = module->user_data;
-  AccessData *d = data;
-  
+  SeqModule *smod = (SeqModule*) module->user_data;
+  AccessData *d = (AccessData*) data;
+
   smod->n_values = d->n_values;
   smod->values = d->new_values;
   smod->counter = d->counter;
@@ -265,8 +262,8 @@ seq_access (BseModule *module,
 static void
 seq_access_free (gpointer data)
 {
-  AccessData *d = data;
-  
+  AccessData *d = (AccessData*) data;
+
   g_free (d->old_values);
   g_free (d);
 }
@@ -298,7 +295,7 @@ static void
 sequencer_process (BseModule *module,
 		   guint      n_values)
 {
-  SeqModule *smod = module->user_data;
+  SeqModule *smod = (SeqModule*) module->user_data;
   gfloat *freq_out = BSE_MODULE_OBUFFER (module, BSE_SEQUENCER_OCHANNEL_FREQ);
   gfloat *nsync_out = BSE_MODULE_OBUFFER (module, BSE_SEQUENCER_OCHANNEL_NOTE_SYNC);
   gfloat *bound = freq_out + n_values;
@@ -347,13 +344,13 @@ bse_sequencer_context_create (BseSource *source,
     sequencer_process,		/* process */
     NULL,                       /* process_defer */
     NULL,                       /* reset */
-    (gpointer) g_free,		/* free */
+    (BseModuleFreeFunc) g_free,	/* free */
     BSE_COST_CHEAP,		/* flags */
   };
   BseSequencer *seq = BSE_SEQUENCER (source);
   SeqModule *smod = g_new0 (SeqModule, 1);
   BseModule *module;
-  
+
   smod->n_values = seq->n_freq_values;
   smod->values = seq->freq_values;
   smod->counter = seq->counter / 1000.0 * bse_engine_sample_freq ();
diff --git a/plugins/bsesequencer.h b/plugins/bsesequencer.h
index 43131cf..fff112e 100644
--- a/plugins/bsesequencer.h
+++ b/plugins/bsesequencer.h
@@ -26,7 +26,7 @@ extern "C" {
 
 
 /* --- object type macros --- */
-#define BSE_TYPE_SEQUENCER              (BSE_EXPORT_TYPE_ID (BseSequencer))
+#define BSE_TYPE_SEQUENCER              (bse_sequencer_get_type())
 #define BSE_SEQUENCER(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_SEQUENCER, BseSequencer))
 #define BSE_SEQUENCER_CLASS(class)      (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_SEQUENCER, BseSequencerClass))
 #define BSE_IS_SEQUENCER(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_SEQUENCER))
diff --git a/po/POTSCAN b/po/POTSCAN
index cd8ab18..67130eb 100644
--- a/po/POTSCAN
+++ b/po/POTSCAN
@@ -126,7 +126,7 @@ plugins/bsemixer.cc
 plugins/bsemult.cc
 plugins/bsenoise.idl
 plugins/bsequantizer.idl
-plugins/bsesequencer.c
+plugins/bsesequencer.cc
 plugins/bsesimpleadsr.cc
 plugins/bsesummation.idl
 plugins/davbassfilter.idl



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