[beast/devel: 13/15] BSE: compile all procedure files as C++



commit 9ac1db2eda805d68049dac4949c6e10d8ad8e78f
Author: Tim Janik <timj gnu org>
Date:   Mon Dec 17 03:56:49 2012 +0100

    BSE: compile all procedure files as C++

 bse/Makefile.am            |    6 +-
 bse/bsebus.proc            |   18 ++++----
 bse/bsecategories.proc     |   17 ++++---
 bse/bsecontainer.proc      |   15 +++---
 bse/bsedatapocket.proc     |   80 ++++++++++++++++----------------
 bse/bseeditablesample.proc |   16 +++---
 bse/bseenums.proc          |    4 +-
 bse/bseitem.proc           |   47 ++++++++++---------
 bse/bsejanitor.proc        |   51 +++++++++-----------
 bse/bsemidinotifier.proc   |    2 +-
 bse/bseparasite.proc       |   11 ++--
 bse/bsepart.proc           |   89 ++++++++++++++++++------------------
 bse/bseprocedure.proc      |   29 ++++++------
 bse/bseproject.proc        |  109 ++++++++++++++++++++++----------------------
 bse/bsescripthelper.proc   |    6 +-
 bse/bseserver.proc         |   56 +++++++++++-----------
 bse/bsesnet.proc           |   18 ++++----
 bse/bsesong.proc           |   80 ++++++++++++++++----------------
 bse/bsesource.proc         |   83 +++++++++++++++++----------------
 bse/bsetrack.proc          |   25 +++++-----
 bse/bsewave.proc           |   42 ++++++++--------
 bse/bsewaveosc.proc        |   11 ++--
 bse/bsewaverepo.proc       |   13 +++--
 bse/mkcproc.pl             |    3 +-
 24 files changed, 416 insertions(+), 415 deletions(-)
---
diff --git a/bse/Makefile.am b/bse/Makefile.am
index 6e4aa5a..2499040 100644
--- a/bse/Makefile.am
+++ b/bse/Makefile.am
@@ -8,7 +8,7 @@ SUBDIRS = icons zintern . tests
 
 # need -I$(top_srcdir) for <bse/bsedefs.h>
 # need -I$(top_builddir) for <sfi/sficonfig.h>
-# need -I$(srcdir) for "bseserver.h" in .genprc.c
+# need -I$(srcdir) for "bseserver.h" in .genprc.cc
 # need -I. (builddir) for "bsecore.genidl.hh" in bsecore.cc
 INCLUDES += -I$(top_srcdir) -I$(top_builddir) -I$(srcdir) -I. $(BSE_CFLAGS) -DG_DISABLE_DEPRECATED -DG_DISABLE_CONST_RETURNS
 DEFS     += $(strip \
@@ -118,7 +118,7 @@ bse_proc_sources = $(strip \
 	bseserver.proc		bsesong.proc		bsebus.proc		bsesource.proc		bsecsynth.proc	bsesnet.proc		\
 	bsetrack.proc		bseitem.proc		bsewave.proc		bsewaveosc.proc		bsewaverepo.proc			\
 )
-bse_proc_gen_sources = $(bse_proc_sources:.proc=.genprc.c)
+bse_proc_gen_sources = $(bse_proc_sources:.proc=.genprc.cc)
 # non-compile and non-install sources required
 EXTRA_DIST += $(strip \
 	bsecore.idl	bse.idl					\
@@ -163,7 +163,7 @@ SFIDL_INC = --nostdinc -I$(top_srcdir) -I$(top_builddir)
 #
 # rules to generate built sources
 #
-%.genprc.c: @PERLRULE@ %.proc mkcproc.pl
+%.genprc.cc: @PERLRULE@ %.proc mkcproc.pl
 	$(srcdir)/mkcproc.pl --funcname $@ --preprocess $< >$@
 if WITH_PERLRULE
 CLEANFILES += $(bse_proc_gen_sources)
diff --git a/bse/bsebus.proc b/bse/bsebus.proc
index c6d7465..ef398a0 100644
--- a/bse/bsebus.proc
+++ b/bse/bsebus.proc
@@ -38,8 +38,8 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseBus *self = bse_value_get_object (in_values++);
-  BseTrack   *track = bse_value_get_object (in_values++);
+  BseBus *self = (BseBus*) bse_value_get_object (in_values++);
+  BseTrack *track = (BseTrack*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
 
   /* check parameters */
@@ -74,8 +74,8 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseBus *self = bse_value_get_object (in_values++);
-  BseTrack   *track = bse_value_get_object (in_values++);
+  BseBus *self = (BseBus*) bse_value_get_object (in_values++);
+  BseTrack *track = (BseTrack*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
 
   /* check parameters */
@@ -110,8 +110,8 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseBus *self = bse_value_get_object (in_values++);
-  BseBus *bus = bse_value_get_object (in_values++);
+  BseBus *self = (BseBus*) bse_value_get_object (in_values++);
+  BseBus *bus = (BseBus*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
 
   /* check parameters */
@@ -146,8 +146,8 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseBus *self = bse_value_get_object (in_values++);
-  BseBus     *bus = bse_value_get_object (in_values++);
+  BseBus *self = (BseBus*) bse_value_get_object (in_values++);
+  BseBus *bus = (BseBus*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
 
   /* check parameters */
@@ -181,7 +181,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseBus *self = bse_value_get_object (in_values++);
+  BseBus *self = (BseBus*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
 
   /* check parameters */
diff --git a/bse/bsecategories.proc b/bse/bsecategories.proc
index 2bf4958..e150e12 100644
--- a/bse/bsecategories.proc
+++ b/bse/bsecategories.proc
@@ -17,6 +17,7 @@
 #include <bse/bsecategories.h>
 #include <bse/bseprocedure.h>
 #include <bse/bseplugin.h>
+#include "bsecxxplugin.hh"
 
 
 AUTHORS	= "Tim Janik <timj gtk org>";
@@ -36,9 +37,9 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  gchar *pattern   = sfi_value_get_string (in_values++);
-  gchar *type_name = sfi_value_get_string (in_values++);
-  GType  type      = type_name ? g_type_from_name (type_name) : 0;
+  const char *pattern   = sfi_value_get_string (in_values++);
+  const char *type_name = sfi_value_get_string (in_values++);
+  GType  type     = type_name ? g_type_from_name (type_name) : 0;
   BseCategorySeq *cseq = NULL;
   
   /* check parameters */
@@ -67,7 +68,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  gchar *pattern   = sfi_value_get_string (in_values++);
+  const char *pattern   = sfi_value_get_string (in_values++);
   BseCategorySeq *cseq = NULL;
   
   /* check parameters */
@@ -110,12 +111,12 @@ static gboolean
 categories_check_method (BseCategory *cat,
                          gpointer     data)
 {
-  GType *type_p = data;
+  GType *type_p = (GType*) data;
   GType ptype = g_type_from_name (cat->type);
   gboolean match = FALSE;
   if (BSE_TYPE_IS_PROCEDURE (ptype))
     {
-      BseProcedureClass *proc = g_type_class_ref (ptype);
+      BseProcedureClass *proc = (BseProcedureClass*) g_type_class_ref (ptype);
       if (proc->n_in_pspecs >= 1 &&
           g_type_is_a (G_PARAM_SPEC_VALUE_TYPE (proc->in_pspecs[0]), *type_p))
         match = TRUE;
@@ -137,8 +138,8 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  gchar *pattern   = sfi_value_get_string (in_values++);
-  gchar *type_name = sfi_value_get_string (in_values++);
+  const char *pattern   = sfi_value_get_string (in_values++);
+  const char *type_name = sfi_value_get_string (in_values++);
   GType  type      = type_name ? g_type_from_name (type_name) : 0;
   BseCategorySeq *cseq = NULL;
   
diff --git a/bse/bsecontainer.proc b/bse/bsecontainer.proc
index 756a57f..e57384a 100644
--- a/bse/bsecontainer.proc
+++ b/bse/bsecontainer.proc
@@ -17,6 +17,7 @@
 #include <bse/bseplugin.h>
 #include <bse/bseprocedure.h>
 #include <bse/bsecontainer.h>
+#include "bsecxxplugin.hh"
 
 
 AUTHORS	= "Tim Janik <timj gtk org>";
@@ -32,8 +33,8 @@ METHOD (BseContainer, list-children) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseContainer *container = bse_value_get_object (in_values++);
-  
+  BseContainer *container = (BseContainer*) bse_value_get_object (in_values++);
+
   /* check parameters */
   if (!BSE_IS_CONTAINER (container))
     return BSE_ERROR_PROC_PARAM_INVAL;
@@ -55,9 +56,9 @@ METHOD (BseContainer, lookup-item) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseContainer *container = bse_value_get_object (in_values++);
-  gchar *uname            = sfi_value_get_string (in_values++);
-  
+  BseContainer *container = (BseContainer*) bse_value_get_object (in_values++);
+  const char *uname       = sfi_value_get_string (in_values++);
+
   /* check parameters */
   if (!BSE_IS_CONTAINER (container) || !uname)
     return BSE_ERROR_PROC_PARAM_INVAL;
@@ -81,8 +82,8 @@ METHOD (BseContainer, get-item) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseContainer *container = bse_value_get_object (in_values++);
-  const gchar *type_name  = sfi_value_get_string (in_values++);
+  BseContainer *container = (BseContainer*) bse_value_get_object (in_values++);
+  const char *type_name   = sfi_value_get_string (in_values++);
   guint seqid             = sfi_value_get_int (in_values++);
   GType type = type_name ? g_type_from_name (type_name) : 0;
 
diff --git a/bse/bsedatapocket.proc b/bse/bsedatapocket.proc
index 45603b7..7385edd 100644
--- a/bse/bsedatapocket.proc
+++ b/bse/bsedatapocket.proc
@@ -35,9 +35,9 @@ METHOD (BseDataPocket, create-entry) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
-  guint id;
-  
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
+  uint id;
+
   /* check parameters */
   if (!BSE_IS_DATA_POCKET (pocket))
     return BSE_ERROR_PROC_PARAM_INVAL;
@@ -65,10 +65,10 @@ METHOD (BseDataPocket, delete-entry) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
-  guint id              = sfi_value_get_int (in_values++);
-  gboolean fail = TRUE;
-  
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
+  uint id = sfi_value_get_int (in_values++);
+  bool fail = TRUE;
+
   /* check parameters */
   if (!BSE_IS_DATA_POCKET (pocket))
     return BSE_ERROR_PROC_PARAM_INVAL;
@@ -94,8 +94,8 @@ METHOD (BseDataPocket, get-n-entries) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
-  
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
+
   /* check parameters */
   if (!BSE_IS_DATA_POCKET (pocket))
     return BSE_ERROR_PROC_PARAM_INVAL;
@@ -119,9 +119,9 @@ METHOD (BseDataPocket, get-nth-entry-id) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
-  guint index           = sfi_value_get_int (in_values++);
-  
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
+  uint index = sfi_value_get_int (in_values++);
+
   /* check parameters */
   if (!BSE_IS_DATA_POCKET (pocket))
     return BSE_ERROR_PROC_PARAM_INVAL;
@@ -152,12 +152,12 @@ METHOD (BseDataPocket, set-float) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
   guint id              = sfi_value_get_int (in_values++);
-  gchar *name           = sfi_value_get_string (in_values++);
+  const char *name      = sfi_value_get_string (in_values++);
   gfloat v_float        = sfi_value_get_real (in_values++);
   BseDataPocketValue value;
-  gboolean success = FALSE;
+  bool success = FALSE;
   
   /* check parameters */
   if (!BSE_IS_DATA_POCKET (pocket))
@@ -194,12 +194,12 @@ METHOD (BseDataPocket, set-int) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
   guint id              = sfi_value_get_int (in_values++);
-  gchar *name           = sfi_value_get_string (in_values++);
+  const char *name      = sfi_value_get_string (in_values++);
   guint v_uint          = sfi_value_get_int (in_values++);
   BseDataPocketValue value;
-  gboolean success = FALSE;
+  bool success = FALSE;
   
   /* check parameters */
   if (!BSE_IS_DATA_POCKET (pocket))
@@ -236,12 +236,12 @@ METHOD (BseDataPocket, set-object) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
   guint id              = sfi_value_get_int (in_values++);
-  gchar *name           = sfi_value_get_string (in_values++);
-  BseItem *v_object     = bse_value_get_object (in_values++);
+  const char *name      = sfi_value_get_string (in_values++);
+  BseItem *v_object     = (BseItem*) bse_value_get_object (in_values++);
   BseDataPocketValue value;
-  gboolean success = FALSE;
+  bool success = FALSE;
   
   /* check parameters */
   if (!BSE_IS_DATA_POCKET (pocket) ||
@@ -277,25 +277,23 @@ METHOD (BseDataPocket, set-string) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
   guint id              = sfi_value_get_int (in_values++);
-  gchar *name           = sfi_value_get_string (in_values++);
-  gchar *v_string       = sfi_value_get_string (in_values++);
-  BseDataPocketValue value;
-  gboolean success = FALSE;
-  
+  const char *name      = sfi_value_get_string (in_values++);
+  const char *v_string  = sfi_value_get_string (in_values++);
+  bool success = FALSE;
   /* check parameters */
   if (!BSE_IS_DATA_POCKET (pocket))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
   /* action */
-  value.v_string = v_string;
   if (id)
-    success = _bse_data_pocket_entry_set (pocket, id, g_quark_from_string (name), BSE_DATA_POCKET_STRING, value);
-  
+    {
+      BseDataPocketValue value;
+      value.v_string = (char*) v_string;
+      success = _bse_data_pocket_entry_set (pocket, id, g_quark_from_string (name), BSE_DATA_POCKET_STRING, value);
+    }
   /* set output parameters */
   g_value_set_enum (out_values++, success ? BSE_ERROR_NONE : BSE_ERROR_NO_ENTRY);
-  
   return BSE_ERROR_NONE;
 }
 
@@ -314,9 +312,9 @@ METHOD (BseDataPocket, get-float) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
   guint id              = sfi_value_get_int (in_values++);
-  gchar *name           = sfi_value_get_string (in_values++);
+  const char *name      = sfi_value_get_string (in_values++);
   BseDataPocketValue value = { 0, };
   gchar type;
   
@@ -348,9 +346,9 @@ METHOD (BseDataPocket, get-int) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
   guint id              = sfi_value_get_int (in_values++);
-  gchar *name           = sfi_value_get_string (in_values++);
+  const char *name      = sfi_value_get_string (in_values++);
   BseDataPocketValue value = { 0, };
   gchar type;
   
@@ -382,9 +380,9 @@ METHOD (BseDataPocket, get-object) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
   guint id              = sfi_value_get_int (in_values++);
-  gchar *name           = sfi_value_get_string (in_values++);
+  const char *name      = sfi_value_get_string (in_values++);
   BseDataPocketValue value = { 0, };
   gchar type;
   
@@ -416,9 +414,9 @@ METHOD (BseDataPocket, get-string) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseDataPocket *pocket = bse_value_get_object (in_values++);
+  BseDataPocket *pocket = (BseDataPocket*) bse_value_get_object (in_values++);
   guint id              = sfi_value_get_int (in_values++);
-  gchar *name           = sfi_value_get_string (in_values++);
+  const char *name      = sfi_value_get_string (in_values++);
   BseDataPocketValue value = { 0, };
   gchar type;
   
diff --git a/bse/bseeditablesample.proc b/bse/bseeditablesample.proc
index d78532a..1704c6f 100644
--- a/bse/bseeditablesample.proc
+++ b/bse/bseeditablesample.proc
@@ -36,7 +36,7 @@ METHOD (BseEditableSample, open) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseEditableSample *esample = bse_value_get_object (in_values++);
+  BseEditableSample *esample = (BseEditableSample*) bse_value_get_object (in_values++);
   BseErrorType error;
   
   /* check parameters */
@@ -73,7 +73,7 @@ METHOD (BseEditableSample, close) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseEditableSample *esample = bse_value_get_object (in_values++);
+  BseEditableSample *esample = (BseEditableSample*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_EDITABLE_SAMPLE (esample) || !esample->wchunk || !esample->open_count)
@@ -98,7 +98,7 @@ METHOD (BseEditableSample, get-length) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseEditableSample *esample = bse_value_get_object (in_values++);
+  BseEditableSample *esample = (BseEditableSample*) bse_value_get_object (in_values++);
   GslDataCache *dcache = NULL;
   
   /* check parameters */
@@ -124,7 +124,7 @@ METHOD (BseEditableSample, get-n-channels) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseEditableSample *esample = bse_value_get_object (in_values++);
+  BseEditableSample *esample = (BseEditableSample*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_EDITABLE_SAMPLE (esample))
@@ -147,7 +147,7 @@ METHOD (BseEditableSample, get-osc-freq) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseEditableSample *esample = bse_value_get_object (in_values++);
+  BseEditableSample *esample = (BseEditableSample*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_EDITABLE_SAMPLE (esample))
@@ -171,7 +171,7 @@ METHOD (BseEditableSample, read-samples) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseEditableSample *esample = bse_value_get_object (in_values++);
+  BseEditableSample *esample = (BseEditableSample*) bse_value_get_object (in_values++);
   guint              voffset = sfi_value_get_int (in_values++);
   GslDataCache *dcache = NULL;
   SfiFBlock *fblock;
@@ -186,7 +186,7 @@ METHOD (BseEditableSample, read-samples) {
     fblock = sfi_fblock_new_sized (1024);
   else
     {
-      GslDataCacheNode *dnode = gsl_data_cache_ref_node (dcache, voffset, TRUE);
+      GslDataCacheNode *dnode = (GslDataCacheNode*) gsl_data_cache_ref_node (dcache, voffset, GSL_DATA_CACHE_DEMAND_LOAD);
       guint i, l, dnode_length = dcache->node_size;
       
       l = dnode_length - (voffset - dnode->offset) + dcache->padding;
@@ -223,7 +223,7 @@ METHOD (BseEditableSample, collect-stats) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseEditableSample *esample    = bse_value_get_object (in_values++);
+  BseEditableSample *esample    = (BseEditableSample*) bse_value_get_object (in_values++);
   guint              voffset    = sfi_value_get_int (in_values++);
   double             offs_scale = g_value_get_double (in_values++);
   guint              block_size = sfi_value_get_int (in_values++);
diff --git a/bse/bseenums.proc b/bse/bseenums.proc
index 64c8f2c..5e382d6 100644
--- a/bse/bseenums.proc
+++ b/bse/bseenums.proc
@@ -35,7 +35,7 @@ PROCEDURE (bse-error-name, "Error Name") {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseErrorType error = g_value_get_enum (in_values++);
+  BseErrorType error = (BseErrorType) g_value_get_enum (in_values++);
   
   /* check parameters */
   
@@ -59,7 +59,7 @@ PROCEDURE (bse-error-blurb, "Error Blurb") {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseErrorType error = g_value_get_enum (in_values++);
+  BseErrorType error = (BseErrorType) g_value_get_enum (in_values++);
   
   /* check parameters */
   
diff --git a/bse/bseitem.proc b/bse/bseitem.proc
index 7c14449..052e952 100644
--- a/bse/bseitem.proc
+++ b/bse/bseitem.proc
@@ -20,6 +20,7 @@
 #include <bse/bsecontainer.h>
 #include <bse/bseundostack.h>
 #include <bse/bseparasite.h>	// FIXME
+#include "bsecxxplugin.hh"
 
 
 AUTHORS	= "Tim Janik <timj gtk org>";
@@ -202,7 +203,7 @@ METHOD (BseItem, get-uname-path) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *item = bse_value_get_object (in_values++);
+  BseItem *item = (BseItem*) bse_value_get_object (in_values++);
   BseProject *project;
   
   /* check parameters */
@@ -302,7 +303,7 @@ METHOD (BseItem, set-name) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *item     = bse_value_get_object (in_values++);
+  BseItem *item = (BseItem*) bse_value_get_object (in_values++);
   const gchar *name = g_value_get_string (in_values++);
 
   /* check parameters */
@@ -381,8 +382,8 @@ METHOD (BseItem, common-ancestor) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *item  = bse_value_get_object (in_values++);
-  BseItem *item2 = bse_value_get_object (in_values++);
+  BseItem *item = (BseItem*) bse_value_get_object (in_values++);
+  BseItem *item2 = (BseItem*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_ITEM (item) || !BSE_IS_ITEM (item2))
@@ -432,8 +433,8 @@ METHOD (BseItem, check-is-a) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *item    = bse_value_get_object (in_values++);
-  gchar *type_name = sfi_value_get_string (in_values++);
+  BseItem *item = (BseItem*) bse_value_get_object (in_values++);
+  const char *type_name = sfi_value_get_string (in_values++);
   GType type;
   gboolean is_a;
   
@@ -463,9 +464,9 @@ METHOD (BseItem, get-property-candidates) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
-  gchar   *property = sfi_value_get_string (in_values++);
-  
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
+  const char   *property = sfi_value_get_string (in_values++);
+
   /* check parameters */
   if (!BSE_IS_ITEM (self) || !property)
     return BSE_ERROR_PROC_PARAM_INVAL;
@@ -494,9 +495,9 @@ METHOD (BseItem, editable-property) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
-  gchar   *property = sfi_value_get_string (in_values++);
-  
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
+  const char   *property = sfi_value_get_string (in_values++);
+
   /* check parameters */
   if (!BSE_IS_ITEM (self) || !property)
     return BSE_ERROR_PROC_PARAM_INVAL;
@@ -518,7 +519,7 @@ METHOD (BseItem, get-icon) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_ITEM (self))
@@ -541,8 +542,8 @@ METHOD (BseItem, group-undo) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
-  gchar *name       = sfi_value_get_string (in_values++);
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
+  const char *name       = sfi_value_get_string (in_values++);
   BseUndoStack *ustack;
 
   /* check parameters */
@@ -565,7 +566,7 @@ METHOD (BseItem, ungroup-undo) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
   BseUndoStack *ustack;
 
   /* check parameters */
@@ -588,7 +589,7 @@ METHOD (BseItem, undo) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
   BseProject *project;
 
   /* check parameters */
@@ -611,7 +612,7 @@ METHOD (BseItem, redo) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
   BseProject *project;
 
   /* check parameters */
@@ -634,7 +635,7 @@ METHOD (BseItem, clear-undo) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
   BseProject *project;
 
   /* check parameters */
@@ -659,7 +660,7 @@ METHOD (BseItem, undo-depth) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
   gint depth = 0;
   BseProject *project;
 
@@ -688,7 +689,7 @@ METHOD (BseItem, redo-depth) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
   gint depth = 0;
   BseProject *project;
 
@@ -716,7 +717,7 @@ METHOD (BseItem, fixme-set-parasite) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
   const gchar *name = sfi_value_get_string (in_values++);
   SfiFBlock *fblock = sfi_value_get_fblock (in_values++);
   
@@ -740,7 +741,7 @@ METHOD (BseItem, fixme-get-parasite) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *self     = bse_value_get_object (in_values++);
+  BseItem *self = (BseItem*) bse_value_get_object (in_values++);
   const gchar *name = sfi_value_get_string (in_values++);
   
   /* check parameters */
diff --git a/bse/bsejanitor.proc b/bse/bsejanitor.proc
index a33cd65..69c90cb 100644
--- a/bse/bsejanitor.proc
+++ b/bse/bsejanitor.proc
@@ -37,7 +37,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseJanitor  *self   = bse_value_get_object (in_values++);
+  BseJanitor  *self = (BseJanitor*) bse_value_get_object (in_values++);
   const gchar *action = sfi_value_get_string (in_values++);
   
   /* check parameters */
@@ -62,7 +62,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseJanitor *self = bse_value_get_object (in_values++);
+  BseJanitor *self = (BseJanitor*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_JANITOR (self))
@@ -86,7 +86,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseJanitor *self = bse_value_get_object (in_values++);
+  BseJanitor *self = (BseJanitor*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_JANITOR (self))
@@ -110,7 +110,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseJanitor *self = bse_value_get_object (in_values++);
+  BseJanitor *self = (BseJanitor*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_JANITOR (self))
@@ -136,19 +136,17 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseJanitor       *self = bse_value_get_object (in_values++);
+  BseJanitor *self = (BseJanitor*) bse_value_get_object (in_values++);
   guint             nth  = sfi_value_get_int (in_values++);
-  BseJanitorAction *a;
-  
+
   /* check parameters */
   if (!BSE_IS_JANITOR (self))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
-  a = g_slist_nth_data (self->actions, nth);
-  
+
+  BseJanitorAction *a = (BseJanitorAction*) g_slist_nth_data (self->actions, nth);
   /* set output parameters */
   sfi_value_set_string (out_values++, a ? g_quark_to_string (a->action) : NULL);
-  
+
   return BSE_ERROR_NONE;
 }
 
@@ -166,19 +164,18 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseJanitor       *self = bse_value_get_object (in_values++);
+  BseJanitor *self = (BseJanitor*) bse_value_get_object (in_values++);
   guint             nth  = sfi_value_get_int (in_values++);
-  BseJanitorAction *a;
-  
+
   /* check parameters */
   if (!BSE_IS_JANITOR (self))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
-  a = g_slist_nth_data (self->actions, nth);
-  
+
+  BseJanitorAction *a = (BseJanitorAction*) g_slist_nth_data (self->actions, nth);
+
   /* set output parameters */
   sfi_value_set_string (out_values++, a ? a->name : NULL);
-  
+
   return BSE_ERROR_NONE;
 }
 
@@ -196,19 +193,17 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseJanitor       *self = bse_value_get_object (in_values++);
+  BseJanitor *self = (BseJanitor*) bse_value_get_object (in_values++);
   guint             nth  = sfi_value_get_int (in_values++);
-  BseJanitorAction *a;
-  
+
   /* check parameters */
   if (!BSE_IS_JANITOR (self))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
-  a = g_slist_nth_data (self->actions, nth);
-  
+
+  BseJanitorAction *a = (BseJanitorAction*) g_slist_nth_data (self->actions, nth);
+
   /* set output parameters */
   sfi_value_set_string (out_values++, a ? a->blurb : NULL);
-  
   return BSE_ERROR_NONE;
 }
 
@@ -222,7 +217,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseJanitor *self = bse_value_get_object (in_values++);
+  BseJanitor *self = (BseJanitor*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_JANITOR (self))
@@ -393,7 +388,7 @@ PROCEDURE (bse-script-send-message, "Script/Message") {
   const gchar *text2  = sfi_value_get_string (in_values++);
   const gchar *text3  = sfi_value_get_string (in_values++);
   const gchar *check  = sfi_value_get_string (in_values++);
-  SfiMsgType    type  = mtype ? sfi_msg_lookup_type (mtype) : 0;
+  SfiMsgType type  = mtype ? sfi_msg_lookup_type (mtype) : SfiMsgType (0);
 
   /* check parameters */
   if (!mtype || !(text1 || text2))
@@ -404,7 +399,7 @@ PROCEDURE (bse-script-send-message, "Script/Message") {
     return BSE_ERROR_PROC_EXECUTION;
 
   /* action */
-  bse_server_message (bse_server_get (), domain, type, text0, text1, text2, text3, check, janitor, NULL, janitor->port->remote_pid);
+  bse_server_message (bse_server_get (), domain, BseMsgType (type), text0, text1, text2, text3, check, janitor, NULL, janitor->port->remote_pid);
 
   return BSE_ERROR_NONE;
 }
diff --git a/bse/bsemidinotifier.proc b/bse/bsemidinotifier.proc
index 29faf9f..59a482f 100644
--- a/bse/bsemidinotifier.proc
+++ b/bse/bsemidinotifier.proc
@@ -35,7 +35,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseMidiNotifier *self = bse_value_get_object (in_values++);
+  BseMidiNotifier *self = (BseMidiNotifier*) bse_value_get_object (in_values++);
   struct timeval tv;
   guint64 stamp;
   
diff --git a/bse/bseparasite.proc b/bse/bseparasite.proc
index c0443a4..112f7b3 100644
--- a/bse/bseparasite.proc
+++ b/bse/bseparasite.proc
@@ -17,6 +17,7 @@
 #include <bse/bseparasite.h>
 #include <bse/bseprocedure.h>
 #include <bse/bseexports.h>
+#include "bsecxxplugin.hh"
 
 AUTHORS	= "Tim Janik <timj gtk org>";
 LICENSE = "GNU Lesser General Public License";
@@ -30,7 +31,7 @@ METHOD (BseItem, list-parasites) {
 	const GValue      *in_values,
 	GValue            *out_values)
 {
-  BseItem     *item = g_value_get_object (in_values++);
+  BseItem *item = (BseItem*) g_value_get_object (in_values++);
   const gchar *path = g_value_get_string (in_values++);
   SfiRing *ring;
   BseStringSeq *sseq;
@@ -39,7 +40,7 @@ METHOD (BseItem, list-parasites) {
   sseq = bse_string_seq_new ();
   ring = bse_item_list_parasites (item, path);
   while (ring)
-    bse_string_seq_append (sseq, sfi_ring_pop_head (&ring));
+    bse_string_seq_append (sseq, (const char*) sfi_ring_pop_head (&ring));
   bse_value_take_boxed (out_values++, sseq);
   return BSE_ERROR_NONE;
 }
@@ -54,7 +55,7 @@ METHOD (BseItem, get-parasite) {
 	const GValue      *in_values,
 	GValue            *out_values)
 {
-  BseItem     *item = g_value_get_object (in_values++);
+  BseItem *item = (BseItem*) g_value_get_object (in_values++);
   const gchar *path = g_value_get_string (in_values++);
   if (!BSE_IS_ITEM (item))
     return BSE_ERROR_PROC_PARAM_INVAL;
@@ -72,7 +73,7 @@ METHOD (BseItem, set-parasite) {
 	const GValue      *in_values,
 	GValue            *out_values)
 {
-  BseItem     *item = g_value_get_object (in_values++);
+  BseItem *item = (BseItem*) g_value_get_object (in_values++);
   const gchar *path = g_value_get_string (in_values++);
   SfiRec      *rec  = sfi_value_get_rec (in_values++);
   if (!BSE_IS_ITEM (item))
@@ -91,7 +92,7 @@ METHOD (BseItem, add-parasite) {
 	const GValue      *in_values,
 	GValue            *out_values)
 {
-  BseItem     *item = g_value_get_object (in_values++);
+  BseItem *item = (BseItem*) g_value_get_object (in_values++);
   const gchar *path = g_value_get_string (in_values++);
   SfiRec      *rec  = sfi_value_get_rec (in_values++);
   if (!BSE_IS_ITEM (item))
diff --git a/bse/bsepart.proc b/bse/bsepart.proc
index ea5da87..b1d7249 100644
--- a/bse/bsepart.proc
+++ b/bse/bsepart.proc
@@ -14,10 +14,11 @@
  * A copy of the GNU Lesser General Public License should ship along
  * with this library; if not, see http://www.gnu.org/copyleft/.
  */
-#include        <bse/bseplugin.h>
-#include        <bse/bseprocedure.h>
-#include        <bse/bsepart.h>
-#include        <bse/bsesong.h>
+#include <bse/bseplugin.h>
+#include <bse/bseprocedure.h>
+#include <bse/bsepart.h>
+#include <bse/bsesong.h>
+#include "bsecxxplugin.hh"
 
 
 AUTHORS	= "Tim Janik <timj gtk org>";
@@ -46,7 +47,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self      = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    tick	     = sfi_value_get_int (in_values++);
   guint    duration  = sfi_value_get_int (in_values++);
   gint     note	     = sfi_value_get_note (in_values++);
@@ -96,7 +97,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self      = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    channel   = sfi_value_get_int (in_values++);
   guint    tick	     = sfi_value_get_int (in_values++);
   guint    duration  = sfi_value_get_int (in_values++);
@@ -143,7 +144,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self      = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    tick	     = sfi_value_get_int (in_values++);
   guint    ctype     = g_value_get_enum (in_values++);
   gfloat   value     = sfi_value_get_real (in_values++);
@@ -156,7 +157,7 @@ BODY (BseProcedureClass *proc,
   
   /* action */
   ustack = bse_item_undo_open (self, "insert-event");
-  id = bse_part_insert_control (self, tick, ctype, value);
+  id = bse_part_insert_control (self, tick, BseMidiSignalType (ctype), value);
   if (id)
     bse_item_push_undo_proc (self, "delete-event", id);
   bse_item_undo_close (ustack);
@@ -192,7 +193,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self      = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    id	     = sfi_value_get_int (in_values++);
   guint    tick	     = sfi_value_get_int (in_values++);
   guint    duration  = sfi_value_get_int (in_values++);
@@ -253,7 +254,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self  = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    id    = sfi_value_get_int (in_values++);
   guint    tick  = sfi_value_get_int (in_values++);
   guint    ctype = g_value_get_enum (in_values++);
@@ -272,7 +273,7 @@ BODY (BseProcedureClass *proc,
       BseUndoStack *ustack = bse_item_undo_open (self, "change-control");
       if (equery.tick != tick || equery.control_type != ctype || equery.control_value != value)
         {
-          success = bse_part_change_control (self, id, tick, ctype, value);
+          success = bse_part_change_control (self, id, tick, BseMidiSignalType (ctype), value);
           if (success)
             bse_item_push_undo_proc (self, "change-control", id, equery.tick, equery.control_type, equery.control_value);
         }
@@ -284,7 +285,7 @@ BODY (BseProcedureClass *proc,
     {
       BseUndoStack *ustack = bse_item_undo_open (self, "change-control");
       BsePartQueryEvent xquery;
-      success = bse_part_change_control (self, id, tick, ctype, value);
+      success = bse_part_change_control (self, id, tick, BseMidiSignalType (ctype), value);
       if (success && bse_part_query_event (self, id, &xquery) == BSE_PART_EVENT_NOTE &&
           (equery.fine_tune_value != xquery.fine_tune_value ||
            equery.velocity_value  != xquery.velocity_value))
@@ -322,7 +323,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    id	    = sfi_value_get_int (in_values++);
   BsePartQueryEvent equery;
   gboolean deleted = FALSE;
@@ -371,7 +372,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    id	    = sfi_value_get_int (in_values++);
   gboolean selected = FALSE;
   BsePartQueryEvent equery;
@@ -406,7 +407,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    tick	    = sfi_value_get_int (in_values++);
   guint    duration = sfi_value_get_int (in_values++);
   
@@ -438,7 +439,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    channel  = sfi_value_get_int (in_values++);
   guint    tick	    = sfi_value_get_int (in_values++);
   guint    duration = sfi_value_get_int (in_values++);
@@ -472,7 +473,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self      = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    tick	     = sfi_value_get_int (in_values++);
   guint    duration  = sfi_value_get_int (in_values++);
   guint    ctype     = g_value_get_enum (in_values++);
@@ -482,7 +483,7 @@ BODY (BseProcedureClass *proc,
     return BSE_ERROR_PROC_PARAM_INVAL;
   
   /* action */
-  bse_value_take_boxed (out_values++, bse_part_list_controls (self, ~0, tick, duration, ctype));
+  bse_value_take_boxed (out_values++, bse_part_list_controls (self, ~0, tick, duration, BseMidiSignalType (ctype)));
   
   return BSE_ERROR_NONE;
 }
@@ -505,7 +506,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    tick	    = sfi_value_get_int (in_values++);
   guint    duration = sfi_value_get_int (in_values++);
   gint     min_note = sfi_value_get_note (in_values++);
@@ -535,7 +536,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    tick	    = sfi_value_get_int (in_values++);
   guint    duration = sfi_value_get_int (in_values++);
   
@@ -561,7 +562,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PART (self))
@@ -588,7 +589,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    ctype    = g_value_get_enum (in_values++);
   
   /* check parameters */
@@ -596,7 +597,7 @@ BODY (BseProcedureClass *proc,
     return BSE_ERROR_PROC_PARAM_INVAL;
   
   /* action */
-  bse_value_take_boxed (out_values++, bse_part_list_selected_controls (self, ctype));
+  bse_value_take_boxed (out_values++, bse_part_list_selected_controls (self, BseMidiSignalType (ctype)));
   
   return BSE_ERROR_NONE;
 }
@@ -618,7 +619,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    tick	    = sfi_value_get_int (in_values++);
   guint    duration = sfi_value_get_int (in_values++);
   gint     note     = sfi_value_get_note (in_values++);
@@ -649,7 +650,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    tick	    = sfi_value_get_int (in_values++);
   gint     note     = sfi_value_get_note (in_values++);
   
@@ -680,7 +681,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    tick	    = sfi_value_get_int (in_values++);
   guint    ctype    = g_value_get_enum (in_values++);
   
@@ -689,7 +690,7 @@ BODY (BseProcedureClass *proc,
     return BSE_ERROR_PROC_PARAM_INVAL;
   
   /* action */
-  bse_value_take_boxed (out_values++, bse_part_list_controls (self, ~0, tick, 1, ctype));
+  bse_value_take_boxed (out_values++, bse_part_list_controls (self, ~0, tick, 1, BseMidiSignalType (ctype)));
   
   return BSE_ERROR_NONE;
 }
@@ -715,7 +716,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    channel  = sfi_value_get_int (in_values++);
   guint    tick	    = sfi_value_get_int (in_values++);
   guint    duration = sfi_value_get_int (in_values++);
@@ -726,7 +727,7 @@ BODY (BseProcedureClass *proc,
     return BSE_ERROR_PROC_PARAM_INVAL;
   
   /* action */
-  bse_value_take_boxed (out_values++, bse_part_list_controls (self, channel, tick, duration, ctype));
+  bse_value_take_boxed (out_values++, bse_part_list_controls (self, channel, tick, duration, BseMidiSignalType (ctype)));
   
   return BSE_ERROR_NONE;
 }
@@ -743,7 +744,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PART (self))
@@ -767,7 +768,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PART (self))
@@ -797,7 +798,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self   = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint tick      = sfi_value_get_int (in_values++);
   guint duration  = sfi_value_get_int (in_values++);
   gint  min_note  = sfi_value_get_note (in_values++);
@@ -829,7 +830,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self   = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint tick      = sfi_value_get_int (in_values++);
   guint duration  = sfi_value_get_int (in_values++);
   guint ctype     = g_value_get_enum (in_values++);
@@ -838,7 +839,7 @@ BODY (BseProcedureClass *proc,
   if (!BSE_IS_PART (self))
     return BSE_ERROR_PROC_PARAM_INVAL;
   
-  bse_part_select_controls_exclusive (self, tick, duration, ctype);
+  bse_part_select_controls_exclusive (self, tick, duration, BseMidiSignalType (ctype));
   
   return BSE_ERROR_NONE;
 }
@@ -860,7 +861,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self   = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint tick      = sfi_value_get_int (in_values++);
   guint duration  = sfi_value_get_int (in_values++);
   guint ctype     = g_value_get_enum (in_values++);
@@ -869,7 +870,7 @@ BODY (BseProcedureClass *proc,
   if (!BSE_IS_PART (self))
     return BSE_ERROR_PROC_PARAM_INVAL;
   
-  bse_part_select_controls (self, tick, duration, ctype, TRUE);
+  bse_part_select_controls (self, tick, duration, BseMidiSignalType (ctype), TRUE);
   
   return BSE_ERROR_NONE;
 }
@@ -892,7 +893,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self   = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint tick      = sfi_value_get_int (in_values++);
   guint duration  = sfi_value_get_int (in_values++);
   gint  min_note  = sfi_value_get_note (in_values++);
@@ -925,7 +926,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self   = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint tick      = sfi_value_get_int (in_values++);
   guint duration  = sfi_value_get_int (in_values++);
   gint  min_note  = sfi_value_get_note (in_values++);
@@ -957,7 +958,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self   = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint tick      = sfi_value_get_int (in_values++);
   guint duration  = sfi_value_get_int (in_values++);
   guint ctype     = g_value_get_enum (in_values++);
@@ -966,7 +967,7 @@ BODY (BseProcedureClass *proc,
   if (!BSE_IS_PART (self))
     return BSE_ERROR_PROC_PARAM_INVAL;
   
-  bse_part_select_controls (self, tick, duration, ctype, FALSE);
+  bse_part_select_controls (self, tick, duration, BseMidiSignalType (ctype), FALSE);
   
   return BSE_ERROR_NONE;
 }
@@ -983,7 +984,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    id	    = sfi_value_get_int (in_values++);
   BsePartQueryEvent equery;
   
@@ -1014,7 +1015,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self     = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   guint    id	    = sfi_value_get_int (in_values++);
   BsePartQueryEvent equery;
   
@@ -1043,7 +1044,7 @@ METHOD (BsePart, get-timing) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
   SfiInt   tick = sfi_value_get_int (in_values++);
   BseItem *parent;
   BseSongTiming timing = { 0, };
@@ -1076,7 +1077,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BsePart *self = bse_value_get_object (in_values++);
+  BsePart *self = (BsePart*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_PART (self))
diff --git a/bse/bseprocedure.proc b/bse/bseprocedure.proc
index a9bcbbd..7e786b1 100644
--- a/bse/bseprocedure.proc
+++ b/bse/bseprocedure.proc
@@ -20,6 +20,7 @@
 #include "bseserver.h"
 #include "bsemath.h"    /* bse_temp_freq */
 #include "bsemain.h"
+#include "bsecxxplugin.hh"
 #include <string.h>     /* strchr */
 #include <stdlib.h>     /* strtol */
 
@@ -41,7 +42,7 @@ PROCEDURE (bse-note-to-freq, "Note to Freq") {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseMusicalTuningType musical_tuning = g_value_get_enum (in_values++);
+  BseMusicalTuningType musical_tuning = (BseMusicalTuningType) g_value_get_enum (in_values++);
   int                  note           = sfi_value_get_int (in_values++);
   int                  fine_tune      = sfi_value_get_int (in_values++);
   BseNoteDescription *info;
@@ -74,7 +75,7 @@ PROCEDURE (bse-note-from-freq, "Note from Freq") {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseMusicalTuningType musical_tuning = g_value_get_enum (in_values++);
+  BseMusicalTuningType musical_tuning = (BseMusicalTuningType) g_value_get_enum (in_values++);
   float                frequency      = sfi_value_get_real (in_values++);
   
   /* set out params */
@@ -97,7 +98,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseMusicalTuningType musical_tuning = g_value_get_enum (in_values++);
+  BseMusicalTuningType musical_tuning = (BseMusicalTuningType) g_value_get_enum (in_values++);
   int                  note	      = sfi_value_get_int (in_values++);
   int                  fine_tune      = sfi_value_get_int (in_values++);
   
@@ -123,7 +124,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseMusicalTuningType musical_tuning = g_value_get_enum (in_values++);
+  BseMusicalTuningType musical_tuning = (BseMusicalTuningType) g_value_get_enum (in_values++);
   float                freq	      = sfi_value_get_real (in_values++);
   gint note;
   
@@ -148,8 +149,8 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseMusicalTuningType musical_tuning = g_value_get_enum (in_values++);
-  char                *name           = sfi_value_get_string (in_values++);
+  BseMusicalTuningType musical_tuning = (BseMusicalTuningType) g_value_get_enum (in_values++);
+  const char *name = sfi_value_get_string (in_values++);
   gint note;
   
   /* describe note */
@@ -176,7 +177,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseMusicalTuningType musical_tuning = g_value_get_enum (in_values++);
+  BseMusicalTuningType musical_tuning = (BseMusicalTuningType) g_value_get_enum (in_values++);
   guint                semitone	      = sfi_value_get_int (in_values++);
   int                  octave	      = sfi_value_get_int (in_values++);
   int                  fine_tune      = sfi_value_get_int (in_values++);
@@ -198,7 +199,7 @@ PROCEDURE (bse-type-options, "Type Options") {
         GValue            *out_values)
 {
   /* extract parameter values */
-  gchar *stype = sfi_value_get_string (in_values++);
+  const char *stype = sfi_value_get_string (in_values++);
   GType type;
 
   /* check parameters */
@@ -222,7 +223,7 @@ PROCEDURE (bse-type-blurb, "Type Blurb") {
         GValue            *out_values)
 {
   /* extract parameter values */
-  gchar *stype = sfi_value_get_string (in_values++);
+  const char *stype = sfi_value_get_string (in_values++);
   GType type;
 
   /* check parameters */
@@ -246,7 +247,7 @@ PROCEDURE (bse-type-authors, "Type Authors") {
         GValue            *out_values)
 {
   /* extract parameter values */
-  gchar *stype = sfi_value_get_string (in_values++);
+  const char *stype = sfi_value_get_string (in_values++);
   GType type;
 
   /* check parameters */
@@ -270,7 +271,7 @@ PROCEDURE (bse-type-license, "Type License") {
         GValue            *out_values)
 {
   /* extract parameter values */
-  gchar *stype = sfi_value_get_string (in_values++);
+  const char *stype = sfi_value_get_string (in_values++);
   GType type;
 
   /* check parameters */
@@ -289,7 +290,7 @@ static gdouble
 str2num (const gchar *str,
          guint        nth)
 {
-  gchar *num_any = ".0123456789", *num_first = num_any + 1;
+  const char *num_any = ".0123456789", *num_first = num_any + 1;
   while (nth--)
     {
       /* skip number */
@@ -320,8 +321,8 @@ PROCEDURE (bse-string-extract-number, "String Extract Number") {
         GValue            *out_values)
 {
   /* extract parameter values */
-  gchar *string   = sfi_value_get_string (in_values++);
-  gchar *format   = sfi_value_get_string (in_values++);
+  const char *string   = sfi_value_get_string (in_values++);
+  const char *format   = sfi_value_get_string (in_values++);
   SfiReal aux_base = sfi_value_get_real (in_values++);
   SfiReal dflt     = sfi_value_get_real (in_values++);
   SfiReal number = dflt;
diff --git a/bse/bseproject.proc b/bse/bseproject.proc
index 52b7848..18c0028 100644
--- a/bse/bseproject.proc
+++ b/bse/bseproject.proc
@@ -28,6 +28,7 @@
 #include <bse/bsemidireceiver.h>
 #include <bse/bsemidinotifier.h>
 #include <bse/bseengine.h>
+#include "bsecxxplugin.hh"
 
 
 AUTHORS = "Tim Janik <timj gtk org>";
@@ -45,8 +46,8 @@ METHOD (BseProject, is-playing) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
-  
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
+
   /* check parameters */
   if (!BSE_IS_PROJECT (project))
     return BSE_ERROR_PROC_PARAM_INVAL;
@@ -70,7 +71,7 @@ METHOD (BseProject, is-active) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PROJECT (project))
@@ -93,7 +94,7 @@ METHOD (BseProject, get-midi-notifier) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *self = bse_value_get_object (in_values++);
+  BseProject *self = (BseProject*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_PROJECT (self))
@@ -120,8 +121,8 @@ METHOD (BseProject, import-midi-file, "File/Import MIDI") {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
-  gchar *file_name = sfi_value_get_string (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
+  const char *file_name = sfi_value_get_string (in_values++);
   BseMidiFile *smf;
   BseErrorType error;
   
@@ -168,8 +169,8 @@ METHOD (BseProject, restore-from-file, "File/Restore") {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
-  gchar *file_name = sfi_value_get_string (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
+  const char *file_name = sfi_value_get_string (in_values++);
   BseErrorType error;
   
   /* check parameters */
@@ -179,7 +180,7 @@ METHOD (BseProject, restore-from-file, "File/Restore") {
   /* action */
   if (!project->in_undo && !project->in_redo)
     {
-      BseStorage *storage = g_object_new (BSE_TYPE_STORAGE, NULL);
+      BseStorage *storage = (BseStorage*) g_object_new (BSE_TYPE_STORAGE, NULL);
       error = bse_storage_input_file (storage, file_name);
       if (!error)
         error = bse_project_restore (project, storage);
@@ -217,9 +218,9 @@ METHOD (BseProject, store-bse, "File/Store") {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
-  BseSuper *super = bse_value_get_object (in_values++);
-  gchar *file_name = sfi_value_get_string (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
+  BseSuper *super = (BseSuper*) bse_value_get_object (in_values++);
+  const char *file_name = sfi_value_get_string (in_values++);
   gboolean self_contained = sfi_value_get_bool (in_values++);
   BseErrorType error;
   
@@ -250,8 +251,8 @@ METHOD (BseProject, create-song) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseContainer *container = bse_value_get_object (in_values++);
-  const gchar *name       = sfi_value_get_string (in_values++);
+  BseContainer *container = (BseContainer*) bse_value_get_object (in_values++);
+  const char *name = sfi_value_get_string (in_values++);
   BseUndoStack *ustack;
   BseItem *child;
 
@@ -261,7 +262,7 @@ METHOD (BseProject, create-song) {
 
   /* action */
   ustack = bse_item_undo_open (container, "create-song");
-  child = bse_container_new_child (container, BSE_TYPE_SONG, NULL);
+  child = (BseItem*) bse_container_new_child (container, BSE_TYPE_SONG, NULL);
   if (name)
     bse_item_set (child, "uname", name, NULL);
   bse_item_push_undo_proc (container, "remove-snet", child);
@@ -284,7 +285,7 @@ METHOD (BseProject, get-wave-repo) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   BseWaveRepo *wrepo = NULL;
   
   /* check parameters */
@@ -313,8 +314,8 @@ METHOD (BseProject, get-data-pocket) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
-  gchar *name = sfi_value_get_string (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
+  const char *name = sfi_value_get_string (in_values++);
   BseItem *item;
   
   /* check parameters */
@@ -324,9 +325,7 @@ METHOD (BseProject, get-data-pocket) {
   /* action */
   item = bse_project_lookup_typed_item (project, BSE_TYPE_DATA_POCKET, name);
   if (!item)
-    item = bse_container_new_child (BSE_CONTAINER (project), BSE_TYPE_DATA_POCKET,
-                                    "uname", name,
-                                    NULL);
+    item = (BseItem*) bse_container_new_child (BSE_CONTAINER (project), BSE_TYPE_DATA_POCKET, "uname", name, NULL);
   
   /* set output parameters */
   bse_value_set_object (out_values++, item);
@@ -347,8 +346,8 @@ METHOD (BseProject, create-csynth) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseContainer *container = bse_value_get_object (in_values++);
-  const gchar *name       = sfi_value_get_string (in_values++);
+  BseContainer *container = (BseContainer*) bse_value_get_object (in_values++);
+  const char *name = sfi_value_get_string (in_values++);
   BseUndoStack *ustack;
   BseItem *child;
   
@@ -358,7 +357,7 @@ METHOD (BseProject, create-csynth) {
   
   /* action */
   ustack = bse_item_undo_open (container, "create-csynth");
-  child = bse_container_new_child (container, BSE_TYPE_CSYNTH, NULL);
+  child = (BseItem*) bse_container_new_child (container, BSE_TYPE_CSYNTH, NULL);
   if (name)
     bse_item_set (child, "uname", name, NULL);
   bse_item_push_undo_proc (container, "remove-snet", child);
@@ -383,8 +382,8 @@ METHOD (BseProject, create-midi-synth) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseContainer *container = bse_value_get_object (in_values++);
-  gchar *name             = sfi_value_get_string (in_values++);
+  BseContainer *container = (BseContainer*) bse_value_get_object (in_values++);
+  const char *name = sfi_value_get_string (in_values++);
   BseUndoStack *ustack;
   BseItem *child;
 
@@ -394,7 +393,7 @@ METHOD (BseProject, create-midi-synth) {
   
   /* action */
   ustack = bse_item_undo_open (container, "create-midi-synth");
-  child = bse_container_new_child (container, BSE_TYPE_MIDI_SYNTH, NULL);
+  child = (BseItem*) bse_container_new_child (container, BSE_TYPE_MIDI_SYNTH, NULL);
   if (name)
     bse_item_set (child, "uname", name, NULL);
   bse_item_push_undo_proc (container, "remove-snet", child);
@@ -417,8 +416,8 @@ METHOD (BseProject, remove-snet) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseContainer *self  = bse_value_get_object (in_values++);
-  BseItem      *child = bse_value_get_object (in_values++);
+  BseContainer *self = (BseContainer*) bse_value_get_object (in_values++);
+  BseItem *child = (BseItem*) bse_value_get_object (in_values++);
   BseUndoStack *ustack;
   
   /* check parameters */
@@ -455,7 +454,7 @@ METHOD (BseProject, list-uname-paths) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   const gchar *tname  = sfi_value_get_string (in_values++);
   GType type          = tname ? g_type_from_name (tname) : 0;
   
@@ -482,7 +481,7 @@ METHOD (BseProject, find-item) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   const gchar *string = sfi_value_get_string (in_values++);
   
   /* check parameters */
@@ -509,7 +508,7 @@ METHOD (BseProject, match-items-by-uname) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   const gchar *tname  = sfi_value_get_string (in_values++);
   const gchar *string = sfi_value_get_string (in_values++);
   GType type          = tname ? g_type_from_name (tname) : 0;
@@ -524,9 +523,9 @@ METHOD (BseProject, match-items-by-uname) {
   iseq = bse_item_seq_new ();
   free_list = bse_objects_list_by_uname (type, string);
   for (list = free_list; list; list = list->next)
-    if (bse_item_get_project (list->data) == project)
+    if (bse_item_get_project ((BseItem*) list->data) == project)
       {
-        bse_item_seq_append (iseq, list->data);
+        bse_item_seq_append (iseq, (BseItem*) list->data);
         break;
       }
   g_list_free (free_list);
@@ -547,7 +546,7 @@ METHOD (BseProject, get-supers) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   BseItemSeq *iseq;
   GSList *slist;
   
@@ -558,7 +557,7 @@ METHOD (BseProject, get-supers) {
   /* action */
   iseq = bse_item_seq_new ();
   for (slist = project->supers; slist; slist = slist->next)
-    bse_item_seq_append (iseq, slist->data);
+    bse_item_seq_append (iseq, (BseItem*) slist->data);
   
   /* set output parameters */
   bse_value_take_boxed (out_values++, iseq);
@@ -577,7 +576,7 @@ METHOD (BseProject, can-play) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   gpointer wrepo;
   
   /* check parameters */
@@ -602,7 +601,7 @@ METHOD (BseProject, get-state) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *self = bse_value_get_object (in_values++);
+  BseProject *self = (BseProject*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PROJECT (self))
@@ -626,7 +625,7 @@ METHOD (BseProject, activate) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *self = bse_value_get_object (in_values++);
+  BseProject *self = (BseProject*) bse_value_get_object (in_values++);
   BseProjectState state_before;
   BseErrorType error;
 
@@ -656,7 +655,7 @@ METHOD (BseProject, start-playback) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *self = bse_value_get_object (in_values++);
+  BseProject *self = (BseProject*) bse_value_get_object (in_values++);
   BseProjectState state_before;
 
   /* check parameters */
@@ -686,7 +685,7 @@ METHOD (BseProject, play) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *self = bse_value_get_object (in_values++);
+  BseProject *self = (BseProject*) bse_value_get_object (in_values++);
   BseErrorType error;
   BseProjectState state_before;
   
@@ -722,7 +721,7 @@ METHOD (BseProject, deactivate) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *self = bse_value_get_object (in_values++);
+  BseProject *self = (BseProject*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_PROJECT (self))
@@ -742,7 +741,7 @@ METHOD (BseProject, stop-playback) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *self = bse_value_get_object (in_values++);
+  BseProject *self = (BseProject*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_PROJECT (self))
@@ -762,7 +761,7 @@ METHOD (BseProject, stop) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *self = bse_value_get_object (in_values++);
+  BseProject *self = (BseProject*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_PROJECT (self))
@@ -784,7 +783,7 @@ METHOD (BseProject, auto-deactivate) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *self  = bse_value_get_object (in_values++);
+  BseProject *self = (BseProject*) bse_value_get_object (in_values++);
   gint64      msecs = sfi_value_get_int (in_values++);
 
   /* check parameters */
@@ -807,7 +806,7 @@ METHOD (BseProject, inject-midi-control) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project   = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   int midi_channel      = g_value_get_int (in_values++);
   int midi_control      = g_value_get_int (in_values++);
   SfiReal control_value = sfi_value_get_real (in_values++);
@@ -844,8 +843,8 @@ METHOD (BseProject, change-name) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
-  gchar *name = sfi_value_get_string (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
+  const char *name = sfi_value_get_string (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PROJECT (project) || !name)
@@ -868,7 +867,7 @@ METHOD (BseProject, undo-depth) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PROJECT (project))
@@ -889,7 +888,7 @@ METHOD (BseProject, undo) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_PROJECT (project))
@@ -923,7 +922,7 @@ METHOD (BseProject, redo-depth) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PROJECT (project))
@@ -944,7 +943,7 @@ METHOD (BseProject, redo) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PROJECT (project))
@@ -976,7 +975,7 @@ METHOD (BseProject, clear-undo) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PROJECT (project))
@@ -997,7 +996,7 @@ METHOD (BseProject, clean-dirty) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PROJECT (project))
@@ -1019,7 +1018,7 @@ METHOD (BseProject, is-dirty) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseProject *project = bse_value_get_object (in_values++);
+  BseProject *project = (BseProject*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_PROJECT (project))
diff --git a/bse/bsescripthelper.proc b/bse/bsescripthelper.proc
index c249264..c97ea3c 100644
--- a/bse/bsescripthelper.proc
+++ b/bse/bsescripthelper.proc
@@ -36,11 +36,11 @@ PROCEDURE (bse-proxy-check, "Proxy Check") {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItem *item    = bse_value_get_object (in_values++);
-  gchar *type_name = sfi_value_get_string (in_values++);
+  BseItem *item = (BseItem*) bse_value_get_object (in_values++);
+  const char *type_name = sfi_value_get_string (in_values++);
   GType type;
   gboolean is_a;
-  
+
   /* check parameters */
   if (!type_name)
     type_name = "";
diff --git a/bse/bseserver.proc b/bse/bseserver.proc
index 996094d..0c56a39 100644
--- a/bse/bseserver.proc
+++ b/bse/bseserver.proc
@@ -47,8 +47,8 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseServer *server     = (BseServer*) bse_value_get_object (in_values++);
-  gchar *name           = sfi_value_get_string (in_values++);
+  BseServer *server = (BseServer*) bse_value_get_object (in_values++);
+  const char *name = sfi_value_get_string (in_values++);
   gchar *uname;
   guint num = 1;
   BseProject *project;
@@ -91,8 +91,8 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseServer *server	= bse_value_get_object (in_values++);
-  gchar *file_name	= sfi_value_get_string (in_values++);
+  BseServer *server = (BseServer*) bse_value_get_object (in_values++);
+  const char *file_name = sfi_value_get_string (in_values++);
   BseWaveFileInfo *finfo;
   
   /* check parameters */
@@ -121,7 +121,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseServer *server	= bse_value_get_object (in_values++);
+  BseServer *server = (BseServer*) bse_value_get_object (in_values++);
   GSList *slist;
   guint n_scripts = 0;
   
@@ -152,7 +152,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseServer *server	= bse_value_get_object (in_values++);
+  BseServer *server = (BseServer*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_SERVER (server))
@@ -186,17 +186,17 @@ script_janitor_closed (BseJanitor *janitor,
 static gboolean
 register_scripts (gpointer data)
 {
-  BseServer *server = data;
-  ScriptRegistration *scr = g_object_get_data (server, "script-registration-queue");
+  BseServer *server = (BseServer*) data;
+  ScriptRegistration *scr = (ScriptRegistration*) g_object_get_data ((GObject*) server, "script-registration-queue");
   BseJanitor *janitor = NULL;
   BseErrorType error;
-  
+
   if (!scr)
     {
       bse_server_registration (server, BSE_REGISTER_DONE, NULL, NULL);
       return FALSE;
     }
-  g_object_set_data (server, "script-registration-queue", scr->next);
+  g_object_set_data ((GObject*) server, "script-registration-queue", scr->next);
   
   error = scr->register_func (scr->script, &janitor);
   if (!janitor)
@@ -219,7 +219,7 @@ BODY (BseProcedureClass *proc,
 {
   static gboolean registration_done = FALSE;
   /* extract parameter values */
-  BseServer *server	       = bse_value_get_object (in_values++);
+  BseServer *server = (BseServer*) bse_value_get_object (in_values++);
   ScriptRegistration *scr_list = NULL;
   SfiRing *ring;
   
@@ -238,13 +238,13 @@ BODY (BseProcedureClass *proc,
   while (ring)
     {
       ScriptRegistration *scr = g_new0 (ScriptRegistration, 1);
-      scr->script = sfi_ring_pop_head (&ring);
+      scr->script = (char*) sfi_ring_pop_head (&ring);
       scr->register_func = bse_script_file_register;
       scr->next = scr_list;
       scr_list = scr;
     }
   
-  g_object_set_data (server, "script-registration-queue", scr_list);
+  g_object_set_data ((GObject*) server, "script-registration-queue", scr_list);
   bse_idle_normal (register_scripts, server);
   
   return BSE_ERROR_NONE;
@@ -253,14 +253,14 @@ BODY (BseProcedureClass *proc,
 static gboolean
 register_core_plugins (gpointer data)
 {
-  BseServer *server = data;
-  SfiRing *plugins = g_object_get_data (server, "plugin-registration-queue");
+  BseServer *server = (BseServer*) data;
+  SfiRing *plugins = (SfiRing*) g_object_get_data ((GObject*) server, "plugin-registration-queue");
   const gchar *error;
   
   if (plugins)
     {
-      gchar *name = sfi_ring_pop_head (&plugins);
-      g_object_set_data (server, "plugin-registration-queue", plugins);
+      char *name = (char*) sfi_ring_pop_head (&plugins);
+      g_object_set_data ((GObject*) server, "plugin-registration-queue", plugins);
       error = bse_plugin_check_load (name);
       bse_server_registration (server, BSE_REGISTER_PLUGIN, name, error);
       g_free (name);
@@ -284,7 +284,7 @@ BODY (BseProcedureClass *proc,
 {
   static gboolean registration_done = FALSE;
   /* extract parameter values */
-  BseServer *server	= bse_value_get_object (in_values++);
+  BseServer *server = (BseServer*) bse_value_get_object (in_values++);
   SfiRing *ring;
   
   /* check parameters */
@@ -299,7 +299,7 @@ BODY (BseProcedureClass *proc,
   registration_done = TRUE;
   
   ring = bse_plugin_path_list_files (!bse_main_args->load_drivers_early, TRUE);
-  g_object_set_data (server, "plugin-registration-queue", ring);
+  g_object_set_data ((GObject*) server, "plugin-registration-queue", ring);
   
   bse_idle_normal (register_core_plugins, server);
   
@@ -309,11 +309,11 @@ BODY (BseProcedureClass *proc,
 static gboolean
 register_ladspa_plugins (gpointer data)
 {
-  BseServer *server = data;
-  SfiRing *lplugins = g_object_get_data (server, "ladspa-registration-queue");
+  BseServer *server = (BseServer*) data;
+  SfiRing *lplugins = (SfiRing*) g_object_get_data ((GObject*) server, "ladspa-registration-queue");
   const gchar *error;
   
-  if (g_object_get_data (server, "plugin-registration-queue"))
+  if (g_object_get_data ((GObject*) server, "plugin-registration-queue"))
     {
       /* give precedence to core plugins until they're done registering */
       return TRUE;
@@ -321,8 +321,8 @@ register_ladspa_plugins (gpointer data)
   
   if (lplugins)
     {
-      gchar *name = sfi_ring_pop_head (&lplugins);
-      g_object_set_data (server, "ladspa-registration-queue", lplugins);
+      char *name = (char*) sfi_ring_pop_head (&lplugins);
+      g_object_set_data ((GObject*) server, "ladspa-registration-queue", lplugins);
       error = bse_ladspa_plugin_check_load (name);
       bse_server_registration (server, BSE_REGISTER_PLUGIN, name, error);
       g_free (name);
@@ -346,7 +346,7 @@ BODY (BseProcedureClass *proc,
 {
   static gboolean registration_done = FALSE;
   /* extract parameter values */
-  BseServer *server	= bse_value_get_object (in_values++);
+  BseServer *server = (BseServer*) bse_value_get_object (in_values++);
   SfiRing *ring;
   
   /* check parameters */
@@ -361,7 +361,7 @@ BODY (BseProcedureClass *proc,
   registration_done = TRUE;
   
   ring = bse_ladspa_plugin_path_list_files ();
-  g_object_set_data (server, "ladspa-registration-queue", ring);
+  g_object_set_data ((GObject*) server, "ladspa-registration-queue", ring);
   
   bse_idle_normal (register_ladspa_plugins, server);
   
@@ -383,7 +383,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseServer *server = bse_value_get_object (in_values++);
+  BseServer *server = (BseServer*) bse_value_get_object (in_values++);
   SfiWStore *wstore;
   gchar *file_name;
   GValue *value;
@@ -435,7 +435,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseServer *server     = bse_value_get_object (in_values++);
+  BseServer *server = (BseServer*) bse_value_get_object (in_values++);
   const char *wave_file = g_value_get_string (in_values++);
   double n_seconds      = g_value_get_double (in_values++);
 
diff --git a/bse/bsesnet.proc b/bse/bsesnet.proc
index 9d362e3..1128185 100644
--- a/bse/bsesnet.proc
+++ b/bse/bsesnet.proc
@@ -35,15 +35,15 @@ METHOD (BseSNet, supports-user-synths) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseSNet *snet = bse_value_get_object (in_values++);
-  
+  BseSNet *snet = (BseSNet*) bse_value_get_object (in_values++);
+
   /* check parameters */
   if (!BSE_IS_SNET (snet))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
+
   /* set output parameters */
   sfi_value_set_bool (out_values++, BSE_SNET_USER_SYNTH (snet));
-  
+
   return BSE_ERROR_NONE;
 }
 
@@ -61,7 +61,7 @@ METHOD (BseSNet, can-create-source) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseSNet *snet = bse_value_get_object (in_values++);
+  BseSNet *snet = (BseSNet*) bse_value_get_object (in_values++);
   const gchar *type_name = sfi_value_get_string (in_values++);
   GType type = g_type_from_name (type_name);
   BseErrorType error = BSE_ERROR_NONE;
@@ -96,7 +96,7 @@ METHOD (BseSNet, create-source) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseContainer *container = bse_value_get_object (in_values++);
+  BseContainer *container = (BseContainer*) bse_value_get_object (in_values++);
   const gchar *type_name  = sfi_value_get_string (in_values++);
   BseItem *child;
   BseUndoStack *ustack;
@@ -111,7 +111,7 @@ METHOD (BseSNet, create-source) {
   
   /* action */
   ustack = bse_item_undo_open (container, "create-source");
-  child = bse_container_new_child (container, g_type_from_name (type_name), NULL);
+  child = (BseItem*) bse_container_new_child (container, g_type_from_name (type_name), NULL);
   bse_item_push_undo_proc (container, "remove-source", child);
   bse_item_undo_close (ustack);
 
@@ -135,8 +135,8 @@ METHOD (BseSNet, remove-source) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseSNet *self      = bse_value_get_object (in_values++);
-  BseItem *child     = bse_value_get_object (in_values++);
+  BseSNet *self = (BseSNet*) bse_value_get_object (in_values++);
+  BseItem *child = (BseItem*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
   BseUndoStack *ustack;
 
diff --git a/bse/bsesong.proc b/bse/bsesong.proc
index 7a08343..32c14cd 100644
--- a/bse/bsesong.proc
+++ b/bse/bsesong.proc
@@ -26,6 +26,7 @@
 #include "bseproject.h"
 #include "gslcommon.h"
 #include "bseengine.h"
+#include "bsecxxplugin.hh"
 #include <string.h>
 
 AUTHORS = "Tim Janik <timj gtk org>";
@@ -42,7 +43,7 @@ METHOD (BseSong, create-bus) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
   BseUndoStack *ustack;
   BseItem *child = NULL;
@@ -57,7 +58,7 @@ METHOD (BseSong, create-bus) {
   else
     {
       ustack = bse_item_undo_open (self, "create-bus");
-      child = bse_container_new_child (BSE_CONTAINER (self), BSE_TYPE_BUS, NULL);
+      child = (BseItem*) bse_container_new_child (BSE_CONTAINER (self), BSE_TYPE_BUS, NULL);
       bse_item_push_undo_proc (self, "remove-bus", child);
       bse_item_undo_close (ustack);
     }
@@ -79,8 +80,8 @@ METHOD (BseSong, remove-bus) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self = bse_value_get_object (in_values++);
-  BseItem *child = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
+  BseItem *child = (BseItem*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
   
   /* check parameters */
@@ -119,7 +120,7 @@ METHOD (BseSong, ensure-master-bus) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
   BseSource *child;
 
   /* check parameters */
@@ -146,7 +147,7 @@ METHOD (BseSong, get-master-bus) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_SONG (self))
@@ -173,18 +174,17 @@ orphans_track_name (void)
 static BseTrack*
 bse_song_ensure_orphans_track_noundo (BseSong *self)
 {
-  SfiRing *ring;
-  for (ring = self->tracks_SL; ring; ring = sfi_ring_walk (ring, self->tracks_SL))
+  for (SfiRing *ring = self->tracks_SL; ring; ring = sfi_ring_walk (ring, self->tracks_SL))
     {
-      BseTrack *track = ring->data;
+      BseTrack *track = (BseTrack*) ring->data;
       gboolean muted = FALSE;
       g_object_get (track, "muted", &muted, NULL);
-      if (muted && g_object_get_data (track, "BseSong-orphan-track") == bse_song_ensure_orphans_track_noundo) /* detect orphan-parts track */
+      if (muted && g_object_get_data ((GObject*) track, "BseSong-orphan-track") == bse_song_ensure_orphans_track_noundo) /* detect orphan-parts track */
         return track;
     }
-  gpointer child = bse_container_new_child_bname (BSE_CONTAINER (self), BSE_TYPE_TRACK, orphans_track_name(), NULL);
+  BseTrack *child = (BseTrack*) bse_container_new_child_bname (BSE_CONTAINER (self), BSE_TYPE_TRACK, orphans_track_name(), NULL);
   g_object_set (child, "muted", TRUE, NULL); /* no undo */
-  g_object_set_data (child, "BseSong-orphan-track", bse_song_ensure_orphans_track_noundo); /* mark orphan-parts track */
+  g_object_set_data ((GObject*) child, "BseSong-orphan-track", (void*) bse_song_ensure_orphans_track_noundo); /* mark orphan-parts track */
   return child;
 }
 
@@ -196,7 +196,7 @@ bse_song_find_first_track (BseSong *self,
   /* action */
   for (ring = self->tracks_SL; ring; ring = sfi_ring_walk (ring, self->tracks_SL))
     {
-      BseTrack *track = ring->data;
+      BseTrack *track = (BseTrack*) ring->data;
       guint start;
       if (bse_track_find_part (track, part, &start))
         return track;
@@ -213,7 +213,7 @@ METHOD (BseSong, ensure-track-links) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_SONG (self))
@@ -223,7 +223,7 @@ METHOD (BseSong, ensure-track-links) {
   gboolean clear_undo = FALSE;
   SfiRing *ring;
   for (ring = self->parts; ring; ring = sfi_ring_walk (ring, self->parts))
-    if (!bse_song_find_first_track (self, ring->data))
+    if (!bse_song_find_first_track (self, (BsePart*) ring->data))
       {
         BseTrack *track = bse_song_ensure_orphans_track_noundo (self);
         bse_item_exec_void (track, "insert-part", bse_track_get_last_tick (track), ring->data);
@@ -250,23 +250,23 @@ METHOD (BseSong, create-part) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
   BseUndoStack *ustack;
   BseItem *child;
 
   /* check parameters */
   if (!BSE_IS_SONG (self))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
+
   /* action */
   ustack = bse_item_undo_open (self, "create-part");
-  child = bse_container_new_child (BSE_CONTAINER (self), BSE_TYPE_PART, NULL);
+  child = (BseItem*) bse_container_new_child (BSE_CONTAINER (self), BSE_TYPE_PART, NULL);
   bse_item_push_undo_proc (self, "remove-part", child);
   bse_item_undo_close (ustack);
-  
+
   /* set output parameters */
   bse_value_set_object (out_values++, child);
-  
+
   return BSE_ERROR_NONE;
 }
 
@@ -281,14 +281,14 @@ METHOD (BseSong, remove-part) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self = bse_value_get_object (in_values++);
-  BseItem *child = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
+  BseItem *child = (BseItem*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
-  
+
   /* check parameters */
   if (!BSE_IS_SONG (self) || !BSE_IS_PART (child) || BSE_ITEM (child)->parent != BSE_ITEM (self))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
+
   /* action */
   if (BSE_SOURCE_PREPARED (self))
     error = BSE_ERROR_SOURCE_BUSY;
@@ -319,28 +319,28 @@ METHOD (BseSong, create-track) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
   BseItem *child = NULL;
 
   /* check parameters */
   if (!BSE_IS_SONG (self))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
+
   /* action */
   if (BSE_SOURCE_PREPARED (self))
     error = BSE_ERROR_SOURCE_BUSY;
   else
     {
       BseUndoStack *ustack = bse_item_undo_open (self, "create-track");
-      child = bse_container_new_child (BSE_CONTAINER (self), BSE_TYPE_TRACK, NULL);
+      child = (BseItem*) bse_container_new_child (BSE_CONTAINER (self), BSE_TYPE_TRACK, NULL);
       bse_item_push_undo_proc (self, "remove-track", child);
       bse_item_undo_close (ustack);
     }
 
   /* set output parameters */
   bse_value_set_object (out_values++, child);
-  
+
   return error;
 }
 
@@ -355,15 +355,15 @@ METHOD (BseSong, remove-track) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self  = bse_value_get_object (in_values++);
-  BseItem *child = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
+  BseItem *child = (BseItem*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
-  
+
   /* check parameters */
   if (!BSE_IS_SONG (self) || !BSE_IS_TRACK (child) ||
       BSE_ITEM (child)->parent != BSE_ITEM (self))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
+
   /* action */
   if (BSE_SOURCE_PREPARED (self))
     error = BSE_ERROR_SOURCE_BUSY;
@@ -396,8 +396,8 @@ METHOD (BseSong, find-track-for-part) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self = bse_value_get_object (in_values++);
-  BsePart *part = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
+  BsePart *part = (BsePart*) bse_value_get_object (in_values++);
   BseTrack *track = NULL;
   guint tick = 0;
   SfiRing *ring;
@@ -410,7 +410,7 @@ METHOD (BseSong, find-track-for-part) {
   /* action */
   for (ring = self->tracks_SL; ring; ring = sfi_ring_walk (ring, self->tracks_SL))
     {
-      BseTrack *test_track = ring->data;
+      BseTrack *test_track = (BseTrack*) ring->data;
       guint start;
       if (bse_track_find_part (test_track, part, &start) &&
 	  (!track || start < tick))
@@ -439,8 +439,8 @@ METHOD (BseSong, find-any-track-for-part) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self = bse_value_get_object (in_values++);
-  BsePart *part = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
+  BsePart *part = (BsePart*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_SONG (self) || !BSE_IS_PART (part) ||
@@ -472,8 +472,8 @@ METHOD (BseSong, synthesize-note) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self      = bse_value_get_object (in_values++);
-  BseTrack *track    = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
+  BseTrack *track    = (BseTrack*) bse_value_get_object (in_values++);
   guint    duration  = sfi_value_get_int (in_values++);
   gint     note      = sfi_value_get_note (in_values++);
   gint     fine_tune = sfi_value_get_int (in_values++);
@@ -512,7 +512,7 @@ METHOD (BseSong, get-timing) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSong *self = bse_value_get_object (in_values++);
+  BseSong *self = (BseSong*) bse_value_get_object (in_values++);
   SfiInt   tick = sfi_value_get_int (in_values++);
   BseSongTiming timing = { 0, };
 
diff --git a/bse/bsesource.proc b/bse/bsesource.proc
index 631c8ba..159971b 100644
--- a/bse/bsesource.proc
+++ b/bse/bsesource.proc
@@ -20,6 +20,7 @@
 #include <bse/bseundostack.h>
 #include <bse/bseieee754.h>
 #include <bse/bsemidievent.h>
+#include "bsecxxplugin.hh"
 
 
 AUTHORS	= "Tim Janik <timj gtk org>";
@@ -44,9 +45,9 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *isource = bse_value_get_object (in_values++);
+  BseSource *isource = (BseSource*) bse_value_get_object (in_values++);
   guint ichannel     = sfi_value_get_int (in_values++);
-  BseSource *osource = bse_value_get_object (in_values++);
+  BseSource *osource = (BseSource*) bse_value_get_object (in_values++);
   guint ochannel     = sfi_value_get_int (in_values++);
   BseErrorType error;
   
@@ -85,10 +86,10 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *isource   = bse_value_get_object (in_values++);
-  gchar *ichannel_ident = sfi_value_get_string (in_values++);
-  BseSource *osource   = bse_value_get_object (in_values++);
-  gchar *ochannel_ident = sfi_value_get_string (in_values++);
+  BseSource *isource = (BseSource*) bse_value_get_object (in_values++);
+  const char *ichannel_ident = sfi_value_get_string (in_values++);
+  BseSource *osource = (BseSource*) bse_value_get_object (in_values++);
+  const char *ochannel_ident = sfi_value_get_string (in_values++);
   guint ichannel, ochannel;
   BseErrorType error;
   
@@ -130,9 +131,9 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *isource = bse_value_get_object (in_values++);
+  BseSource *isource = (BseSource*) bse_value_get_object (in_values++);
   guint ichannel     = sfi_value_get_int (in_values++);
-  BseSource *osource = bse_value_get_object (in_values++);
+  BseSource *osource = (BseSource*) bse_value_get_object (in_values++);
   guint ochannel     = sfi_value_get_int (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
   
@@ -176,10 +177,10 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *isource   = bse_value_get_object (in_values++);
-  gchar *ichannel_ident = sfi_value_get_string (in_values++);
-  BseSource *osource   = bse_value_get_object (in_values++);
-  gchar *ochannel_ident = sfi_value_get_string (in_values++);
+  BseSource *isource = (BseSource*) bse_value_get_object (in_values++);
+  const char *ichannel_ident = sfi_value_get_string (in_values++);
+  BseSource *osource = (BseSource*) bse_value_get_object (in_values++);
+  const char *ochannel_ident = sfi_value_get_string (in_values++);
   guint ichannel, ochannel;
   BseErrorType error = BSE_ERROR_NONE;
   
@@ -217,7 +218,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *isource = bse_value_get_object (in_values++);
+  BseSource *isource = (BseSource*) bse_value_get_object (in_values++);
   BseUndoStack *ustack;
   
   /* check parameters */
@@ -244,7 +245,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *isource = bse_value_get_object (in_values++);
+  BseSource *isource = (BseSource*) bse_value_get_object (in_values++);
   BseUndoStack *ustack;
 
   /* check parameters */
@@ -272,7 +273,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   guint ochannel    = sfi_value_get_int (in_values++);
   
   /* check parameters */
@@ -297,7 +298,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_SOURCE (source))
@@ -321,7 +322,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_SOURCE (source))
@@ -347,7 +348,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   guint ichannel    = sfi_value_get_int (in_values++);
   
   /* check parameters */
@@ -374,7 +375,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   guint ichannel    = sfi_value_get_int (in_values++);
   
   /* check parameters */
@@ -401,7 +402,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   guint ichannel    = sfi_value_get_int (in_values++);
   
   /* check parameters */
@@ -428,7 +429,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   guint ichannel    = sfi_value_get_int (in_values++);
   
   /* check parameters */
@@ -455,8 +456,8 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
-  gchar *ichannel   = sfi_value_get_string (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
+  const char *ichannel   = sfi_value_get_string (in_values++);
   guint id;
   
   /* check parameters */
@@ -485,7 +486,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   guint ichannel    = sfi_value_get_int (in_values++);
   BseSourceInput *input;
   
@@ -519,7 +520,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   guint ichannel    = sfi_value_get_int (in_values++);
   guint joint       = sfi_value_get_int (in_values++);
   BseSourceInput *input;
@@ -556,7 +557,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   guint ichannel    = sfi_value_get_int (in_values++);
   guint joint       = sfi_value_get_int (in_values++);
   BseSourceInput *input;
@@ -589,7 +590,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_SOURCE (source))
@@ -615,7 +616,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   guint ochannel    = sfi_value_get_int (in_values++);
   
   /* check parameters */
@@ -642,7 +643,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   guint ochannel    = sfi_value_get_int (in_values++);
   
   /* check parameters */
@@ -669,7 +670,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   guint ochannel    = sfi_value_get_int (in_values++);
   
   /* check parameters */
@@ -701,7 +702,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
   SfiReal xpos      = sfi_value_get_real (in_values++);
   SfiReal ypos      = sfi_value_get_real (in_values++);
   SfiReal epsilon = 1e-5;
@@ -742,10 +743,10 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source       = bse_value_get_object (in_values++);
-  gchar     *property     = sfi_value_get_string (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
+  const char *property = sfi_value_get_string (in_values++);
   guint      midi_channel = sfi_value_get_int (in_values++);
-  guint      control_type = g_value_get_enum (in_values++);
+  BseMidiSignalType control_type = (BseMidiSignalType) g_value_get_enum (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
 
   /* check parameters */
@@ -754,7 +755,7 @@ BODY (BseProcedureClass *proc,
 
   /* connect */
   guint old_midi_channel = 0;
-  guint old_control_type = 0;
+  BseMidiSignalType old_control_type = BseMidiSignalType (0);
   bse_source_get_automation_property (source, property, &old_midi_channel, &old_control_type);
   if (old_midi_channel != midi_channel || old_control_type != control_type)
     {
@@ -782,8 +783,8 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source       = bse_value_get_object (in_values++);
-  gchar     *property     = sfi_value_get_string (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
+  const char *property = sfi_value_get_string (in_values++);
 
   /* check parameters */
   if (!BSE_IS_SOURCE (source) || !property)
@@ -811,15 +812,15 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source       = bse_value_get_object (in_values++);
-  gchar     *property     = sfi_value_get_string (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
+  const char *property = sfi_value_get_string (in_values++);
 
   /* check parameters */
   if (!BSE_IS_SOURCE (source) || !property)
     return BSE_ERROR_PROC_PARAM_INVAL;
 
   /* connect */
-  guint control_type = 0;
+  BseMidiSignalType control_type = BseMidiSignalType (0);
   bse_source_get_automation_property (source, property, NULL, &control_type);
   /* set output parameters */
   g_value_set_enum (out_values++, control_type);
@@ -837,7 +838,7 @@ METHOD (BseSource, is-prepared) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseSource *source       = bse_value_get_object (in_values++);
+  BseSource *source = (BseSource*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_SOURCE (source))
diff --git a/bse/bsetrack.proc b/bse/bsetrack.proc
index 2eaa3e0..6662a88 100644
--- a/bse/bsetrack.proc
+++ b/bse/bsetrack.proc
@@ -21,6 +21,7 @@
 #include <bse/bsesong.h>
 #include <bse/bsebus.h>
 #include <bse/bseundostack.h>
+#include "bsecxxplugin.hh"
 
 
 AUTHORS	= "Tim Janik <timj gtk org>";
@@ -43,9 +44,9 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseTrack *self = bse_value_get_object (in_values++);
-  guint     tick = sfi_value_get_int (in_values++);
-  BsePart  *part = bse_value_get_object (in_values++);
+  BseTrack *self = (BseTrack*) bse_value_get_object (in_values++);
+  guint tick = sfi_value_get_int (in_values++);
+  BsePart *part = (BsePart*) bse_value_get_object (in_values++);
   guint id;
 
   /* check parameters */
@@ -80,7 +81,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseTrack *self = bse_value_get_object (in_values++);
+  BseTrack *self = (BseTrack*) bse_value_get_object (in_values++);
   guint     tick = sfi_value_get_int (in_values++);
   BseTrackEntry *entry;
 
@@ -111,7 +112,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseTrack *self = bse_value_get_object (in_values++);
+  BseTrack *self = (BseTrack*) bse_value_get_object (in_values++);
   guint     id   = sfi_value_get_int (in_values++);
   BseTrackEntry *entry;
 
@@ -141,7 +142,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseTrack *self = bse_value_get_object (in_values++);
+  BseTrack *self = (BseTrack*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_TRACK (self))
@@ -165,7 +166,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseTrack *self = bse_value_get_object (in_values++);
+  BseTrack *self = (BseTrack*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_TRACK (self))
@@ -200,7 +201,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseTrack *self = bse_value_get_object (in_values++);
+  BseTrack *self = (BseTrack*) bse_value_get_object (in_values++);
   guint     tick = sfi_value_get_int (in_values++);
   BseTrackEntry *entry;
   
@@ -225,7 +226,7 @@ METHOD (BseTrack, get-timing) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseTrack *self = bse_value_get_object (in_values++);
+  BseTrack *self = (BseTrack*) bse_value_get_object (in_values++);
   SfiInt    tick = sfi_value_get_int (in_values++);
   BseItem  *parent;
   BseSongTiming timing = { 0, };
@@ -259,7 +260,7 @@ METHOD (BseTrack, get-output-source) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseTrack *track = bse_value_get_object (in_values++);
+  BseTrack *track = (BseTrack*) bse_value_get_object (in_values++);
   BseSource *child = NULL;
 
   /* check parameters */
@@ -286,7 +287,7 @@ METHOD (BseTrack, get-last-tick) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseTrack *self = bse_value_get_object (in_values++);
+  BseTrack *self = (BseTrack*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_TRACK (self))
@@ -309,7 +310,7 @@ METHOD (BseTrack, ensure-output) {
         GValue            *out_values)
 {
   /* extract parameter values */
-  BseTrack *self = bse_value_get_object (in_values++);
+  BseTrack *self = (BseTrack*) bse_value_get_object (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
 
   /* check parameters */
diff --git a/bse/bsewave.proc b/bse/bsewave.proc
index 831e2b2..5b635ed 100644
--- a/bse/bsewave.proc
+++ b/bse/bsewave.proc
@@ -14,10 +14,10 @@
  * A copy of the GNU Lesser General Public License should ship along
  * with this library; if not, see http://www.gnu.org/copyleft/.
  */
-#include        <bse/bseplugin.h>
-#include        <bse/bseprocedure.h>
-#include        <bse/bsewave.h>
-#include        <bse/bseeditablesample.h>
+#include <bse/bseplugin.h>
+#include <bse/bseprocedure.h>
+#include <bse/bsewave.h>
+#include <bse/bseeditablesample.h>
 
 
 AUTHORS = "Tim Janik <timj gtk org>";
@@ -41,9 +41,9 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseWave *wave           = (BseWave*) bse_value_get_object (in_values++);
-  gchar *file_name        = sfi_value_get_string (in_values++);
-  gchar *wave_name        = sfi_value_get_string (in_values++);
+  BseWave *wave = (BseWave*) bse_value_get_object (in_values++);
+  const char *file_name = sfi_value_get_string (in_values++);
+  const char *wave_name = sfi_value_get_string (in_values++);
   BseErrorType error = BSE_ERROR_NONE;
   
   /* check parameters */
@@ -70,7 +70,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseWave *wave = bse_value_get_object (in_values++);
+  BseWave *wave = (BseWave*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_WAVE (wave))
@@ -96,19 +96,19 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseWave *wave     = bse_value_get_object (in_values++);
+  BseWave *wave = (BseWave*) bse_value_get_object (in_values++);
   guint chunk_index = sfi_value_get_int (in_values++);
   BseEditableSample *esample = NULL;
   GslWaveChunk *wchunk = NULL;
-  
+
   /* check parameters */
   if (!BSE_IS_WAVE (wave))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
-  wchunk = sfi_ring_nth_data (wave->wave_chunks, chunk_index);
+
+  wchunk = (GslWaveChunk*) sfi_ring_nth_data (wave->wave_chunks, chunk_index);
   if (wchunk)
     {
-      esample = g_object_new (BSE_TYPE_EDITABLE_SAMPLE, NULL);
+      esample = (BseEditableSample*) g_object_new (BSE_TYPE_EDITABLE_SAMPLE, NULL);
       bse_editable_sample_set_wchunk (esample, wchunk);
       bse_item_use (BSE_ITEM (esample));
       g_object_unref (esample);
@@ -135,15 +135,15 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseWave *wave     = bse_value_get_object (in_values++);
+  BseWave *wave = (BseWave*) bse_value_get_object (in_values++);
   guint chunk_index = sfi_value_get_int (in_values++);
   GslWaveChunk *wchunk = NULL;
-  
+
   /* check parameters */
   if (!BSE_IS_WAVE (wave))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
-  wchunk = sfi_ring_nth_data (wave->wave_chunks, chunk_index);
+
+  wchunk = (GslWaveChunk*) sfi_ring_nth_data (wave->wave_chunks, chunk_index);
   if (wchunk)
     sfi_value_set_real (out_values++, wchunk->osc_freq);
 
@@ -165,15 +165,15 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseWave *wave     = bse_value_get_object (in_values++);
+  BseWave *wave = (BseWave*) bse_value_get_object (in_values++);
   guint chunk_index = sfi_value_get_int (in_values++);
   GslWaveChunk *wchunk = NULL;
-  
+
   /* check parameters */
   if (!BSE_IS_WAVE (wave))
     return BSE_ERROR_PROC_PARAM_INVAL;
-  
-  wchunk = sfi_ring_nth_data (wave->wave_chunks, chunk_index);
+
+  wchunk = (GslWaveChunk*) sfi_ring_nth_data (wave->wave_chunks, chunk_index);
   if (wchunk)
     sfi_value_set_real (out_values++, wchunk->mix_freq);
 
diff --git a/bse/bsewaveosc.proc b/bse/bsewaveosc.proc
index a752b1e..65201a2 100644
--- a/bse/bsewaveosc.proc
+++ b/bse/bsewaveosc.proc
@@ -18,6 +18,7 @@
 #include <bse/bsewaveosc.h>
 #include <bse/bseprocedure.h>
 #include <bse/bseeditablesample.h>
+#include "bsecxxplugin.hh"
 
 AUTHORS	= "Tim Janik <timj gtk org>";
 LICENSE = "GNU Lesser General Public License";
@@ -32,7 +33,7 @@ METHOD (BseWaveOsc, request-pcm-position) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseWaveOsc *self = bse_value_get_object (in_values++);
+  BseWaveOsc *self = (BseWaveOsc*) bse_value_get_object (in_values++);
   
   /* check parameters */
   if (!BSE_IS_WAVE_OSC (self))
@@ -54,10 +55,10 @@ PROCEDURE (bse-wave-osc-mass-seek-perc, "Seek Wave Oscillators") {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseItemSeq *iseq = bse_value_get_boxed (in_values++);
+  BseItemSeq *iseq = (BseItemSeq*) bse_value_get_boxed (in_values++);
   gfloat      pos  = sfi_value_get_real (in_values++);
   guint i, n = iseq ? iseq->n_items : 0;
-  BseWaveOsc **woscs = g_alloca (sizeof (BseWaveOsc*) * n);
+  BseWaveOsc **woscs = (BseWaveOsc**) g_alloca (sizeof (BseWaveOsc*) * n);
   for (i = 0; i < n; i++)
     if (!BSE_IS_WAVE_OSC (iseq->items[i]))      /* check parameters */
       return BSE_ERROR_PROC_PARAM_INVAL;
@@ -80,8 +81,8 @@ METHOD (BseWaveOsc, set-from-editable-sample) {
 	GValue            *out_values)
 {
   /* extract parameter values */
-  BseWaveOsc *self           = bse_value_get_object (in_values++);
-  BseEditableSample *esample = bse_value_get_object (in_values++);
+  BseWaveOsc *self = (BseWaveOsc*) bse_value_get_object (in_values++);
+  BseEditableSample *esample = (BseEditableSample*) bse_value_get_object (in_values++);
 
   /* check parameters */
   if (!BSE_IS_WAVE_OSC (self))
diff --git a/bse/bsewaverepo.proc b/bse/bsewaverepo.proc
index 0efd702..cdbf27c 100644
--- a/bse/bsewaverepo.proc
+++ b/bse/bsewaverepo.proc
@@ -19,6 +19,7 @@
 #include <bse/bsewaverepo.h>
 #include <bse/bseloader.h>
 #include <bse/bsewave.h>
+#include "bsecxxplugin.hh"
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -33,7 +34,7 @@ load_file (BseWaveRepo *wrepo,
            BseWave    **wave_p)
 {
   gchar *fname = g_path_get_basename (file_name);
-  BseWave *wave = g_object_new (BSE_TYPE_WAVE, "uname", fname, NULL);
+  BseWave *wave = (BseWave*) g_object_new (BSE_TYPE_WAVE, "uname", fname, NULL);
   g_free (fname);
   BseErrorType error = bse_wave_load_wave_file (wave, file_name, NULL, NULL, NULL, TRUE);
   if (wave->n_wchunks)
@@ -73,8 +74,8 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  BseWaveRepo *self    = (BseWaveRepo*) bse_value_get_object (in_values++);
-  gchar *file_name     = sfi_value_get_string (in_values++);
+  BseWaveRepo *self = (BseWaveRepo*) bse_value_get_object (in_values++);
+  const char *file_name = sfi_value_get_string (in_values++);
   BseUndoStack *ustack;
   BseErrorType error;
   BseWave *wave;
@@ -140,8 +141,7 @@ BODY (BseProcedureClass *proc,
       GValue            *out_values)
 {
   /* extract parameter values */
-  gchar *filename = sfi_value_get_string (in_values++);
-  BseSampleFileInfo info = { 0, };
+  const char *filename = sfi_value_get_string (in_values++);
   BseWaveFileInfo *wfi = NULL;
   struct stat sbuf = { 0, };
 
@@ -150,7 +150,8 @@ BODY (BseProcedureClass *proc,
     return BSE_ERROR_PROC_PARAM_INVAL;
 
   /* construct info */
-  info.file = filename;
+  BseSampleFileInfo info = { 0, };
+  info.file = (char*) filename;
   info.waves = bse_string_seq_new ();
   if (stat (filename, &sbuf) < 0)
     info.error = bse_error_from_errno (errno, BSE_ERROR_FILE_OPEN_FAILED);
diff --git a/bse/mkcproc.pl b/bse/mkcproc.pl
index df02e62..3b9cbf6 100755
--- a/bse/mkcproc.pl
+++ b/bse/mkcproc.pl
@@ -311,8 +311,7 @@ my $func = func_name ($file);
 if ($funcname) {
     $func = func_name ($funcname);
 }
-print "BseExportNode* $func (void);\n";
-print "BseExportNode* $func (void)\n{\n  return $last_node;\n}\n";
+print "extern \"C\" BseExportNode* $func (void)\n{\n  return $last_node;\n}\n";
 
 
 print "\n/*\n * Generated data ends here\n */\n";



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