[beast/devel: 16/26] PLUGINS: compile BseIIRFilter as C++ resident type
- From: Tim Janik <timj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [beast/devel: 16/26] PLUGINS: compile BseIIRFilter as C++ resident type
- Date: Tue, 18 Dec 2012 02:45:20 +0000 (UTC)
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]