Index: flow/Makefile.am
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/Makefile.am,v
retrieving revision 1.23
diff -u -u -r1.23 Makefile.am
--- flow/Makefile.am	2000/09/28 19:57:24	1.23
+++ flow/Makefile.am	2000/09/30 19:26:02
@@ -15,10 +15,10 @@
 libartsflow_la_LIBADD = libartsflow_idl.la $(LIBAUDIOFILE) -lm
 libartsflow_la_LDFLAGS = -no-undefined
 libartsflow_la_SOURCES =  synth_play_impl.cc \
-  synthschedule.cc olddebug.cc audiosubsys.cc \
+  synthschedule.cc audiosubsys.cc \
   pipebuffer.cc convert.cc synth_wave_sin_impl.cc synth_frequency_impl.cc \
   synth_multi_add_impl.cc synth_add_impl.cc synth_mul_impl.cc \
-  synth_play_wav_impl.cc stdsynthmodule.cc cache.cc utils.c asyncschedule.cc \
+  synth_play_wav_impl.cc stdsynthmodule.cc cache.cc asyncschedule.cc \
   bytestreamtoaudio_impl.cc stereovolumecontrol_impl.cc \
   stereoeffectstack_impl.cc fft.c stereofftscope_impl.cc virtualports.cc \
   bus.cc audiomanager_impl.cc synth_record_impl.cc resample.cc
@@ -26,7 +26,7 @@
 artsincludedir = $(includedir)/arts
 artsinclude_HEADERS = artsflow.h audiosubsys.h cache.h \
   cachedwav.h convert.h pipebuffer.h stdsynthmodule.h \
-  synthschedule.h utils.h fft.h artsflow.idl 
+  synthschedule.h fft.h artsflow.idl 
 
 DISTCLEANFILES = artsflow.cc artsflow.h
 
Index: flow/asyncschedule.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/asyncschedule.h,v
retrieving revision 1.9
diff -u -u -r1.9 asyncschedule.h
--- flow/asyncschedule.h	2000/09/30 12:30:13	1.9
+++ flow/asyncschedule.h	2000/09/30 19:26:02
@@ -28,6 +28,14 @@
 
 #include <queue>
 
+/*
+ * BC - Status (2000-09-30): ASyncNetSend, ASyncNetReceive, ASyncPort.
+ *
+ * None of these classes is considered part of the public API. Do NOT use it
+ * in your apps. These are part of the implementation of libartsflow's
+ * StdFlowSystem, and subject to change with the needs of it.
+ */
+
 namespace Arts {
 
 class ASyncNetSend : public FlowSystemSender_skel
Index: flow/audiomanager_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/audiomanager_impl.cc,v
retrieving revision 1.3
diff -u -u -r1.3 audiomanager_impl.cc
--- flow/audiomanager_impl.cc	2000/09/23 17:55:44	1.3
+++ flow/audiomanager_impl.cc	2000/09/30 19:26:03
@@ -28,17 +28,16 @@
 using namespace Arts;
 using namespace std;
 
-class AudioManagerClient_impl;
 namespace Arts {
 
+class AudioManagerClient_impl;
+
 class AudioManagerAssignable {
 public:
 	virtual long ID() = 0;
 	virtual void destination(const string& newDestination) = 0;
 };
 
-};
-
 class AudioManager_impl : virtual public AudioManager_skel
 {
 protected:
@@ -302,3 +301,5 @@
 REGISTER_IMPLEMENTATION(AudioManager_impl);
 REGISTER_IMPLEMENTATION(Synth_AMAN_PLAY_impl);
 REGISTER_IMPLEMENTATION(Synth_AMAN_RECORD_impl);
+
+};
Index: flow/audiosubsys.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/audiosubsys.h,v
retrieving revision 1.11
diff -u -u -r1.11 audiosubsys.h
--- flow/audiosubsys.h	2000/09/10 19:27:28	1.11
+++ flow/audiosubsys.h	2000/09/30 19:26:04
@@ -26,6 +26,20 @@
 #include "pipebuffer.h"
 #include "startupmanager.h"
 
+/*
+ * BC - Status (2000-09-30): AudioSubSystem, ASProducer, ASConsumer.
+ *
+ * These classes are kept binary compatible. You can rely on them.
+ * AudioSubSystem has a private data pointer to do so. Even if ports to
+ * other architectures or hardware will require different organization
+ * (i.e. no fragments, direct memory access via mmap), the data members
+ * and functions exported here MAY NOT BE CHANGED. Use the private data
+ * pointer for adding data members.
+ *
+ * If ASProducer/ASConsumer doesn't suit the needs any longer, do NOT
+ * change them. Add new classes instead.
+ */
+
 namespace Arts {
 
 class ASProducer {
Index: flow/bus.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/bus.cc,v
retrieving revision 1.6
diff -u -u -r1.6 bus.cc
--- flow/bus.cc	2000/09/29 11:18:30	1.6
+++ flow/bus.cc	2000/09/30 19:26:05
@@ -197,6 +197,8 @@
 	erase(server);
 }
 
+namespace Arts {
+
 class Synth_BUS_UPLINK_impl :public Synth_BUS_UPLINK_skel,
 										public StdSynthModule, public BusClient
 {
@@ -220,6 +222,10 @@
 	void disconnect();
 };
 
+REGISTER_IMPLEMENTATION(Synth_BUS_UPLINK_impl);
+
+};
+
 Synth_BUS_UPLINK_impl::Synth_BUS_UPLINK_impl() :running(false)
 {
 	bm = BusManager::the();
@@ -294,7 +300,7 @@
 	// only in downlinks
 }
 
-REGISTER_IMPLEMENTATION(Synth_BUS_UPLINK_impl);
+namespace Arts {
 
 class Synth_BUS_DOWNLINK_impl :public Synth_BUS_DOWNLINK_skel,
 										public StdSynthModule, public BusClient
@@ -320,6 +326,10 @@
 	SynthModule module();
 };
 
+REGISTER_IMPLEMENTATION(Synth_BUS_DOWNLINK_impl);
+
+};
+
 Synth_BUS_DOWNLINK_impl::Synth_BUS_DOWNLINK_impl() :running(false)
 {
 	bm = BusManager::the();
@@ -394,5 +404,3 @@
 	_node()->virtualize("left",channels[0]._node(),"outvalue");
 	_node()->virtualize("right",channels[1]._node(),"outvalue");
 }
-
-REGISTER_IMPLEMENTATION(Synth_BUS_DOWNLINK_impl);
Index: flow/bus.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/bus.h,v
retrieving revision 1.2
diff -u -u -r1.2 bus.h
--- flow/bus.h	2000/07/17 13:56:01	1.2
+++ flow/bus.h	2000/09/30 19:26:05
@@ -26,6 +26,18 @@
 #include "stdsynthmodule.h"
 #include "artsflow.h"
 
+/*
+ * BC - Status (2000-09-30): BusClient, BusManager
+ *
+ * None of these classes is considered part of the public API. Do NOT use it
+ * in your apps. These are part of the implementation of libartsflow's
+ * Synth_BUS_* and Synth_AMAN_* and AudioManager interfaces. Use these for
+ * public use instead, and don't touch this here.
+ */
+
+
+namespace Arts {
+
 class BusClient
 {
 public:
@@ -61,6 +73,7 @@
 	std::vector<std::string> *busList();
 
 	static BusManager *the();
+};
 };
 
 #endif /* ARTS_BUS_H */
Index: flow/bytestreamtoaudio_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/bytestreamtoaudio_impl.cc,v
retrieving revision 1.9
diff -u -u -r1.9 bytestreamtoaudio_impl.cc
--- flow/bytestreamtoaudio_impl.cc	2000/09/12 14:40:22	1.9
+++ flow/bytestreamtoaudio_impl.cc	2000/09/30 19:26:06
@@ -28,6 +28,7 @@
 using namespace std;
 using namespace Arts;
 
+namespace Arts {
 
 class PacketRefiller : public Refiller {
 protected:
@@ -113,3 +114,5 @@
 };
 
 REGISTER_IMPLEMENTATION(ByteStreamToAudio_impl);
+
+};
Index: flow/cache.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/cache.h,v
retrieving revision 1.7
diff -u -u -r1.7 cache.h
--- flow/cache.h	2000/05/28 10:36:09	1.7
+++ flow/cache.h	2000/09/30 19:26:06
@@ -28,6 +28,14 @@
 #include <string>
 #include "startupmanager.h"
 
+/*
+ * BC - Status (2000-09-30): Cache, CachedObject
+ *
+ * At the current point in time, there are NO GUARANTEES, so only use this
+ * in apps part of official KDE releases (such as kdemultimedia apps), which
+ * know what is happening here.
+ */
+
 namespace Arts {
 class Cache;
 
Index: flow/cachedwav.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/cachedwav.h,v
retrieving revision 1.5
diff -u -u -r1.5 cachedwav.h
--- flow/cachedwav.h	2000/05/17 22:48:20	1.5
+++ flow/cachedwav.h	2000/09/30 19:26:06
@@ -29,6 +29,15 @@
 #include <sys/stat.h>
 #include <unistd.h>
 
+/*
+ * BC - Status (2000-09-30): CachedWav.
+ *
+ * At the current point in time, there are NO GUARANTEES, so only use this
+ * in apps part of official KDE releases (such as kdemultimedia apps), which
+ * know what is happening here. Especially, in SOME kde versions this class
+ * might not even exist, as it gets conditionally compiled.
+ */
+
 namespace Arts {
 
 class CachedWav : public CachedObject
Index: flow/convert.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/convert.cc,v
retrieving revision 1.9
diff -u -u -r1.9 convert.cc
--- flow/convert.cc	2000/09/12 14:40:22	1.9
+++ flow/convert.cc	2000/09/30 19:26:07
@@ -55,7 +55,7 @@
 #define datasize_float 1
 
 #define mk_converter(from_format,to_format) \
-void convert_mono_ ## from_format ## _ ## to_format (unsigned long samples, \
+void Arts::convert_mono_ ## from_format ## _ ## to_format (unsigned long samples, \
 									datatype_ ## from_format *from, \
                                     datatype_ ## to_format *to) \
 { \
@@ -66,7 +66,7 @@
 		to += datasize_ ## to_format; \
 	} \
 } \
-void interpolate_mono_ ## from_format ## _ ## to_format (unsigned long samples,\
+void Arts::interpolate_mono_ ## from_format ## _ ## to_format (unsigned long samples,\
 									double startpos, double speed, \
 									datatype_ ## from_format *from, \
                                     datatype_ ## to_format *to) \
@@ -83,7 +83,7 @@
 		samples--; \
 	} \
 } \
-void convert_stereo_i ## from_format ## _2 ## to_format (unsigned long samples,\
+void Arts::convert_stereo_i ## from_format ## _2 ## to_format (unsigned long samples,\
 									datatype_ ## from_format *from, \
                                     datatype_ ## to_format *left, \
 									datatype_ ## to_format *right) \
@@ -98,7 +98,7 @@
 		right += datasize_ ## to_format; \
 	} \
 } \
-void interpolate_stereo_i ## from_format ## _2 ## to_format (unsigned long samples,\
+void Arts::interpolate_stereo_i ## from_format ## _2 ## to_format (unsigned long samples,\
 									double startpos, double speed, \
 									datatype_ ## from_format *from, \
                                     datatype_ ## to_format *left, \
@@ -127,6 +127,7 @@
 
 /*----------------------------- new code end --------------------------- */
 
+/*
 void old_convert_mono_8_float(unsigned long samples, unsigned char *from, float *to)
 {
 	float *end = to+samples;
@@ -166,8 +167,9 @@
 		from += 4;
 	}
 }
+*/
 
-void convert_stereo_2float_i16le(unsigned long samples, float *left, float *right, unsigned char *to)
+void Arts::convert_stereo_2float_i16le(unsigned long samples, float *left, float *right, unsigned char *to)
 {
 	float *end = left+samples;
 	long syn;
@@ -192,7 +194,7 @@
 	}	
 }
 
-void convert_mono_float_16le(unsigned long samples, float *from, unsigned char *to)
+void Arts::convert_mono_float_16le(unsigned long samples, float *from, unsigned char *to)
 {
 	float *end = from+samples;
 
@@ -208,7 +210,7 @@
 	}	
 }
 
-unsigned long uni_convert_stereo_2float(
+unsigned long Arts::uni_convert_stereo_2float(
 		unsigned long samples,		// number of required samples
 		unsigned char *from,		// buffer containing the samples
 		unsigned long fromLen,		// length of the buffer
Index: flow/convert.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/convert.h,v
retrieving revision 1.5
diff -u -u -r1.5 convert.h
--- flow/convert.h	2000/08/24 16:13:48	1.5
+++ flow/convert.h	2000/09/30 19:26:08
@@ -20,6 +20,18 @@
 
     */
 
+
+
+/*
+ * BC - Status (2000-09-30): conversion functions
+ *
+ * None of them will be removed or changed, so it is safe to use them in
+ * your apps. It is *recommended* (though not necessary) to use the new
+ * resampling code (Resampler) where possible.
+ */
+
+namespace Arts {
+
 /*
  * Simple conversion routines. The function names are choosen like
  *
@@ -93,3 +105,5 @@
 		double speed,				// speed (2.0 means twice as fast)
 		double startposition		// startposition
 	);
+
+};
Index: flow/fft.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/fft.h,v
retrieving revision 1.1
diff -u -u -r1.1 fft.h
--- flow/fft.h	2000/02/24 00:09:13	1.1
+++ flow/fft.h	2000/09/30 19:26:08
@@ -2,6 +2,14 @@
 #define FFT_H
 
 /*
+ * BC - Status (2000-09-30): fft_float
+ *
+ * Do not rely on this - it is part of StereoFFTScope implementation, and
+ * subject to move with it.
+ */
+
+
+/*
  * I put all that fft stuff together in fft.c and fft.h. It only exports
  * the fft_float function now, all others are static.
  */
Index: flow/pipebuffer.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/pipebuffer.cc,v
retrieving revision 1.7
diff -u -u -r1.7 pipebuffer.cc
--- flow/pipebuffer.cc	2000/08/23 23:44:48	1.7
+++ flow/pipebuffer.cc	2000/09/30 19:26:08
@@ -24,6 +24,7 @@
 #include <assert.h>
 
 using namespace std;
+using namespace Arts;
 
 PipeSegment::PipeSegment(long size, void *buffer)
 {
Index: flow/pipebuffer.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/pipebuffer.h,v
retrieving revision 1.4
diff -u -u -r1.4 pipebuffer.h
--- flow/pipebuffer.h	2000/03/26 12:27:43	1.4
+++ flow/pipebuffer.h	2000/09/30 19:26:09
@@ -23,7 +23,18 @@
 #ifndef __PIPEBUFFER_H__
 #define __PIPEBUFFER_H__
 
+/*
+ * BC - Status (2000-09-30): PipeSegment, PipeBuffer
+ *
+ * None of these classes is considered part of the public API. Do NOT use it
+ * in your apps. These are part of the implementation of libartsflow's
+ * AudioSubSystem, and subject to change/disappearing due to optimization
+ * work.
+ */
+
+
 #include <list>
+namespace Arts {
 
 class PipeSegment {
 	long _remaining;
@@ -58,6 +69,7 @@
 
 	// status
 	long size();
+};
 };
 
 #endif
Index: flow/resample.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/resample.h,v
retrieving revision 1.2
diff -u -u -r1.2 resample.h
--- flow/resample.h	2000/09/12 14:40:22	1.2
+++ flow/resample.h	2000/09/30 19:26:09
@@ -21,8 +21,15 @@
     */
 
 
-#ifndef ARTS_FLOW_REFILL_H
-#define ARTS_FLOW_REFILL_H
+#ifndef ARTS_FLOW_RESAMPLE_H
+#define ARTS_FLOW_RESAMPLE_H
+
+/*
+ * BC - Status (2000-09-30): Resampler / Refiller.
+ *
+ * These classes will be kept binary compatible. Resampler has a private
+ * data pointer for this purpose.
+ */
 
 namespace Arts {
 
Index: flow/stdsynthmodule.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/stdsynthmodule.h,v
retrieving revision 1.8
diff -u -u -r1.8 stdsynthmodule.h
--- flow/stdsynthmodule.h	2000/05/17 22:48:20	1.8
+++ flow/stdsynthmodule.h	2000/09/30 19:26:09
@@ -25,12 +25,25 @@
 
 #include "artsflow.h"
 
+/*
+ * BC - Status (2000-09-30): StdSynthModule
+ *
+ * This class is intended for public use (inheritance) as it supplies a base
+ * for all objects using streams. It will be kept binary compatible.
+ */
+
 namespace Arts {
 
+class StdSynthModulePrivate;
+
 class StdSynthModule :virtual public SynthModule_base {
+private:
+	StdSynthModulePrivate *d;
+
 protected:
 	long samplingRate;
 	float samplingRateFloat;
+
 public:
 	StdSynthModule();
 
Index: flow/stereoeffectstack_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/stereoeffectstack_impl.cc,v
retrieving revision 1.11
diff -u -u -r1.11 stereoeffectstack_impl.cc
--- flow/stereoeffectstack_impl.cc	2000/09/29 11:18:30	1.11
+++ flow/stereoeffectstack_impl.cc	2000/09/30 19:26:10
@@ -29,6 +29,8 @@
 using namespace std;
 using namespace Arts;
 
+namespace Arts {
+
 class StereoEffectStack_impl : public StereoEffectStack_skel,
 							   public StdSynthModule
 {
@@ -152,3 +154,5 @@
 };
 
 REGISTER_IMPLEMENTATION(StereoEffectStack_impl);
+
+};
Index: flow/stereofftscope_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/stereofftscope_impl.cc,v
retrieving revision 1.7
diff -u -u -r1.7 stereofftscope_impl.cc
--- flow/stereofftscope_impl.cc	2000/05/17 22:48:20	1.7
+++ flow/stereofftscope_impl.cc	2000/09/30 19:26:10
@@ -29,6 +29,8 @@
 using namespace std;
 using namespace Arts;
 
+namespace Arts {
+
 class StereoFFTScope_impl : public StereoFFTScope_skel, public StdSynthModule {
 protected:
 	static const unsigned long SAMPLES = 4096;
@@ -123,3 +125,5 @@
 };
 
 REGISTER_IMPLEMENTATION(StereoFFTScope_impl);
+
+};
Index: flow/stereovolumecontrol_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/stereovolumecontrol_impl.cc,v
retrieving revision 1.4
diff -u -u -r1.4 stereovolumecontrol_impl.cc
--- flow/stereovolumecontrol_impl.cc	2000/07/17 12:54:59	1.4
+++ flow/stereovolumecontrol_impl.cc	2000/09/30 19:26:11
@@ -26,6 +26,8 @@
 
 using namespace Arts;
 
+namespace Arts {
+
 class StereoVolumeControl_impl : virtual public StereoVolumeControl_skel,
 								 virtual public StdSynthModule
 {
@@ -92,3 +94,5 @@
 };
 
 REGISTER_IMPLEMENTATION(StereoVolumeControl_impl);
+
+};
Index: flow/synth_add_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/synth_add_impl.cc,v
retrieving revision 1.5
diff -u -u -r1.5 synth_add_impl.cc
--- flow/synth_add_impl.cc	2000/07/23 23:44:06	1.5
+++ flow/synth_add_impl.cc	2000/09/30 19:26:11
@@ -25,6 +25,8 @@
 
 using namespace Arts;
 
+namespace Arts {
+
 class Synth_ADD_impl :public Synth_ADD_skel, StdSynthModule
 {
 public:
@@ -38,3 +40,5 @@
 };
 
 REGISTER_IMPLEMENTATION(Synth_ADD_impl);
+
+};
Index: flow/synth_frequency_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/synth_frequency_impl.cc,v
retrieving revision 1.7
diff -u -u -r1.7 synth_frequency_impl.cc
--- flow/synth_frequency_impl.cc	2000/09/23 17:55:44	1.7
+++ flow/synth_frequency_impl.cc	2000/09/30 19:26:11
@@ -27,6 +27,8 @@
 
 using namespace Arts;
 
+namespace Arts {
+
 class Synth_FREQUENCY_impl :public Synth_FREQUENCY_skel, public StdSynthModule
 {
 	float fpos;
@@ -64,3 +66,5 @@
 };
 
 REGISTER_IMPLEMENTATION(Synth_FREQUENCY_impl);
+
+};
Index: flow/synth_mul_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/synth_mul_impl.cc,v
retrieving revision 1.6
diff -u -u -r1.6 synth_mul_impl.cc
--- flow/synth_mul_impl.cc	2000/09/23 17:55:44	1.6
+++ flow/synth_mul_impl.cc	2000/09/30 19:26:11
@@ -25,6 +25,8 @@
 
 using namespace Arts;
 
+namespace Arts {
+
 class Synth_MUL_impl :public Synth_MUL_skel, public StdSynthModule
 {
 public:
@@ -38,3 +40,5 @@
 };
 
 REGISTER_IMPLEMENTATION(Synth_MUL_impl);
+
+};
Index: flow/synth_multi_add_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/synth_multi_add_impl.cc,v
retrieving revision 1.7
diff -u -u -r1.7 synth_multi_add_impl.cc
--- flow/synth_multi_add_impl.cc	2000/05/17 22:48:20	1.7
+++ flow/synth_multi_add_impl.cc	2000/09/30 19:26:11
@@ -25,6 +25,8 @@
 
 using namespace Arts;
 
+namespace Arts {
+
 class Synth_MULTI_ADD_impl :public Synth_MULTI_ADD_skel, StdSynthModule
 {
 public:
@@ -33,6 +35,8 @@
 };
 
 REGISTER_IMPLEMENTATION(Synth_MULTI_ADD_impl);
+
+};
 
 void Synth_MULTI_ADD_impl::calculateBlock(unsigned long cycles)
 {
Index: flow/synth_play_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/synth_play_impl.cc,v
retrieving revision 1.20
diff -u -u -r1.20 synth_play_impl.cc
--- flow/synth_play_impl.cc	2000/09/28 22:42:37	1.20
+++ flow/synth_play_impl.cc	2000/09/30 19:26:12
@@ -35,6 +35,8 @@
 using namespace std;
 using namespace Arts;
 
+namespace Arts {
+
 class Synth_PLAY_impl :	virtual public Synth_PLAY_skel,
 						virtual public ASProducer,
 						virtual public StdSynthModule,
@@ -226,3 +228,5 @@
 };
 
 REGISTER_IMPLEMENTATION(Synth_PLAY_impl);
+
+};
Index: flow/synth_play_wav_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/synth_play_wav_impl.cc,v
retrieving revision 1.17
diff -u -u -r1.17 synth_play_wav_impl.cc
--- flow/synth_play_wav_impl.cc	2000/09/28 22:42:37	1.17
+++ flow/synth_play_wav_impl.cc	2000/09/30 19:26:14
@@ -24,7 +24,6 @@
 #ifdef HAVE_LIBAUDIOFILE
 #include "artsflow.h"
 #include "stdsynthmodule.h"
-#include "utils.h"
 #include "debug.h"
 #include "cachedwav.h"
 #include "convert.h"
@@ -151,6 +150,8 @@
 		delete[] buffer;
 }
 
+namespace Arts {
+
 class Synth_PLAY_WAV_impl : public Synth_PLAY_WAV_skel, public StdSynthModule {
 protected:
 	double flpos;
@@ -195,6 +196,10 @@
 	void calculateBlock(unsigned long samples);
 };
 
+REGISTER_IMPLEMENTATION(Synth_PLAY_WAV_impl);
+
+};
+
 Synth_PLAY_WAV_impl::Synth_PLAY_WAV_impl()
 {
 	cachedwav = 0;
@@ -302,8 +307,6 @@
 */
 }
 
-
-REGISTER_IMPLEMENTATION(Synth_PLAY_WAV_impl);
 
 #if 0
 class Synth_PLAY_WAV :public SynthModule {
Index: flow/synth_record_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/synth_record_impl.cc,v
retrieving revision 1.2
diff -u -u -r1.2 synth_record_impl.cc
--- flow/synth_record_impl.cc	2000/09/28 22:42:37	1.2
+++ flow/synth_record_impl.cc	2000/09/30 19:26:14
@@ -35,6 +35,8 @@
 using namespace std;
 using namespace Arts;
 
+namespace Arts {
+
 class Synth_RECORD_impl :	virtual public Synth_RECORD_skel,
 						virtual public ASConsumer,
 						virtual public StdSynthModule
@@ -114,3 +116,5 @@
 };
 
 REGISTER_IMPLEMENTATION(Synth_RECORD_impl);
+
+};
Index: flow/synth_wave_sin_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/synth_wave_sin_impl.cc,v
retrieving revision 1.4
diff -u -u -r1.4 synth_wave_sin_impl.cc
--- flow/synth_wave_sin_impl.cc	2000/05/17 22:48:20	1.4
+++ flow/synth_wave_sin_impl.cc	2000/09/30 19:26:14
@@ -26,15 +26,19 @@
 
 using namespace Arts;
 
+namespace Arts {
+
 class Synth_WAVE_SIN_impl : virtual public Synth_WAVE_SIN_skel,
 							virtual public StdSynthModule
 {
 public:
 	void calculateBlock(unsigned long cycles)
 	{
-		float *end = cycles + pos;
-		while(pos != end) *outvalue++ = sin((*pos++)*2*M_PI);
+		for(unsigned long i=0; i<cycles; i++)
+			outvalue[i] = sin(pos[i]*2*M_PI);
 	}
 };
 
 REGISTER_IMPLEMENTATION(Synth_WAVE_SIN_impl);
+
+};
Index: flow/synthschedule.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/synthschedule.cc,v
retrieving revision 1.31
diff -u -u -r1.31 synthschedule.cc
--- flow/synthschedule.cc	2000/09/30 12:30:13	1.31
+++ flow/synthschedule.cc	2000/09/30 19:26:17
@@ -968,6 +968,8 @@
 
 // hacked initialization of Dispatcher::the()->flowSystem ;)
 
+namespace Arts {
+
 static class SetFlowSystem : public StartupClass {
 	FlowSystem_impl *fs;
 public:
@@ -981,3 +983,5 @@
 		fs->_release();
 	}
 } sfs;
+
+};
Index: flow/synthschedule.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/synthschedule.h,v
retrieving revision 1.20
diff -u -u -r1.20 synthschedule.h
--- flow/synthschedule.h	2000/06/25 22:54:47	1.20
+++ flow/synthschedule.h	2000/09/30 19:26:18
@@ -29,6 +29,18 @@
 #include <vector>
 #include <list>
 
+/*
+ * BC - Status (2000-09-30): SynthBuffer, Port, AudioPort, MultiPort,
+ *   StdFlowSystem, StdScheduleNode
+ *
+ * None of these classes is considered part of the public API. Do NOT use it
+ * in your apps. These are part of the implementation of libartsflow's
+ * StdFlowSystem, and subject to change with the needs of it.
+ *
+ * If you want to access flowsystem functionality, do so over the core.idl
+ * specified flowsystem interface, (object)->_node() or stuff in mcop/connect.h.
+ */
+
 namespace Arts {
 
 class SynthBuffer
Index: flow/virtualports.h
===================================================================
RCS file: /home/kde/kdelibs/arts/flow/virtualports.h,v
retrieving revision 1.4
diff -u -u -r1.4 virtualports.h
--- flow/virtualports.h	2000/06/25 22:55:52	1.4
+++ flow/virtualports.h	2000/09/30 19:26:18
@@ -20,11 +20,20 @@
 
     */
 
+
 #ifndef VIRTUALPORTS_H
 #define VIRTUALPORTS_H
 
 #include "synthschedule.h"
 #include <list>
+
+/*
+ * BC - Status (2000-09-30): VPortConnection, VPort.
+ *
+ * None of these classes is considered part of the public API. Do NOT use it
+ * in your apps. These are part of the implementation of libartsflow's
+ * StdFlowSystem, and subject to change with the needs of it.
+ */
 
 namespace Arts {
 
Index: mcop/Makefile.am
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/Makefile.am,v
retrieving revision 1.29
diff -u -u -r1.29 Makefile.am
--- mcop/Makefile.am	2000/09/28 19:57:24	1.29
+++ mcop/Makefile.am	2000/09/30 19:26:19
@@ -22,7 +22,7 @@
 
 artsincludedir = $(includedir)/arts
 artsinclude_HEADERS = buffer.h common.h connection.h core.h dispatcher.h \
-  factory.h flowsystem.h idlfilereg.h ifacerepo_impl.h iomanager.h \
+  factory.h flowsystem.h idlfilereg.h iomanager.h \
   mcoputils.h  object.h objectmanager.h pool.h socketconnection.h \
   startupmanager.h tcpconnection.h tcpserver.h type.h unixconnection.h \
   unixserver.h  referenceclean.h datapacket.h asyncstream.h notification.h \
Index: mcop/anyref.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/anyref.h,v
retrieving revision 1.3
diff -u -u -r1.3 anyref.h
--- mcop/anyref.h	2000/06/24 09:34:02	1.3
+++ mcop/anyref.h	2000/09/30 19:26:19
@@ -26,6 +26,13 @@
 #include "buffer.h"
 #include <string>
 
+/*
+ * BC - Status (2000-09-30): AnyRefBase, AnyRef, AnyConstRef
+ *
+ * These classes will be kept binary compatibile. To change it, adding a new
+ * representation is necessary. No private d pointer for this reason.
+ */
+
 namespace Arts {
 
 class AnyRefBase {
Index: mcop/asyncstream.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/asyncstream.h,v
retrieving revision 1.5
diff -u -u -r1.5 asyncstream.h
--- mcop/asyncstream.h	2000/05/17 22:48:20	1.5
+++ mcop/asyncstream.h	2000/09/30 19:26:20
@@ -26,9 +26,23 @@
 #include "buffer.h"
 #include "datapacket.h"
 
+/*
+ * BC - Status (2000-09-30): GenericAsyncStream, AsyncStream,
+ *   FloatAsyncStream/ByteAsyncStream
+ *
+ * These classes are to be treated with extreme care, as they are used in
+ * all kinds of relations with the flow system and the generated code. Do
+ * NOT touch unless you REALLY know what you are doing. For further
+ * extensibility, GenericAsyncStream features a private d pointer.
+ */
+
 namespace Arts {
 
+class GenericAsyncStreamPrivate;
+
 class GenericAsyncStream {
+private:
+	GenericAsyncStreamPrivate *d;	// unused
 public:
 	/**
 	 * interface to create packets and to get rid of them
Index: mcop/buffer.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/buffer.cc,v
retrieving revision 1.17
diff -u -u -r1.17 buffer.cc
--- mcop/buffer.cc	2000/08/27 08:10:23	1.17
+++ mcop/buffer.cc	2000/09/30 19:26:21
@@ -27,56 +27,42 @@
 using namespace std;
 using namespace Arts;
 
-namespace Arts {
-	class BufferPrivate {
-	public:
-		long rpos;
-		bool _readError;
-		std::vector<unsigned char> contents;
-
-		BufferPrivate() : rpos(0), _readError(false)
-		{
-			contents.reserve(128);
-		}
-	};
-};
-
-Buffer::Buffer() : d(new BufferPrivate())
+Buffer::Buffer() : rpos(0), _readError(false),d(0)
 {
+	contents.reserve(128);
 }
 
 Buffer::~Buffer()
 {
-	delete d;
 }
 
 long Buffer::size()
 {
-	return d->contents.size();
+	return contents.size();
 }
 
 long Buffer::remaining()
 {
-	return size()-d->rpos;
+	return size()-rpos;
 }
 
 bool Buffer::readError() {
-	return d->_readError;
+	return _readError;
 }
 
 void Buffer::writeBool(bool b) {
-	d->contents.push_back(b?1:0);
+	contents.push_back(b?1:0);
 }
 
 void Buffer::writeByte(mcopbyte b) {
-	d->contents.push_back(b);
+	contents.push_back(b);
 }
 
 void Buffer::writeLong(long l) {
-	d->contents.push_back((l >> 24) & 0xff);
-	d->contents.push_back((l >> 16) & 0xff);
-	d->contents.push_back((l >> 8) & 0xff);
-	d->contents.push_back(l & 0xff);
+	contents.push_back((l >> 24) & 0xff);
+	contents.push_back((l >> 16) & 0xff);
+	contents.push_back((l >> 8) & 0xff);
+	contents.push_back(l & 0xff);
 }
 
 void Buffer::writeByteSeq(const vector<mcopbyte>& seq) {
@@ -112,7 +98,7 @@
 	long len = s.size()+1;
 
 	writeLong(len);
-	d->contents.insert(d->contents.end(),reinterpret_cast<const unsigned char*>(s.c_str()),
+	contents.insert(contents.end(),reinterpret_cast<const unsigned char*>(s.c_str()),
 		        reinterpret_cast<const unsigned char*>(s.c_str()+len));
 }
 
@@ -126,7 +112,7 @@
 void Buffer::write(void *data, long len) {
 	unsigned char *c = (unsigned char *)data;
 
-	d->contents.insert(d->contents.end(),c,c+len);
+	contents.insert(contents.end(),c,c+len);
 }
 
 
@@ -134,44 +120,44 @@
 	void *result = 0;
 
 	if(remaining() >= l) {
-		result = &d->contents[d->rpos];
-		d->rpos += l;
+		result = &contents[rpos];
+		rpos += l;
 	} else {
-		d->_readError = true;
+		_readError = true;
 	}
 	return result;
 }
 
 void *Buffer::peek(long l) {
 	assert(remaining() >= l);
-	return &d->contents[d->rpos];
+	return &contents[rpos];
 }
 
 void Buffer::skip(long l) {
 	if(remaining() >= l) {
-		d->rpos += l;
+		rpos += l;
 	} else {
-		d->_readError = true;
+		_readError = true;
 	}
 }
 
 void Buffer::rewind() {
-	d->rpos = 0;
+	rpos = 0;
 }
 
 bool Buffer::readBool()
 {
 	long result = false;
 	if(remaining() >= 1) {
-		if(d->contents[d->rpos] == 1)
+		if(contents[rpos] == 1)
 			result = true;
 		else
 		{
-			assert(d->contents[d->rpos] == 0);
+			assert(contents[rpos] == 0);
 		}
-		d->rpos += 1;
+		rpos += 1;
 	} else {
-		d->_readError = true;
+		_readError = true;
 	}
 	return result;
 }
@@ -180,11 +166,11 @@
 {
 	if(remaining() >= 1)
 	{
-		return d->contents[d->rpos++];
+		return contents[rpos++];
 	}
 	else
 	{
-		d->_readError = true;
+		_readError = true;
 		return 0;
 	}
 }
@@ -201,7 +187,7 @@
 	}
 	else
 	{
-		d->_readError = true;
+		_readError = true;
 	}
 }
 
@@ -209,13 +195,13 @@
 {
 	long result = 0;
 	if(remaining() >= 4) {
-		result = (d->contents[d->rpos]   << 24)
-			   + (d->contents[d->rpos+1] << 16)
-			   + (d->contents[d->rpos+2] << 8)
-	 		   +  d->contents[d->rpos+3];
-		d->rpos += 4;
+		result = (contents[rpos]   << 24)
+			   + (contents[rpos+1] << 16)
+			   + (contents[rpos+2] << 8)
+	 		   +  contents[rpos+3];
+		rpos += 4;
 	} else {
-		d->_readError = true;
+		_readError = true;
 	}
 	return result;
 }
@@ -232,7 +218,7 @@
 	}
 	else
 	{
-		d->_readError = true;
+		_readError = true;
 	}
 }
 
@@ -241,7 +227,7 @@
 	// FIXME: see writeFloat()
 	long f_as_long = readLong();
 
-	if(!d->_readError) return *(float *)&f_as_long;
+	if(!_readError) return *(float *)&f_as_long;
 	return 0.0;
 }
 
@@ -257,7 +243,7 @@
 	}
 	else
 	{
-		d->_readError = true;
+		_readError = true;
 	}
 }
 
@@ -285,7 +271,7 @@
 		string s;
 
 		readString(s);
-		if(d->_readError) return;
+		if(_readError) return;
 
 		result.push_back(s);
 	}
@@ -297,10 +283,10 @@
 	long len = size();
 	assert(len >= 8);
 
-	d->contents[4] = (len >> 24) & 0xff;
-	d->contents[5] = (len >> 16) & 0xff;
-	d->contents[6] = (len >> 8) & 0xff;
-	d->contents[7] = len & 0xff;
+	contents[4] = (len >> 24) & 0xff;
+	contents[5] = (len >> 16) & 0xff;
+	contents[6] = (len >> 8) & 0xff;
+	contents[7] = len & 0xff;
 }
 
 void Buffer::patchLong(long position, long value)
@@ -308,10 +294,10 @@
 	long len = size();
 	assert(len >= position+4);
 
-	d->contents[position]   = (value >> 24) & 0xff;
-	d->contents[position+1] = (value >> 16) & 0xff;
-	d->contents[position+2] = (value >> 8) & 0xff;
-	d->contents[position+3] = value & 0xff;
+	contents[position]   = (value >> 24) & 0xff;
+	contents[position+1] = (value >> 16) & 0xff;
+	contents[position+2] = (value >> 8) & 0xff;
+	contents[position+3] = value & 0xff;
 }
 
 string Buffer::toString(const string& name)
@@ -320,7 +306,7 @@
 	char hex[17] = "0123456789abcdef";
 
 	vector<unsigned char>::iterator ci;
-	for(ci = d->contents.begin(); ci != d->contents.end(); ci++)
+	for(ci = contents.begin(); ci != contents.end(); ci++)
 	{
 		result += hex[(*ci >> 4) & 0xf];
 		result += hex[*ci & 0xf];
@@ -354,7 +340,7 @@
 	if(name == "") start = "";
 
 	if(stringncmp(data,start,start.size()) != 0) return false;
-	d->contents.clear();
+	contents.clear();
 
 	string::const_iterator di = data.begin() + start.size();
 	
@@ -366,7 +352,7 @@
 		unsigned char l = fromHexNibble(*di++);	// low nibble
 
 		if(h >= 16 || l >= 16) return false;	// no proper hex digit
-		d->contents.push_back((h << 4) + l);
+		contents.push_back((h << 4) + l);
 	}
 	return true;
 }
Index: mcop/buffer.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/buffer.h,v
retrieving revision 1.12
diff -u -u -r1.12 buffer.h
--- mcop/buffer.h	2000/08/11 14:11:40	1.12
+++ mcop/buffer.h	2000/09/30 19:26:21
@@ -26,6 +26,16 @@
 #include <string>
 #include <vector>
 
+/*
+ * BC - Status (2000-09-30): Buffer.
+ *
+ * Has to be kept binary compatible. As buffer is speed relevant, currently
+ * there are no private d ptrs, and the idea is to keep this as possible.
+ *
+ * If not, but additional stuff in the d ptr, but keep as much data as
+ * possible in the main items.
+ */
+
 namespace Arts {
 
 #ifndef MCOPBYTE_DEFINED
@@ -33,9 +43,15 @@
 typedef unsigned char mcopbyte;
 #endif
 
+class BufferPrivate;
+
 class Buffer {
 private:
-	struct BufferPrivate *d;
+	long rpos;
+	bool _readError;
+	std::vector<unsigned char> contents;
+
+	BufferPrivate *d;	// unused
 	unsigned char fromHexNibble(char c);
 
 public:
Index: mcop/common.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/common.h,v
retrieving revision 1.20
diff -u -u -r1.20 common.h
--- mcop/common.h	2000/05/28 16:39:18	1.20
+++ mcop/common.h	2000/09/30 19:26:22
@@ -33,56 +33,18 @@
 #include "asyncstream.h"
 #include "mcoputils.h"
 
+/*
+ * BC - Status (2000-09-30): Read/WriteObject(Seq)
+ *
+ * Will be kept binary compatible by NOT TOUCHING AT ALL. Do not change this.
+ * (Interaction with generated code).
+ */
+
 /* define this to see what mcop transfers around */
 #undef DEBUG_IO
 
 /* define this to see what mcop messages are processed */
 #undef DEBUG_MESSAGES
-
-/* reference counting helper */
-
-namespace Arts {
-
-template<class T>
-class ReferenceHelper
-{
-private:
-	T *referencedObject;
-public:
-	ReferenceHelper() :referencedObject(0)
-	{
-	}
-	inline ReferenceHelper(T* assignedObject) :referencedObject(assignedObject)
-	{
-	}
-	inline ReferenceHelper<T>& operator=(T* assignedObject)
-	{
-		if(referencedObject)
-			referencedObject->_release();
-
-		referencedObject = assignedObject ;
-		return *this;
-	}
-	inline T* operator->() const
-	{
-		assert(referencedObject);
-		return referencedObject;
-	}
-	inline operator T*() const
-	{
-		return referencedObject;
-	}
-	~ReferenceHelper()
-	{
-		if(referencedObject)
-		{
-			referencedObject->_release();
-			referencedObject = 0;
-		}
-	}
-};
-
-};
 
 #include "core.h"
 
Index: mcop/connect.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/connect.h,v
retrieving revision 1.7
diff -u -u -r1.7 connect.h
--- mcop/connect.h	2000/05/18 10:09:01	1.7
+++ mcop/connect.h	2000/09/30 19:26:22
@@ -21,6 +21,12 @@
 #ifndef MCOP_CONNECT_H
 #define MCOP_CONNECT_H
 
+/*
+ * BC - Status (2000-09-30): connect / setValue functions
+ *
+ * Will be kept as they are (binary compatible).
+ */
+
 #include <string>
 
 namespace Arts {
Index: mcop/connection.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/connection.h,v
retrieving revision 1.9
diff -u -u -r1.9 connection.h
--- mcop/connection.h	2000/07/15 19:46:16	1.9
+++ mcop/connection.h	2000/09/30 19:26:23
@@ -25,9 +25,23 @@
 
 #include "buffer.h"
 
+/*
+ * BC - Status (2000-09-30): Connection.
+ *
+ * None of these classes is considered part of the public API. However, they
+ * NEED to be kept binary compatible as the DO interact with generated code.
+ *
+ * Especially virtual functions and stuff can't be added, if you need to,
+ * you need to add classes parallel to the Connection hierarchy.
+ */
+
 namespace Arts {
 
+class ConnectionPrivate;
+
 class Connection {
+private:
+	ConnectionPrivate *d;		// unused
 public:
 	enum ConnectionState {
 		unknown = 0,
Index: mcop/core.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/core.cc,v
retrieving revision 1.45
diff -u -u -r1.45 core.cc
--- mcop/core.cc	2000/09/30 12:30:13	1.45
+++ mcop/core.cc	2000/09/30 19:26:34
@@ -1547,6 +1547,22 @@
 	return returnCode;
 }
 
+void Arts::FlowSystem_stub::setFloatValue(Arts::Object node, const std::string& port, float value)
+{
+	long methodID = _lookupMethodFast("method:0000000e736574466c6f617456616c75650000000005766f6964000000000200000003000000076f626a65637400000000056e6f6465000000000000000007737472696e670000000005706f7274000000000000000006666c6f6174000000000676616c7565000000000000000000");
+	long requestID;
+	Arts::Buffer *request, *result;
+	request = Arts::Dispatcher::the()->createRequest(requestID,_objectID,methodID);
+	Arts::writeObject(*request,node._base());
+	request->writeString(port);
+	request->writeFloat(value);
+	request->patchLength();
+	_connection->qSendBuffer(request);
+
+	result = Arts::Dispatcher::the()->waitForResult(requestID,_connection);
+	if(result) delete result;
+}
+
 Arts::FlowSystemReceiver Arts::FlowSystem_stub::createReceiver(Arts::Object destObject, const std::string& destPort, Arts::FlowSystemSender sender)
 {
 	long methodID = _lookupMethodFast("method:0000000f63726561746552656365697665720000000019417274733a3a466c6f7753797374656d5265636569766572000000000200000003000000076f626a656374000000000b646573744f626a656374000000000000000007737472696e67000000000964657374506f7274000000000000000017417274733a3a466c6f7753797374656d53656e646572000000000773656e646572000000000000000000");
@@ -1645,8 +1661,20 @@
 	result->writeLong(((Arts::FlowSystem_skel *)object)->queryFlags(node,port));
 }
 
+// setFloatValue
+static void _dispatch_Arts_FlowSystem_05(void *object, Arts::Buffer *request, Arts::Buffer *)
+{
+	Arts::Object_base* _temp_node;
+	Arts::readObject(*request,_temp_node);
+	Arts::Object node = Arts::Object::_from_base(_temp_node);
+	std::string port;
+	request->readString(port);
+	float value = request->readFloat();
+	((Arts::FlowSystem_skel *)object)->setFloatValue(node,port,value);
+}
+
 // createReceiver
-static void _dispatch_Arts_FlowSystem_05(void *object, Arts::Buffer *request, Arts::Buffer *result)
+static void _dispatch_Arts_FlowSystem_06(void *object, Arts::Buffer *request, Arts::Buffer *result)
 {
 	Arts::Object_base* _temp_destObject;
 	Arts::readObject(*request,_temp_destObject);
@@ -1680,12 +1708,15 @@
         "000964657374506f72740000000000000000000000000b7175657279466c616773"
         "0000000014417274733a3a41747472696275746554797065000000000200000002"
         "000000076f626a65637400000000056e6f6465000000000000000007737472696e"
-        "670000000005706f72740000000000000000000000000f63726561746552656365"
-        "697665720000000019417274733a3a466c6f7753797374656d5265636569766572"
-        "000000000200000003000000076f626a656374000000000b646573744f626a6563"
-        "74000000000000000007737472696e67000000000964657374506f727400000000"
-        "0000000017417274733a3a466c6f7753797374656d53656e646572000000000773"
-        "656e646572000000000000000000",
+        "670000000005706f72740000000000000000000000000e736574466c6f61745661"
+        "6c75650000000005766f6964000000000200000003000000076f626a6563740000"
+        "0000056e6f6465000000000000000007737472696e670000000005706f72740000"
+        "00000000000006666c6f6174000000000676616c75650000000000000000000000"
+        "000f63726561746552656365697665720000000019417274733a3a466c6f775379"
+        "7374656d5265636569766572000000000200000003000000076f626a6563740000"
+        "00000b646573744f626a656374000000000000000007737472696e670000000009"
+        "64657374506f7274000000000000000017417274733a3a466c6f7753797374656d"
+        "53656e646572000000000773656e646572000000000000000000",
 		"MethodTable"
 	);
 	_addMethod(_dispatch_Arts_FlowSystem_00,this,Arts::MethodDef(m));
@@ -1694,6 +1725,7 @@
 	_addMethod(_dispatch_Arts_FlowSystem_03,this,Arts::MethodDef(m));
 	_addMethod(_dispatch_Arts_FlowSystem_04,this,Arts::MethodDef(m));
 	_addMethod(_dispatch_Arts_FlowSystem_05,this,Arts::MethodDef(m));
+	_addMethod(_dispatch_Arts_FlowSystem_06,this,Arts::MethodDef(m));
 }
 
 Arts::FlowSystem_skel::FlowSystem_skel()
@@ -2435,7 +2467,7 @@
     "636f6e6e6563740000000005766f696400000000020000000000000000000000010000"
     "00117265636569766548616e646c6572494400000000056c6f6e670000000012000000"
     "00000000000000000000000011417274733a3a466c6f7753797374656d000000000000"
-    "0000060000000c73746172744f626a6563740000000005766f69640000000002000000"
+    "0000070000000c73746172744f626a6563740000000005766f69640000000002000000"
     "01000000076f626a65637400000000056e6f64650000000000000000000000000b7374"
     "6f704f626a6563740000000005766f6964000000000200000001000000076f626a6563"
     "7400000000056e6f64650000000000000000000000000e636f6e6e6563744f626a6563"
@@ -2450,54 +2482,57 @@
     "696e67000000000964657374506f72740000000000000000000000000b717565727946"
     "6c6167730000000014417274733a3a4174747269627574655479706500000000020000"
     "0002000000076f626a65637400000000056e6f6465000000000000000007737472696e"
-    "670000000005706f72740000000000000000000000000f637265617465526563656976"
-    "65720000000019417274733a3a466c6f7753797374656d526563656976657200000000"
-    "0200000003000000076f626a656374000000000b646573744f626a6563740000000000"
-    "00000007737472696e67000000000964657374506f7274000000000000000017417274"
-    "733a3a466c6f7753797374656d53656e646572000000000773656e6465720000000000"
-    "0000000000000000000000000000000000000011417274733a3a476c6f62616c436f6d"
-    "6d000000000000000003000000047075740000000008626f6f6c65616e000000000200"
-    "00000200000007737472696e6700000000097661726961626c65000000000000000007"
-    "737472696e67000000000676616c756500000000000000000000000004676574000000"
-    "0007737472696e6700000000020000000100000007737472696e670000000009766172"
-    "6961626c650000000000000000000000000665726173650000000005766f6964000000"
-    "00020000000100000007737472696e6700000000097661726961626c65000000000000"
-    "00000000000000000000000000000000000014417274733a3a546d70476c6f62616c43"
-    "6f6d6d000000000100000011417274733a3a476c6f62616c436f6d6d00000000000000"
-    "0000000000000000000000000012417274733a3a5472616465724f6666657200000000"
-    "00000000010000000c67657450726f706572747900000000082a737472696e67000000"
-    "00020000000100000007737472696e6700000000056e616d6500000000000000000000"
-    "0000010000000e696e746572666163654e616d650000000007737472696e6700000000"
-    "1200000000000000000000000000000012417274733a3a547261646572517565727900"
-    "000000000000000200000009737570706f7274730000000005766f6964000000000200"
-    "00000200000007737472696e67000000000970726f7065727479000000000000000007"
-    "737472696e67000000000676616c756500000000000000000000000006717565727900"
-    "000000132a417274733a3a5472616465724f6666657200000000020000000000000000"
-    "0000000000000000000000000000000d417274733a3a4f626a65637400000000000000"
-    "000e0000000e5f6c6f6f6b75704d6574686f6400000000056c6f6e6700000000020000"
-    "000100000010417274733a3a4d6574686f64446566000000000a6d6574686f64446566"
-    "0000000000000000000000000f5f696e746572666163654e616d650000000007737472"
-    "696e6700000000020000000000000000000000105f7175657279496e74657266616365"
-    "0000000013417274733a3a496e74657266616365446566000000000200000001000000"
-    "07737472696e6700000000056e616d650000000000000000000000000b5f7175657279"
-    "54797065000000000e417274733a3a5479706544656600000000020000000100000007"
-    "737472696e6700000000056e616d650000000000000000000000000b5f717565727945"
-    "6e756d000000000e417274733a3a456e756d4465660000000002000000010000000773"
-    "7472696e6700000000056e616d650000000000000000000000000a5f746f537472696e"
-    "670000000007737472696e6700000000020000000000000000000000125f6973436f6d"
-    "70617469626c65576974680000000008626f6f6c65616e000000000200000001000000"
-    "07737472696e67000000000e696e746572666163656e616d6500000000000000000000"
-    "00000c5f636f707952656d6f74650000000005766f6964000000000200000000000000"
-    "000000000b5f75736552656d6f74650000000005766f69640000000002000000000000"
-    "00000000000f5f72656c6561736552656d6f74650000000005766f6964000000000200"
-    "000000000000000000000a5f6164644368696c640000000007737472696e6700000000"
-    "0200000002000000076f626a65637400000000066368696c6400000000000000000773"
-    "7472696e6700000000056e616d650000000000000000000000000d5f72656d6f766543"
-    "68696c640000000008626f6f6c65616e00000000020000000100000007737472696e67"
-    "00000000056e616d650000000000000000000000000a5f6765744368696c6400000000"
-    "076f626a65637400000000020000000100000007737472696e6700000000056e616d65"
-    "0000000000000000000000000f5f71756572794368696c6472656e00000000082a7374"
-    "72696e6700000000020000000000000000000000010000000c5f666c6f775379737465"
-    "6d0000000011417274733a3a466c6f7753797374656d00000000120000000000000000"
-    "0000000000000000"
+    "670000000005706f72740000000000000000000000000e736574466c6f617456616c75"
+    "650000000005766f6964000000000200000003000000076f626a65637400000000056e"
+    "6f6465000000000000000007737472696e670000000005706f72740000000000000000"
+    "06666c6f6174000000000676616c75650000000000000000000000000f637265617465"
+    "52656365697665720000000019417274733a3a466c6f7753797374656d526563656976"
+    "6572000000000200000003000000076f626a656374000000000b646573744f626a6563"
+    "74000000000000000007737472696e67000000000964657374506f7274000000000000"
+    "000017417274733a3a466c6f7753797374656d53656e646572000000000773656e6465"
+    "7200000000000000000000000000000000000000000000000011417274733a3a476c6f"
+    "62616c436f6d6d000000000000000003000000047075740000000008626f6f6c65616e"
+    "00000000020000000200000007737472696e6700000000097661726961626c65000000"
+    "000000000007737472696e67000000000676616c756500000000000000000000000004"
+    "6765740000000007737472696e6700000000020000000100000007737472696e670000"
+    "0000097661726961626c65000000000000000000000000066572617365000000000576"
+    "6f696400000000020000000100000007737472696e6700000000097661726961626c65"
+    "00000000000000000000000000000000000000000000000014417274733a3a546d7047"
+    "6c6f62616c436f6d6d000000000100000011417274733a3a476c6f62616c436f6d6d00"
+    "0000000000000000000000000000000000000012417274733a3a5472616465724f6666"
+    "65720000000000000000010000000c67657450726f706572747900000000082a737472"
+    "696e6700000000020000000100000007737472696e6700000000056e616d6500000000"
+    "0000000000000000010000000e696e746572666163654e616d65000000000773747269"
+    "6e67000000001200000000000000000000000000000012417274733a3a547261646572"
+    "517565727900000000000000000200000009737570706f7274730000000005766f6964"
+    "00000000020000000200000007737472696e67000000000970726f7065727479000000"
+    "000000000007737472696e67000000000676616c756500000000000000000000000006"
+    "717565727900000000132a417274733a3a5472616465724f6666657200000000020000"
+    "0000000000000000000000000000000000000000000d417274733a3a4f626a65637400"
+    "000000000000000e0000000e5f6c6f6f6b75704d6574686f6400000000056c6f6e6700"
+    "000000020000000100000010417274733a3a4d6574686f64446566000000000a6d6574"
+    "686f644465660000000000000000000000000f5f696e746572666163654e616d650000"
+    "000007737472696e6700000000020000000000000000000000105f7175657279496e74"
+    "6572666163650000000013417274733a3a496e74657266616365446566000000000200"
+    "00000100000007737472696e6700000000056e616d650000000000000000000000000b"
+    "5f717565727954797065000000000e417274733a3a5479706544656600000000020000"
+    "000100000007737472696e6700000000056e616d650000000000000000000000000b5f"
+    "7175657279456e756d000000000e417274733a3a456e756d4465660000000002000000"
+    "0100000007737472696e6700000000056e616d650000000000000000000000000a5f74"
+    "6f537472696e670000000007737472696e670000000002000000000000000000000012"
+    "5f6973436f6d70617469626c65576974680000000008626f6f6c65616e000000000200"
+    "00000100000007737472696e67000000000e696e746572666163656e616d6500000000"
+    "00000000000000000c5f636f707952656d6f74650000000005766f6964000000000200"
+    "000000000000000000000b5f75736552656d6f74650000000005766f69640000000002"
+    "00000000000000000000000f5f72656c6561736552656d6f74650000000005766f6964"
+    "000000000200000000000000000000000a5f6164644368696c64000000000773747269"
+    "6e67000000000200000002000000076f626a65637400000000066368696c6400000000"
+    "0000000007737472696e6700000000056e616d650000000000000000000000000d5f72"
+    "656d6f76654368696c640000000008626f6f6c65616e00000000020000000100000007"
+    "737472696e6700000000056e616d650000000000000000000000000a5f676574436869"
+    "6c6400000000076f626a65637400000000020000000100000007737472696e67000000"
+    "00056e616d650000000000000000000000000f5f71756572794368696c6472656e0000"
+    "0000082a737472696e6700000000020000000000000000000000010000000c5f666c6f"
+    "7753797374656d0000000011417274733a3a466c6f7753797374656d00000000120000"
+    "0000000000000000000000000000"
 );
Index: mcop/core.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/core.h,v
retrieving revision 1.49
diff -u -u -r1.49 core.h
--- mcop/core.h	2000/09/30 12:30:13	1.49
+++ mcop/core.h	2000/09/30 19:26:40
@@ -606,6 +606,7 @@
 	virtual void connectObject(Arts::Object sourceObject, const std::string& sourcePort, Arts::Object destObject, const std::string& destPort) = 0;
 	virtual void disconnectObject(Arts::Object sourceObject, const std::string& sourcePort, Arts::Object destObject, const std::string& destPort) = 0;
 	virtual Arts::AttributeType queryFlags(Arts::Object node, const std::string& port) = 0;
+	virtual void setFloatValue(Arts::Object node, const std::string& port, float value) = 0;
 	virtual Arts::FlowSystemReceiver createReceiver(Arts::Object destObject, const std::string& destPort, Arts::FlowSystemSender sender) = 0;
 };
 
@@ -621,6 +622,7 @@
 	void connectObject(Arts::Object sourceObject, const std::string& sourcePort, Arts::Object destObject, const std::string& destPort);
 	void disconnectObject(Arts::Object sourceObject, const std::string& sourcePort, Arts::Object destObject, const std::string& destPort);
 	Arts::AttributeType queryFlags(Arts::Object node, const std::string& port);
+	void setFloatValue(Arts::Object node, const std::string& port, float value);
 	Arts::FlowSystemReceiver createReceiver(Arts::Object destObject, const std::string& destPort, Arts::FlowSystemSender sender);
 };
 
@@ -683,6 +685,7 @@
 	inline void connectObject(Arts::Object sourceObject, const std::string& sourcePort, Arts::Object destObject, const std::string& destPort);
 	inline void disconnectObject(Arts::Object sourceObject, const std::string& sourcePort, Arts::Object destObject, const std::string& destPort);
 	inline Arts::AttributeType queryFlags(Arts::Object node, const std::string& port);
+	inline void setFloatValue(Arts::Object node, const std::string& port, float value);
 	inline Arts::FlowSystemReceiver createReceiver(Arts::Object destObject, const std::string& destPort, Arts::FlowSystemSender sender);
 };
 
@@ -1145,6 +1148,11 @@
 inline Arts::AttributeType Arts::FlowSystem::queryFlags(Arts::Object node, const std::string& port)
 {
 	return _cache?static_cast<Arts::FlowSystem_base*>(_cache)->queryFlags(node, port):static_cast<Arts::FlowSystem_base*>(_method_call())->queryFlags(node, port);
+}
+
+inline void Arts::FlowSystem::setFloatValue(Arts::Object node, const std::string& port, float value)
+{
+	 _cache?static_cast<Arts::FlowSystem_base*>(_cache)->setFloatValue(node, port, value):static_cast<Arts::FlowSystem_base*>(_method_call())->setFloatValue(node, port, value);
 }
 
 inline Arts::FlowSystemReceiver Arts::FlowSystem::createReceiver(Arts::Object destObject, const std::string& destPort, Arts::FlowSystemSender sender)
Index: mcop/core.idl
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/core.idl,v
retrieving revision 1.29
diff -u -u -r1.29 core.idl
--- mcop/core.idl	2000/09/30 12:30:13	1.29
+++ mcop/core.idl	2000/09/30 19:26:42
@@ -458,10 +458,8 @@
 
 	/**
 	 * directly sets an audio port to a fixed value
-	 *
-	 * BCI: add on next big binary compatibility breakage ;)
 	 */
-	//void setFloatValue(object node, string port, float value);
+	void setFloatValue(object node, string port, float value);
 
 	/**
 	 * network transparent connections
Index: mcop/datapacket.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/datapacket.h,v
retrieving revision 1.9
diff -u -u -r1.9 datapacket.h
--- mcop/datapacket.h	2000/09/30 12:30:13	1.9
+++ mcop/datapacket.h	2000/09/30 19:26:42
@@ -25,11 +25,23 @@
 
 #include "buffer.h"
 
+/*
+ * BC - Status (2000-09-30): GenericDataChannel, DataPacket types
+ *
+ * These classes must be kept binary compatible, as the do interact with
+ * generated code. So you MUST KNOW WHAT YOU ARE DOING, once you start
+ * using the provided d pointers for extensions.
+ */
+
 namespace Arts {
+class GenericDataChannelPrivate;
 /*
  * The GenericDataChannel interface is to be implemented by the flowsystem
  */
 class GenericDataChannel {
+private:
+	GenericDataChannelPrivate *d;	// unused
+
 protected:
 	friend class GenericDataPacket;
 
@@ -49,6 +61,10 @@
 	 */
 	virtual void setPull(int packets, int capacity) = 0;
 	virtual void endPull() = 0;
+
+	GenericDataChannel() : d(0)
+	{
+	}
 };
 
 /*
@@ -65,7 +81,11 @@
  * The GenericDataPacket class provides the interface the flow system can
  * use to deal with data packets.
  */
+class GenericDataPacketPrivate;
+
 class GenericDataPacket {
+private:
+	GenericDataPacketPrivate *d;
 public:
 	/**
 	 * the channel this datapacket belongs to
@@ -121,7 +141,8 @@
 	}
 
 protected:
-	GenericDataPacket(GenericDataChannel *channel) :channel(channel),useCount(0)
+	GenericDataPacket(GenericDataChannel *channel)
+		:d(0),channel(channel),useCount(0)
 	{
 		//
 	}
Index: mcop/debug.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/debug.h,v
retrieving revision 1.1
diff -u -u -r1.1 debug.h
--- mcop/debug.h	2000/09/28 19:57:24	1.1
+++ mcop/debug.h	2000/09/30 19:26:43
@@ -28,6 +28,13 @@
 #ifndef _ARTSDEBUG_H_
 #define _ARTSDEBUG_H_
 
+/*
+ * BC - Status (2000-09-30): Debug.
+ *
+ * Collection class, no instance, no members. Thus binary compatible (will
+ * be kept).
+ */
+
 #define arts_fatal		::Arts::Debug::fatal
 #define arts_warning	::Arts::Debug::warning
 #define arts_info		::Arts::Debug::info
Index: mcop/dispatcher.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/dispatcher.cc,v
retrieving revision 1.42
diff -u -u -r1.42 dispatcher.cc
--- mcop/dispatcher.cc	2000/09/30 12:30:13	1.42
+++ mcop/dispatcher.cc	2000/09/30 19:26:45
@@ -25,7 +25,6 @@
 #include "startupmanager.h"
 #include "unixconnection.h"
 #include "tcpconnection.h"
-#include "ifacerepo_impl.h"
 #include "referenceclean.h"
 #include "core.h"
 #include "md5auth.h"
@@ -120,7 +119,6 @@
 	d->accept = 0;
 	d->loopbackConnection = new LoopbackConnection(serverID);
 
-	d->interfaceRepo = InterfaceRepo::_from_base(new InterfaceRepo_impl());
 	_flowSystem = 0;
 	referenceClean = new ReferenceClean(objectPool);
 
Index: mcop/dispatcher.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/dispatcher.h,v
retrieving revision 1.23
diff -u -u -r1.23 dispatcher.h
--- mcop/dispatcher.h	2000/08/11 03:19:53	1.23
+++ mcop/dispatcher.h	2000/09/30 19:26:46
@@ -36,6 +36,13 @@
 #include <vector>
 #include <list>
 
+/*
+ * BC - Status (2000-09-30): Dispatcher
+ *
+ * This is part of the public API (and interacts with generated code) and
+ * has to be kept binary compatible.
+ */
+
 namespace Arts {
 
 class ObjectReference;
Index: mcop/dynamicrequest.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/dynamicrequest.h,v
retrieving revision 1.2
diff -u -u -r1.2 dynamicrequest.h
--- mcop/dynamicrequest.h	2000/06/12 20:06:58	1.2
+++ mcop/dynamicrequest.h	2000/09/30 19:26:47
@@ -28,6 +28,12 @@
 #include <vector>
 #include <string>
 
+/*
+ * BC - Status (2000-09-30): DynamicRequest
+ *
+ * Has to be kept binary compatible (use d ptr).
+ */
+
 namespace Arts {
 
 class Object;
Index: mcop/extensionloader.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/extensionloader.h,v
retrieving revision 1.4
diff -u -u -r1.4 extensionloader.h
--- mcop/extensionloader.h	2000/05/17 22:48:20	1.4
+++ mcop/extensionloader.h	2000/09/30 19:26:47
@@ -27,6 +27,14 @@
 #include <list>
 #include <ltdl.h>
 
+/*
+ * BC - Status (2000-09-30): ExtensionLoader
+ *
+ * None of these classes is considered part of the public API. Do NOT use it
+ * in your apps. No binary compatibility guaranteed. (Interactions:
+ * ObjectManager, Startup stuff)
+ */
+
 namespace Arts {
 
 class ExtensionLoader {
Index: mcop/factory.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/factory.h,v
retrieving revision 1.8
diff -u -u -r1.8 factory.h
--- mcop/factory.h	2000/05/17 22:48:20	1.8
+++ mcop/factory.h	2000/09/30 19:26:47
@@ -27,9 +27,21 @@
 #include "object.h"
 #include "startupmanager.h"
 
+/*
+ * BC - Status (2000-09-30): Factory
+ *
+ * Will need to remain binary compatible (REGISTER_IMPLEMENTATION), d ptr
+ * provided for convenience, watch out for interactions with generated
+ * code.
+ */
+
 namespace Arts {
 
+class FactoryPrivate;
+
 class Factory : public StartupClass {
+private:
+	FactoryPrivate *d;
 public:
 	void startup();
 	void shutdown();
Index: mcop/flowsystem.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/flowsystem.h,v
retrieving revision 1.11
diff -u -u -r1.11 flowsystem.h
--- mcop/flowsystem.h	2000/05/17 22:48:20	1.11
+++ mcop/flowsystem.h	2000/09/30 19:26:48
@@ -26,16 +26,28 @@
 #include "object.h"
 #include "core.h"
 
+/*
+ * BC - Status (2000-09-30): ScheduleNode, FlowSystem, FlowSystem_impl,
+ *   RemoteScheduleNode
+ *
+ * Heavy interactions with generated and hand-written code, flowsystem binding
+ * and whatever. DO KEEP COMPATIBLE. Do not change the underlying IDL MODEL.
+ * d ptrs available.
+ */
+
 namespace Arts {
 
 class Object_skel;
 class Object_stub;
 class RemoteScheduleNode;
+class ScheduleNodePrivate;
 
 class ScheduleNode
 {
 private:
 	Object_base *_nodeObject;
+	ScheduleNodePrivate *d;	// unused
+
 public:
 	ScheduleNode(Object_base *object);
 	virtual ~ScheduleNode();
@@ -75,8 +87,12 @@
 	virtual void setFloatValue(std::string port, float value) = 0;
 };
 
+class RemoteScheduleNodePrivate;
+
 class RemoteScheduleNode : public ScheduleNode
 {
+private:
+	RemoteScheduleNodePrivate *d; // unused
 public:
 	RemoteScheduleNode(Object_stub *stub);
 
@@ -107,8 +123,12 @@
 	void setFloatValue(std::string port, float value);
 };
 
+class FlowSystem_impl_private;
+
 class FlowSystem_impl :virtual public FlowSystem_skel
 {
+private:
+	FlowSystem_impl_private *d;
 public:
 	virtual ScheduleNode *addObject(Object_skel *object) = 0;
 	virtual void removeObject(ScheduleNode *node) = 0;
Index: mcop/idlfilereg.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/idlfilereg.h,v
retrieving revision 1.7
diff -u -u -r1.7 idlfilereg.h
--- mcop/idlfilereg.h	2000/09/08 21:37:06	1.7
+++ mcop/idlfilereg.h	2000/09/30 19:26:48
@@ -26,6 +26,14 @@
 #include <string>
 #include "startupmanager.h"
 
+/*
+ * BC - Status (2000-09-30): IDLFileReg
+ *
+ * Will be kept binary compatible by NOT TOUCHING AT ALL. Do not change this.
+ * (Interaction with generated code). Add a new class if you need something
+ * else than this does.
+ */
+
 namespace Arts {
 
 class IDLFileReg : public StartupClass {
Index: mcop/ifacerepo_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/ifacerepo_impl.cc,v
retrieving revision 1.12
diff -u -u -r1.12 ifacerepo_impl.cc
--- mcop/ifacerepo_impl.cc	2000/09/28 22:42:37	1.12
+++ mcop/ifacerepo_impl.cc	2000/09/30 19:26:49
@@ -20,7 +20,66 @@
 
     */
 
-#include "ifacerepo_impl.h"
+#include "core.h"
+
+namespace Arts {
+
+class InterfaceRepo_impl : virtual public InterfaceRepo_skel {
+	class Entry {
+	public:
+		long moduleID;
+		Entry(long moduleID) : moduleID(moduleID)
+		{
+		}
+	};
+	class EnumEntry : public EnumDef, public Entry {
+	public:
+		EnumEntry(Buffer& stream, long moduleID)
+				:EnumDef(stream), Entry(moduleID)
+		{
+		}
+	};
+	class TypeEntry : public TypeDef, public Entry {
+	public:
+		TypeEntry(Buffer& stream, long moduleID)
+				:TypeDef(stream), Entry(moduleID)
+		{
+		}
+	};
+	class InterfaceEntry : public InterfaceDef, public Entry {
+	public:
+		InterfaceEntry(Buffer& stream, long moduleID)
+				:InterfaceDef(stream), Entry(moduleID)
+		{
+		};
+	};
+
+	std::list<EnumEntry *> enums;
+	std::list<TypeEntry *> types;
+	std::list<InterfaceEntry *> interfaces;
+
+	long nextModuleID;
+
+	InterfaceDef queryInterfaceLocal(const std::string& name);
+public:
+
+	InterfaceRepo_impl();
+
+	long insertModule(const ModuleDef& newModule);
+	void removeModule(long moduleID);
+	InterfaceDef queryInterface(const std::string& name);
+	TypeDef queryType(const std::string& name);
+	EnumDef queryEnum(const std::string& name);
+
+	std::vector<std::string> *queryChildren(const std::string& name);
+	std::vector<std::string> *queryInterfaces();
+	std::vector<std::string> *queryTypes();
+	std::vector<std::string> *queryEnums();
+};
+
+REGISTER_IMPLEMENTATION(InterfaceRepo_impl);
+};
+
 #include "debug.h"
 #include <iostream>
 #include <stdio.h>
Index: mcop/iomanager.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/iomanager.h,v
retrieving revision 1.11
diff -u -u -r1.11 iomanager.h
--- mcop/iomanager.h	2000/08/27 08:11:26	1.11
+++ mcop/iomanager.h	2000/09/30 19:26:49
@@ -20,6 +20,16 @@
 
     */
 
+/*
+ * BC - Status (2000-09-30):
+ *   BINARY COMPATIBLE: IONotify, TimeNotify, IOManager
+ *   NO BC FOR: TimeWatcher, IOWatchFD, StdIOManager
+ *
+ * Whereas the first three are part of the Interface (i.e. DEFINITELY to be
+ * kept binary compatible), the next three are part of the implementation
+ * in libmcop and subject to any kind of change.
+ */
+
 #ifndef IOMANAGER_H
 #define IOMANAGER_H
 
Index: mcop/loopback.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/loopback.h,v
retrieving revision 1.1
diff -u -u -r1.1 loopback.h
--- mcop/loopback.h	2000/06/12 23:19:10	1.1
+++ mcop/loopback.h	2000/09/30 19:26:49
@@ -3,6 +3,13 @@
 
 #include "connection.h"
 
+/*
+ * BC - Status (2000-09-30): LoopbackConnection
+ *
+ * Not part of the public API. Do NOT use it in your apps. No binary
+ * compatibility guaranteed.
+ */
+
 namespace Arts {
 
 class LoopbackConnection : public Connection
Index: mcop/mcopconfig.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/mcopconfig.h,v
retrieving revision 1.3
diff -u -u -r1.3 mcopconfig.h
--- mcop/mcopconfig.h	2000/05/17 22:48:20	1.3
+++ mcop/mcopconfig.h	2000/09/30 19:26:50
@@ -20,6 +20,12 @@
 
     */
 
+/*
+ * BC - Status (2000-09-30): MCOPConfig
+ *
+ * Is guaranteed to stay binary compatible. d ptr provided.
+ */
+
 #ifndef MCOPCONFIG_H
 #define MCOPCONFIG_H
 
@@ -27,7 +33,10 @@
 
 namespace Arts {
 
+class MCOPConfigPrivate;
 class MCOPConfig {
+private:
+	MCOPConfigPrivate *d;  // unused
 protected:
 	std::string filename;
 
Index: mcop/mcoputils.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/mcoputils.h,v
retrieving revision 1.9
diff -u -u -r1.9 mcoputils.h
--- mcop/mcoputils.h	2000/05/17 22:48:20	1.9
+++ mcop/mcoputils.h	2000/09/30 19:26:50
@@ -20,6 +20,13 @@
 
     */
 
+/*
+ * BC - Status (2000-09-30): MCOPUtils
+ *
+ * Collection class for all kinds of utility functions. BC, since never
+ * instanciated.
+ */
+
 #ifndef MCOPUTILS_H
 #define MCOPUTILS_H
 
Index: mcop/md5.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/md5.h,v
retrieving revision 1.2
diff -u -u -r1.2 md5.h
--- mcop/md5.h	2000/03/24 18:48:15	1.2
+++ mcop/md5.h	2000/09/30 19:26:50
@@ -20,6 +20,12 @@
 
     */
 
+/*
+ * BC - Status (2000-09-30): MD5sum
+ *
+ * No binary compatibility guaranteed (part of Dispatcher's security model).
+ */
+
 #ifndef MD5_H
 #define MD5_H
 
Index: mcop/md5auth.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/md5auth.h,v
retrieving revision 1.4
diff -u -u -r1.4 md5auth.h
--- mcop/md5auth.h	2000/03/24 18:48:15	1.4
+++ mcop/md5auth.h	2000/09/30 19:26:51
@@ -20,6 +20,12 @@
 
     */
 
+/*
+ * BC - Status (2000-09-30): md5_*
+ *
+ * No guarantees - do not use.
+ */
+
 #ifndef MD5_AUTH_H
 #define MD5_AUTH_H
 
Index: mcop/namedstore.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/namedstore.h,v
retrieving revision 1.1
diff -u -u -r1.1 namedstore.h
--- mcop/namedstore.h	2000/08/11 12:17:46	1.1
+++ mcop/namedstore.h	2000/09/30 19:26:51
@@ -3,6 +3,14 @@
 #include <vector>
 #include "stdio.h"
 
+/*
+ * BC - Status (2000-09-30): NamedStore
+ *
+ * None of these classes is considered part of the public API. Do NOT use it
+ * in your apps. These are part of the implementation of object.cc and not
+ * to be used elsewhere.
+ */
+
 namespace Arts {
 
 /**
Index: mcop/notification.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/notification.h,v
retrieving revision 1.3
diff -u -u -r1.3 notification.h
--- mcop/notification.h	2000/05/17 22:48:20	1.3
+++ mcop/notification.h	2000/09/30 19:26:51
@@ -27,10 +27,23 @@
 
 namespace Arts {
 
+/*
+ * BC - Status (2000-09-30): Notification, NotificationClient,
+ *   NotificationManager
+ *
+ * All need to be kept BC, NotificationManager with usual d ptr.
+ *
+ * Notifications have to be FAST. Currently, they use ID, data & receiver.
+ * However, there may be future extensions. For this, one more internal
+ * field is provided. Set it to ZERO currently when sending notifications.
+ */
+
+
 struct Notification {
 	class NotificationClient *receiver;
 	int ID;
 	void *data;
+	void *internal;		/* handle with care, equivalent to private d ptr */
 };
 
 class NotificationClient {
@@ -38,7 +51,10 @@
 	virtual void notify(const Notification& wm);
 };
 
+class NotificationManagerPrivate;
 class NotificationManager {
+private:
+	NotificationManagerPrivate *d;		// unused
 protected:
 	std::queue<Notification> todo;
 	static NotificationManager *instance;
Index: mcop/object.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/object.h,v
retrieving revision 1.36
diff -u -u -r1.36 object.h
--- mcop/object.h	2000/09/28 21:14:26	1.36
+++ mcop/object.h	2000/09/30 19:26:53
@@ -31,6 +31,16 @@
 #include <map>
 #include <list>
 
+/*
+ * BC - Status (2000-09-30): Object_base, Object_skel, Object_stub
+ *
+ * All of them have to be kept binary compatible carefully, due to interaction
+ * with generated code. There are d ptrs in _skel and _stub, NOT TO BE USED
+ * NORMALLY. Normally, do use _internalData instead, as this is much faster
+ * than creating two d objects per MCOP implementation/stub. Handle with care.
+ */
+
+
 namespace Arts {
 /* custom dispatching functions */
 
@@ -194,9 +204,12 @@
 class MethodDef;
 
 
+class Object_skel_private;
+
 class Object_skel : virtual public Object_base {
 private:
 	friend class Object_base;
+	Object_skel_private *d;		// do not use until there is a very big problem
 
 	long _objectID;
 
@@ -272,9 +285,13 @@
 	std::vector<std::string> * _queryChildren();
 };
 
+class Object_stub_private;
+
 class Object_stub : virtual public Object_base {
 protected:
 	friend class Object_base;
+
+	Object_stub_private *d;		// do not use until there is a very big problem
 
 	long _objectID,_lookupCacheRandom;
 	Connection *_connection;
Index: mcop/objectmanager.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/objectmanager.h,v
retrieving revision 1.10
diff -u -u -r1.10 objectmanager.h
--- mcop/objectmanager.h	2000/06/04 18:04:20	1.10
+++ mcop/objectmanager.h	2000/09/30 19:26:53
@@ -27,6 +27,13 @@
 #include "factory.h"
 #include <list>
 
+/*
+ * BC - Status (2000-09-30): ObjectManager
+ *
+ * Keep binary compatible (since accessible via ::the()), use d ptr when
+ * changing it.
+ */
+
 namespace Arts {
 
 class Object;
Index: mcop/pool.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/pool.h,v
retrieving revision 1.7
diff -u -u -r1.7 pool.h
--- mcop/pool.h	2000/08/11 12:17:46	1.7
+++ mcop/pool.h	2000/09/30 19:26:53
@@ -23,6 +23,16 @@
 #ifndef ARTS_POOL_H
 #define ARTS_POOL_H
 
+
+/*
+ * BC - Status (2000-09-30): Pool<type>
+ *
+ * Needs to be kept binary compatible by NOT TOUCHING. When you want something
+ * else, write a fresh one (used as part of Arts::Dispatcher, thus changing
+ * this breaks Arts::Dispatcher binary compatibility).
+ */
+
+
 /**
  * A pool object of the type T keeps a pool of T* pointers, that are numbered.
  *
Index: mcop/reference.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/reference.h,v
retrieving revision 1.21
diff -u -u -r1.21 reference.h
--- mcop/reference.h	2000/08/11 13:18:45	1.21
+++ mcop/reference.h	2000/09/30 19:26:54
@@ -18,6 +18,14 @@
     Boston, MA 02111-1307, USA.
 */
 
+/*
+ * BC - Status (2000-09-30): Reference, SubClass, Object, DynamicCast.
+ *
+ * Part of the public API. Must be kept binary compatible by NOT TOUCHING
+ * AT ALL. Interaction with generated and written code.
+ */
+
+
 #ifndef MCOP_REFERENCE_H
 #define MCOP_REFERENCE_H
 
Index: mcop/referenceclean.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/referenceclean.h,v
retrieving revision 1.4
diff -u -u -r1.4 referenceclean.h
--- mcop/referenceclean.h	2000/09/30 12:30:13	1.4
+++ mcop/referenceclean.h	2000/09/30 19:26:54
@@ -20,6 +20,13 @@
 
     */
 
+/*
+ * BC - Status (2000-09-30): ReferenceClean
+ *
+ * None of these classes is considered part of the public API. Do NOT use it
+ * in your apps. Can be changed arbitarily even non BC.
+ */
+
 #ifndef REFERENCECLEAN_H
 #define REFERENCECLEAN_H
 
Index: mcop/socketconnection.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/socketconnection.h,v
retrieving revision 1.6
diff -u -u -r1.6 socketconnection.h
--- mcop/socketconnection.h	2000/05/17 22:48:20	1.6
+++ mcop/socketconnection.h	2000/09/30 19:26:55
@@ -20,6 +20,13 @@
 
     */
 
+/*
+ * BC - Status (2000-09-30): SocketConnection
+ *
+ * None of these classes is considered part of the public API. Do NOT use it
+ * in your apps. No BC guaranteed.
+ */
+
 #ifndef SOCKETCONNECTION_H
 #define SOCKETCONNECTION_H
 
Index: mcop/startupmanager.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/startupmanager.h,v
retrieving revision 1.6
diff -u -u -r1.6 startupmanager.h
--- mcop/startupmanager.h	2000/05/17 22:48:20	1.6
+++ mcop/startupmanager.h	2000/09/30 19:26:55
@@ -25,6 +25,16 @@
 
 #include <list>
 
+/*
+ * BC - Status (2000-09-30): StartupClass, StartupManager.
+ *
+ * The class needs to be kept BC, as the startup system bases on inheritance
+ * and virtual functions. Do not change.
+ *
+ * The manager is a collection class without nonstatic data, so no BC issues
+ * here.
+ */
+
 namespace Arts {
 
 class StartupClass {
Index: mcop/tcpconnection.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/tcpconnection.h,v
retrieving revision 1.7
diff -u -u -r1.7 tcpconnection.h
--- mcop/tcpconnection.h	2000/05/17 22:48:20	1.7
+++ mcop/tcpconnection.h	2000/09/30 19:26:55
@@ -20,6 +20,13 @@
 
     */
 
+/*
+ * BC - Status (2000-09-30): TCPConnection
+ *
+ * Not part of the public API. Do NOT use it in your apps. Binary incompatible
+ * changes allowed.
+ */
+
 #ifndef TCPCONNECTION_H
 #define TCPCONNECTION_H
 
Index: mcop/tcpserver.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/tcpserver.h,v
retrieving revision 1.6
diff -u -u -r1.6 tcpserver.h
--- mcop/tcpserver.h	2000/08/11 02:02:25	1.6
+++ mcop/tcpserver.h	2000/09/30 19:26:55
@@ -26,6 +26,13 @@
 #include <string>
 #include "iomanager.h"
 
+/*
+ * BC - Status (2000-09-30): TCPServer
+ *
+ * Not part of the public API. Do NOT use it in your apps. Binary incompatible
+ * changes allowed.
+ */
+
 namespace Arts {
 
 class Dispatcher;
Index: mcop/tmpglobalcomm.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/tmpglobalcomm.cc,v
retrieving revision 1.3
diff -u -u -r1.3 tmpglobalcomm.cc
--- mcop/tmpglobalcomm.cc	2000/05/17 22:48:20	1.3
+++ mcop/tmpglobalcomm.cc	2000/09/30 19:26:56
@@ -29,6 +29,8 @@
 using namespace std;
 using namespace Arts;
 
+namespace Arts {
+
 class TmpGlobalComm_impl : virtual public TmpGlobalComm_skel {
 public:
 	bool put(const string& variable, const string& value)
@@ -76,3 +78,5 @@
 };
 
 REGISTER_IMPLEMENTATION(TmpGlobalComm_impl);
+
+};
Index: mcop/trader_impl.cc
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/trader_impl.cc,v
retrieving revision 1.4
diff -u -u -r1.4 trader_impl.cc
--- mcop/trader_impl.cc	2000/09/28 22:42:37	1.4
+++ mcop/trader_impl.cc	2000/09/30 19:26:57
@@ -10,6 +10,8 @@
 using namespace Arts;
 using namespace std;
 
+namespace Arts {
+
 // TraderRestriction
 struct TraderRestriction {
 	TraderRestriction(const string& key, const string& value)
@@ -45,6 +47,8 @@
 	vector<TraderOffer> *query();
 };
 
+REGISTER_IMPLEMENTATION(TraderQuery_impl);
+
 // TraderOffer
 class TraderOffer_impl : virtual public TraderOffer_skel {
 private:
@@ -61,6 +65,8 @@
 	vector<string>* getProperty(const string& name);
 };
 
+};
+
 // TraderQuery
 //----------------------------------------------------------------------------
 void TraderQuery_impl::supports(const string& property, const string& value)
@@ -73,8 +79,6 @@
 	return TraderHelper::the()->doQuery(restrictions);
 }
 
-REGISTER_IMPLEMENTATION(TraderQuery_impl);
-
 // TraderOffer
 //----------------------------------------------------------------------------
 TraderOffer_impl::TraderOffer_impl(const string& interfaceName,
@@ -275,6 +279,8 @@
 	}
 }
 
+namespace Arts {
+
 // trader shutdown
 class TraderShutdown :public StartupClass
 {
@@ -284,3 +290,5 @@
 };
 
 static TraderShutdown traderShutdown;
+
+};
Index: mcop/type.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/type.h,v
retrieving revision 1.6
diff -u -u -r1.6 type.h
--- mcop/type.h	2000/05/28 16:39:18	1.6
+++ mcop/type.h	2000/09/30 19:26:57
@@ -25,6 +25,12 @@
 
 #include "buffer.h"
 
+/*
+ * BC - Status (2000-09-30): Type
+ *
+ * Keep binary compatible. DO NOT TOUCH, DO NOT CHANGE.
+ */
+
 namespace Arts {
 
 /**
Index: mcop/unixconnection.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/unixconnection.h,v
retrieving revision 1.5
diff -u -u -r1.5 unixconnection.h
--- mcop/unixconnection.h	2000/05/17 22:48:20	1.5
+++ mcop/unixconnection.h	2000/09/30 19:26:57
@@ -20,6 +20,13 @@
 
     */
 
+/*
+ * BC - Status (2000-09-30): UnixConnection
+ *
+ * Not part of the public API. Do NOT use it in your apps. Can change, even
+ * binary incompatible.
+ */
+
 #ifndef UNIXCONNECTION_H
 #define UNIXCONNECTION_H
 
Index: mcop/unixserver.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/unixserver.h,v
retrieving revision 1.6
diff -u -u -r1.6 unixserver.h
--- mcop/unixserver.h	2000/05/17 22:48:20	1.6
+++ mcop/unixserver.h	2000/09/30 19:26:57
@@ -20,6 +20,13 @@
 
     */
 
+/*
+ * BC - Status (2000-09-30): UnixServer
+ *
+ * Not part of the public API. Do NOT use it in your apps. Can change, even
+ * binary incompatible.
+ */
+
 #ifndef UNIXSERVER_H
 #define UNIXSERVER_H
 
Index: mcop/weakreference.h
===================================================================
RCS file: /home/kde/kdelibs/arts/mcop/weakreference.h,v
retrieving revision 1.3
diff -u -u -r1.3 weakreference.h
--- mcop/weakreference.h	2000/06/24 09:34:58	1.3
+++ mcop/weakreference.h	2000/09/30 19:26:57
@@ -1,3 +1,10 @@
+/*
+ * BC - Status (2000-09-30): WeakReference(Base)
+ *
+ * Has to be kept binary compatible by not touching it. Add a new class if
+ * you need something else.
+ */
+
 #ifndef MCOP_WEAKREFERENCE_H
 #define MCOP_WEAKREFERENCE_H
 
Index: qtmcop/qiomanager.h
===================================================================
RCS file: /home/kde/kdelibs/arts/qtmcop/qiomanager.h,v
retrieving revision 1.4
diff -u -u -r1.4 qiomanager.h
--- qtmcop/qiomanager.h	2000/05/17 22:48:20	1.4
+++ qtmcop/qiomanager.h	2000/09/30 19:26:58
@@ -23,6 +23,14 @@
 
     */
 
+/*
+ * BC - Status (2000-09-30): QIOWatch, QTimeWatch, QIOManager.
+ *
+ * WARNING: these classes are supplied, if you want to *experiment* with them.
+ * However, they are probably *NOT STABLE*, and will not stay binary
+ * compatible, maybe not even stay present in further versions.
+ */
+
 #ifndef QIOMANAGER_H
 #define QIOMANAGER_H
 

