[kaffe] CVS kaffe (robilad): added missing core files

Kaffe CVS cvs-commits at kaffe.org
Mon Jul 17 12:35:38 PDT 2006


PatchSet 7363 
Date: 2006/07/17 19:16:03
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
added missing core files

Members: 
	libraries/javalib/tritonus-sound/org/tritonus/core/Service.java:INITIAL->1.1 
	libraries/javalib/tritonus-sound/org/tritonus/core/TAudioConfig.java:INITIAL->1.1 
	libraries/javalib/tritonus-sound/org/tritonus/core/TInit.java:INITIAL->1.1 
	libraries/javalib/tritonus-sound/org/tritonus/core/TMidiConfig.java:INITIAL->1.1 
	libraries/javalib/tritonus-sound/org/tritonus/core/package.html:INITIAL->1.1 

===================================================================
Checking out kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/Service.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/Service.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/Service.java	Mon Jul 17 19:35:37 2006
@@ -0,0 +1,191 @@
+/*
+ *	Service.java
+ */
+
+/*
+ *  Copyright (c) 2000 by Matthias Pfisterer <Matthias.Pfisterer at gmx.de>
+ *
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU Library General Public License as published
+ *   by the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU Library General Public License for more details.
+ *
+ *   You should have received a copy of the GNU Library General Public
+ *   License along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+
+package	org.tritonus.core;
+
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.tritonus.share.ArraySet;
+import org.tritonus.share.TDebug;
+
+
+
+public class Service
+{
+	private static final String	BASE_NAME = "META-INF/services/";
+
+
+	/**	Determines if the order of service providers is reversed.
+		If this is true, the Iterator returned by providers(Class)
+		iterates through the service provider classes backwards.
+		This means that service providers that are in the user class
+		path are first, then service providers in the extension class
+		path, then those in the boot class path.
+		This behaviour has the advantage that 'built-in' providers
+		(those in the boot class path) can be 'shadowed' by
+		providers in the extension and user class path.
+	 */
+	private static final boolean	REVERSE_ORDER = true;
+
+
+
+	public static Iterator providers(Class cls)
+	{
+		if (TDebug.TraceService) { TDebug.out("Service.providers(): begin"); }
+		String	strFullName = BASE_NAME + cls.getName();
+		if (TDebug.TraceService) { TDebug.out("Service.providers(): full name: " + strFullName); }
+		List	instancesList = createInstancesList(strFullName);
+		Iterator	iterator = instancesList.iterator();
+		if (TDebug.TraceService) { TDebug.out("Service.providers(): end"); }
+		return iterator;
+	}
+
+
+
+	private static List createInstancesList(String strFullName)
+	{
+		if (TDebug.TraceService) { TDebug.out("Service.createInstancesList(): begin"); }
+		List	providers = new ArrayList();
+		Iterator	classNames = createClassNames(strFullName);
+		if (classNames != null)
+		{
+			while (classNames.hasNext())
+			{
+				String	strClassName = (String) classNames.next();
+				if (TDebug.TraceService) { TDebug.out("Service.createInstancesList(): Class name: " + strClassName); }
+				try
+				{
+					ClassLoader	systemClassLoader = ClassLoader.getSystemClassLoader();
+					Class	cls = Class.forName(strClassName, true, systemClassLoader);
+					if (TDebug.TraceService) { TDebug.out("Service.createInstancesList(): now creating instance of " + cls); }
+					Object	instance = cls.newInstance();
+					if (REVERSE_ORDER)
+					{
+						providers.add(0, instance);
+					}
+					else
+					{
+						providers.add(instance);
+					}
+				}
+				catch (ClassNotFoundException e)
+				{
+					if (TDebug.TraceService || TDebug.TraceAllExceptions) { TDebug.out(e); }
+				}
+				catch (InstantiationException e)
+				{
+					if (TDebug.TraceService || TDebug.TraceAllExceptions) { TDebug.out(e); }
+				}
+				catch (IllegalAccessException e)
+				{
+					if (TDebug.TraceService || TDebug.TraceAllExceptions) { TDebug.out(e); }
+				}
+				catch (Throwable e)
+				{
+					if (TDebug.TraceService || TDebug.TraceAllExceptions) { TDebug.out(e); }
+				}
+			}
+		}
+		if (TDebug.TraceService) { TDebug.out("Service.createInstancesList(): end"); }
+		return providers;
+	}
+
+
+
+	private static Iterator createClassNames(String strFullName)
+	{
+		if (TDebug.TraceService) { TDebug.out("Service.createClassNames(): begin"); }
+		Set	providers = new ArraySet();
+		Enumeration	configs = null;
+		try
+		{
+			configs = ClassLoader.getSystemResources(strFullName);
+		}
+		catch (IOException e)
+		{
+			if (TDebug.TraceService || TDebug.TraceAllExceptions) { TDebug.out(e); }
+		}
+		if (configs != null)
+		{
+			while (configs.hasMoreElements())
+			{
+				URL	configFileUrl = (URL) configs.nextElement();
+				if (TDebug.TraceService) { TDebug.out("Service.createClassNames(): config: " + configFileUrl); }
+				InputStream	input = null;
+				try
+				{
+					input = configFileUrl.openStream();
+				}
+				catch (IOException e)
+				{
+					if (TDebug.TraceService || TDebug.TraceAllExceptions) { TDebug.out(e); }
+				}
+				if (input != null)
+				{
+					BufferedReader	reader = new BufferedReader(new InputStreamReader(input));
+					try
+					{
+						String	strLine = reader.readLine();
+						while (strLine != null)
+						{
+							strLine = strLine.trim();
+							int	nPos = strLine.indexOf('#');
+							if (nPos >= 0)
+							{
+								strLine = strLine.substring(0, nPos);
+							}
+							if (strLine.length() > 0)
+							{
+								providers.add(strLine);
+								if (TDebug.TraceService) { TDebug.out("Service.createClassNames(): adding class name: " + strLine); }
+							}
+							strLine = reader.readLine();
+						}
+					}
+					catch (IOException e)
+					{
+						if (TDebug.TraceService || TDebug.TraceAllExceptions) { TDebug.out(e); }
+					}
+				}
+			}
+		}
+		Iterator	iterator = providers.iterator();
+		if (TDebug.TraceService) { TDebug.out("Service.createClassNames(): end"); }
+		return iterator;
+	}
+}
+
+
+
+/*** Service.java ***/
===================================================================
Checking out kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/TAudioConfig.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/TAudioConfig.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/TAudioConfig.java	Mon Jul 17 19:35:38 2006
@@ -0,0 +1,272 @@
+/*
+ *	TAudioConfig.java
+ */
+
+/*
+ *  Copyright (c) 1999 - 2001 by Matthias Pfisterer <Matthias.Pfisterer at gmx.de>
+ *
+ *
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU Library General Public License as published
+ *   by the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU Library General Public License for more details.
+ *
+ *   You should have received a copy of the GNU Library General Public
+ *   License along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+
+package	org.tritonus.core;
+
+
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.sound.sampled.Mixer;
+import javax.sound.sampled.spi.AudioFileReader;
+import javax.sound.sampled.spi.AudioFileWriter;
+import javax.sound.sampled.spi.FormatConversionProvider;
+import javax.sound.sampled.spi.MixerProvider;
+
+import org.tritonus.core.TInit.ProviderRegistrationAction;
+import org.tritonus.share.ArraySet;
+
+
+/** TODO:
+ */
+public class TAudioConfig
+{
+	private static Set		sm_audioFileWriters = null;
+	private static Set		sm_audioFileReaders = null;
+	private static Set		sm_formatConversionProviders = null;
+	private static Set		sm_mixerProviders = null;
+
+	private static Mixer.Info	sm_defaultMixerInfo;
+
+
+
+	/** Constructor to prevent instantiation.
+	 */
+	private TAudioConfig()
+	{
+	}
+
+	private static void registerAudioFileReaders()
+	{
+		ProviderRegistrationAction	action = null;
+		action = new ProviderRegistrationAction()
+			{
+				public void register(Object obj)
+					throws	Exception
+					{
+						AudioFileReader	provider = (AudioFileReader) obj;
+						TAudioConfig.addAudioFileReader(provider);
+					}
+			};
+		TInit.registerClasses(AudioFileReader.class, action);
+	}
+
+
+
+	private static void registerAudioFileWriters()
+	{
+		ProviderRegistrationAction	action = null;
+		action = new ProviderRegistrationAction()
+			{
+				public void register(Object obj)
+					throws	Exception
+					{
+						AudioFileWriter	provider = (AudioFileWriter) obj;
+						TAudioConfig.addAudioFileWriter(provider);
+					}
+			};
+		TInit.registerClasses(AudioFileWriter.class, action);
+	}
+
+
+
+	private static void registerFormatConversionProviders()
+	{
+		ProviderRegistrationAction	action = null;
+		action = new ProviderRegistrationAction()
+			{
+				public void register(Object obj)
+					throws	Exception
+					{
+						FormatConversionProvider	provider = (FormatConversionProvider) obj;
+						TAudioConfig.addFormatConversionProvider(provider);
+					}
+			};
+		TInit.registerClasses(FormatConversionProvider.class, action);
+	}
+
+
+
+	private static void registerMixerProviders()
+	{
+		ProviderRegistrationAction	action = null;
+		action = new ProviderRegistrationAction()
+			{
+				public void register(Object obj)
+					throws	Exception
+					{
+						MixerProvider	provider = (MixerProvider) obj;
+						TAudioConfig.addMixerProvider(provider);
+					}
+			};
+		TInit.registerClasses(MixerProvider.class, action);
+	}
+
+
+	////////////////////////////////////////////////////////////////
+
+
+	public static synchronized void addAudioFileReader(AudioFileReader provider)
+	{
+		getAudioFileReadersImpl().add(provider);
+	}
+
+
+
+	public static synchronized void removeAudioFileReader(AudioFileReader provider)
+	{
+		getAudioFileReadersImpl().remove(provider);
+	}
+
+
+
+	public static synchronized Iterator getAudioFileReaders()
+	{
+		return getAudioFileReadersImpl().iterator();
+	}
+
+
+
+	private static synchronized Set getAudioFileReadersImpl()
+	{
+		if (sm_audioFileReaders == null)
+		{
+			sm_audioFileReaders = new ArraySet();
+			registerAudioFileReaders();
+		}
+		return sm_audioFileReaders;
+	}
+
+
+
+	public static synchronized void addAudioFileWriter(AudioFileWriter provider)
+	{
+		getAudioFileWritersImpl().add(provider);
+	}
+
+
+
+	public static synchronized void removeAudioFileWriter(AudioFileWriter provider)
+	{
+		getAudioFileWritersImpl().remove(provider);
+	}
+
+
+
+	public static synchronized Iterator getAudioFileWriters()
+	{
+		return getAudioFileWritersImpl().iterator();
+	}
+
+
+
+	private static synchronized Set getAudioFileWritersImpl()
+	{
+		if (sm_audioFileWriters == null)
+		{
+			sm_audioFileWriters = new ArraySet();
+			registerAudioFileWriters();
+		}
+		return sm_audioFileWriters;
+	}
+
+
+
+	public static synchronized void addFormatConversionProvider(FormatConversionProvider provider)
+	{
+		getFormatConversionProvidersImpl().add(provider);
+	}
+
+
+
+	public static synchronized void removeFormatConversionProvider(FormatConversionProvider provider)
+	{
+		getFormatConversionProvidersImpl().remove(provider);
+	}
+
+
+
+	public static synchronized Iterator getFormatConversionProviders()
+	{
+		return getFormatConversionProvidersImpl().iterator();
+	}
+
+
+
+	private static synchronized Set getFormatConversionProvidersImpl()
+	{
+		if (sm_formatConversionProviders == null)
+		{
+			sm_formatConversionProviders = new ArraySet();
+			registerFormatConversionProviders();
+		}
+		return sm_formatConversionProviders;
+	}
+
+
+
+	public static synchronized void addMixerProvider(MixerProvider provider)
+	{
+		getMixerProvidersImpl().add(provider);
+	}
+
+
+
+	public static synchronized void removeMixerProvider(MixerProvider provider)
+	{
+		getMixerProvidersImpl().remove(provider);
+	}
+
+
+
+	public static synchronized Iterator getMixerProviders()
+	{
+		return getMixerProvidersImpl().iterator();
+	}
+
+
+	private static synchronized Set getMixerProvidersImpl()
+	{
+		if (sm_mixerProviders == null)
+		{
+			sm_mixerProviders = new ArraySet();
+			registerMixerProviders();
+		}
+		return sm_mixerProviders;
+	}
+
+
+
+	// TODO: a way to set the default mixer
+	public static Mixer.Info getDefaultMixerInfo()
+	{
+		return sm_defaultMixerInfo;
+	}
+
+}
+
+
+
+/*** TAudioConfig.java ***/
===================================================================
Checking out kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/TInit.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/TInit.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/TInit.java	Mon Jul 17 19:35:38 2006
@@ -0,0 +1,98 @@
+/*
+ *	TInit.java
+ */
+
+/*
+ *  Copyright (c) 1999 - 2001 by Matthias Pfisterer <Matthias.Pfisterer at gmx.de>
+ *
+ *
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU Library General Public License as published
+ *   by the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU Library General Public License for more details.
+ *
+ *   You should have received a copy of the GNU Library General Public
+ *   License along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+package	org.tritonus.core;
+
+import java.util.Iterator;
+
+import org.tritonus.share.TDebug;
+
+
+
+/** Helper methods for provider registration.
+ */
+public class TInit
+{
+	/** Constructor to prevent instantiation.
+	 */
+	private TInit()
+	{
+	}
+
+
+
+	/** Register all service providers of a certain type.
+	    This method retrieves instances of all service providers of
+	    the type given as providerClass. It registers them by
+	    calling action with the provider instance as actual parameter.
+
+	    @param providerClass Type of the service providers that should
+	    be registered. For instance, this could be the class object for
+	    javax.sound.sampled.spi.MixerProvider. However, the mechanism
+	    is not restricted to the Java Sound types of service providers.
+
+	    @param action A ProviderRegistrationAction that should to be
+	    called to register the service providers. Typically, this is
+	    something like adding the provider to a collection, but in
+	    theorie, could be anything.
+	*/
+	public static void registerClasses(Class providerClass,
+					    ProviderRegistrationAction action)
+	{
+		if (TDebug.TraceInit) { TDebug.out("TInit.registerClasses(): registering for: " + providerClass); }
+		Iterator	providers = Service.providers(providerClass);
+		if (providers != null)
+		{
+			while (providers.hasNext())
+			{
+				Object	provider = providers.next();
+				try
+				{
+					action.register(provider);
+				}
+				catch (Throwable e)
+				{
+					if (TDebug.TraceInit || TDebug.TraceAllExceptions) { TDebug.out(e); }
+				}
+			}
+		}
+	}
+
+
+
+	/** Action to be taken on registration of a provider.
+	    Strategy objects of this type has to be passed to
+	    {@link #registerClasses registerClasses}. The implementation
+	    is called for each provider that has to be registered.
+	 */
+	public static interface ProviderRegistrationAction
+	{
+		public void register(Object provider)
+			throws Exception;
+	}
+}
+
+
+
+/*** TInit.java ***/
===================================================================
Checking out kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/TMidiConfig.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/TMidiConfig.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/TMidiConfig.java	Mon Jul 17 19:35:38 2006
@@ -0,0 +1,364 @@
+/*
+ *	TMidiConfig.java
+ */
+
+/*
+ *  Copyright (c) 1999 by Matthias Pfisterer <Matthias.Pfisterer at gmx.de>
+ *
+ *
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU Library General Public License as published
+ *   by the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU Library General Public License for more details.
+ *
+ *   You should have received a copy of the GNU Library General Public
+ *   License along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+package	org.tritonus.core;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.sound.midi.MidiDevice;
+import javax.sound.midi.Sequencer;
+import javax.sound.midi.Synthesizer;
+import javax.sound.midi.spi.MidiDeviceProvider;
+import javax.sound.midi.spi.MidiFileReader;
+import javax.sound.midi.spi.MidiFileWriter;
+import javax.sound.midi.spi.SoundbankReader;
+
+import org.tritonus.core.TInit.ProviderRegistrationAction;
+import org.tritonus.share.ArraySet;
+import org.tritonus.share.TDebug;
+
+
+/** TODO:
+ */
+public class TMidiConfig
+{
+	private static Set		sm_midiDeviceProviders = null;
+	private static Set		sm_midiFileReaders = null;
+	private static Set		sm_midiFileWriters = null;
+	private static Set		sm_soundbankReaders = null;
+
+	private static MidiDevice.Info	sm_defaultMidiDeviceInfo = null;
+	private static MidiDevice.Info	sm_defaultSequencerInfo = null;
+	private static MidiDevice.Info	sm_defaultSynthesizerInfo = null;
+
+
+	static
+	{
+		init();
+	}
+
+	/** Constructor to prevent instantiation.
+	 */
+	private TMidiConfig()
+	{
+	}
+
+
+	/** Initialize the collections of providers and the default devices.
+	 */
+	private static void init()
+	{
+		// init providers from scanning the class path
+		// note: this already sets the default devices
+		getMidiDeviceProvidersImpl();
+		getMidiFileReadersImpl();
+		getMidiFileWritersImpl();
+		getSoundbankReadersImpl();
+		// now check properties for default devices
+		// ... TODO:
+	}
+
+
+
+	private static void registerMidiDeviceProviders()
+	{
+		ProviderRegistrationAction	action = null;
+		action = new ProviderRegistrationAction()
+			{
+				public void register(Object obj)
+					throws	Exception
+				{
+					MidiDeviceProvider	midiDeviceProvider = (MidiDeviceProvider) obj;
+					TMidiConfig.addMidiDeviceProvider(midiDeviceProvider);
+				}
+			};
+		TInit.registerClasses(MidiDeviceProvider.class, action);
+	}
+
+
+	
+	private static void registerMidiFileReaders()
+	{
+		ProviderRegistrationAction	action = null;
+		action = new ProviderRegistrationAction()
+			{
+				public void register(Object obj)
+					throws	Exception
+				{
+					MidiFileReader	provider = (MidiFileReader) obj;
+					TMidiConfig.addMidiFileReader(provider);
+				}
+			};
+		TInit.registerClasses(MidiFileReader.class, action);
+	}
+
+
+
+	private static void registerMidiFileWriters()
+	{
+		ProviderRegistrationAction	action = null;
+		action = new ProviderRegistrationAction()
+			{
+				public void register(Object obj)
+					throws	Exception
+				{
+					MidiFileWriter	provider = (MidiFileWriter) obj;
+					TMidiConfig.addMidiFileWriter(provider);
+				}
+			};
+		TInit.registerClasses(MidiFileWriter.class, action);
+	}
+
+
+
+	private static void registerSoundbankReaders()
+	{
+		ProviderRegistrationAction	action = null;
+		action = new ProviderRegistrationAction()
+			{
+				public void register(Object obj)
+					throws	Exception
+				{
+					SoundbankReader	provider = (SoundbankReader) obj;
+					TMidiConfig.addSoundbankReader(provider);
+				}
+			};
+		TInit.registerClasses(SoundbankReader.class, action);
+	}
+
+
+	//////////////////////////////////////////////////////////////////
+
+
+	public static synchronized void addMidiDeviceProvider(MidiDeviceProvider provider)
+	{
+		// TDebug.out("MidiDeviceProvider: " + provider);
+		getMidiDeviceProvidersImpl().add(provider);
+		if (getDefaultMidiDeviceInfo() == null ||
+		    getDefaultSynthesizerInfo() == null ||
+		    getDefaultSequencerInfo() == null)
+		{
+			// TDebug.out("hello");
+			MidiDevice.Info[]	infos = provider.getDeviceInfo();
+			// TDebug.out("#infos: " + infos.length);
+			for (int i = 0; i < infos.length; i++)
+			{
+				MidiDevice	device = null;
+				try
+				{
+					device = provider.getDevice(infos[i]);
+				}
+				catch (IllegalArgumentException e)
+				{
+					if (TDebug.TraceAllExceptions)
+					{
+						TDebug.out(e);
+					}
+				}
+				if (device instanceof Synthesizer)
+				{
+					if (getDefaultSynthesizerInfo() == null)
+					{
+						sm_defaultSynthesizerInfo = infos[i];
+					}
+				}
+				else if (device instanceof Sequencer)
+				{
+					if (getDefaultSequencerInfo() == null)
+					{
+						sm_defaultSequencerInfo = infos[i];
+					}
+				}
+				else
+				{
+					if (getDefaultMidiDeviceInfo() == null)
+					{
+						sm_defaultMidiDeviceInfo = infos[i];
+					}
+				}
+			}
+		}
+	}
+
+
+
+	public static synchronized void removeMidiDeviceProvider(MidiDeviceProvider provider)
+	{
+		getMidiDeviceProvidersImpl().remove(provider);
+		// TODO: change default infos
+	}
+
+
+
+	public static synchronized Iterator getMidiDeviceProviders()
+	{
+		return getMidiDeviceProvidersImpl().iterator();
+	}
+
+
+
+
+	private static synchronized Set getMidiDeviceProvidersImpl()
+	{
+		if (sm_midiDeviceProviders == null)
+		{
+			sm_midiDeviceProviders = new ArraySet();
+			registerMidiDeviceProviders();
+		}
+		return sm_midiDeviceProviders;
+	}
+
+
+
+
+	public static synchronized void addMidiFileReader(MidiFileReader reader)
+	{
+		if (TDebug.TraceMidiConfig)
+		{
+			TDebug.out("TMidiConfig.addMidiFileReader(): adding " + reader);
+		}
+		getMidiFileReadersImpl().add(reader);
+		if (TDebug.TraceMidiConfig)
+		{
+			TDebug.out("TMidiConfig.addMidiFileReader(): size " + sm_midiFileReaders.size());
+		}
+	}
+
+
+
+	public static synchronized void removeMidiFileReader(MidiFileReader reader)
+	{
+		getMidiFileReadersImpl().remove(reader);
+	}
+
+
+
+	public static synchronized Iterator getMidiFileReaders()
+	{
+		return getMidiFileReadersImpl().iterator();
+	}
+
+
+
+	private static synchronized Set getMidiFileReadersImpl()
+	{
+		if (sm_midiFileReaders == null)
+		{
+			sm_midiFileReaders = new ArraySet();
+			registerMidiFileReaders();
+		}
+		return sm_midiFileReaders;
+	}
+
+
+
+	public static synchronized void addMidiFileWriter(MidiFileWriter reader)
+	{
+		getMidiFileWritersImpl().add(reader);
+	}
+
+
+
+	public static synchronized void removeMidiFileWriter(MidiFileWriter reader)
+	{
+		getMidiFileWritersImpl().remove(reader);
+	}
+
+
+
+	public static synchronized Iterator getMidiFileWriters()
+	{
+		return getMidiFileWritersImpl().iterator();
+	}
+
+
+	private static synchronized Set getMidiFileWritersImpl()
+	{
+		if (sm_midiFileWriters == null)
+		{
+			sm_midiFileWriters = new ArraySet();
+			registerMidiFileWriters();
+		}
+		return sm_midiFileWriters;
+	}
+
+
+
+
+	public static synchronized void addSoundbankReader(SoundbankReader reader)
+	{
+		getSoundbankReadersImpl().add(reader);
+	}
+
+
+
+	public static synchronized void removeSoundbankReader(SoundbankReader reader)
+	{
+		getSoundbankReadersImpl().remove(reader);
+	}
+
+
+
+	public static synchronized Iterator getSoundbankReaders()
+	{
+		return getSoundbankReadersImpl().iterator();
+	}
+
+
+
+	private static synchronized Set getSoundbankReadersImpl()
+	{
+		if (sm_soundbankReaders == null)
+		{
+			sm_soundbankReaders = new ArraySet();
+			registerSoundbankReaders();
+		}
+		return sm_soundbankReaders;
+	}
+
+
+
+	public static MidiDevice.Info getDefaultMidiDeviceInfo()
+	{
+		return sm_defaultMidiDeviceInfo;
+	}
+
+
+
+	public static MidiDevice.Info getDefaultSynthesizerInfo()
+	{
+		return sm_defaultSynthesizerInfo;
+	}
+
+
+
+	public static MidiDevice.Info getDefaultSequencerInfo()
+	{
+		return sm_defaultSequencerInfo;
+	}
+}
+
+
+/*** TMidiConfig.java ***/
===================================================================
Checking out kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/package.html
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/package.html,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/tritonus-sound/org/tritonus/core/package.html	Mon Jul 17 19:35:38 2006
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <body>
+    <p>Initialization and Plug-in loading infrastructure. The classes
+    provided here are used to load available plug-ins
+    (AudioFileReader, AudioFileWriter, FormatConversionProvider,
+    MixerProvider, MidiDeviceProvider, MidiFileReader, MidiFileWriter,
+    SoundbankReader) and maintain lists of them. These classes are
+    needed by Tritonus only if it is used as a stand-alone Java Sound
+    implementation. They are called by AudioSystem and MidiSystem.</p>
+  </body>
+</html>




More information about the kaffe mailing list