#
# Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# This code 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 General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#

# Define library interface.

SUNWprivate_1.1 {
	global:
            Java_com_sun_media_sound_DirectAudioDeviceProvider_nGetNumDevices;
            Java_com_sun_media_sound_DirectAudioDeviceProvider_nNewDirectAudioDeviceInfo;
            Java_com_sun_media_sound_DirectAudioDevice_nAvailable;
            Java_com_sun_media_sound_DirectAudioDevice_nClose;
            Java_com_sun_media_sound_DirectAudioDevice_nFlush;
            Java_com_sun_media_sound_DirectAudioDevice_nGetBufferSize;
            Java_com_sun_media_sound_DirectAudioDevice_nGetBytePosition;
            Java_com_sun_media_sound_DirectAudioDevice_nGetFormats;
            Java_com_sun_media_sound_DirectAudioDevice_nIsStillDraining;
            Java_com_sun_media_sound_DirectAudioDevice_nOpen;
            Java_com_sun_media_sound_DirectAudioDevice_nRead;
            Java_com_sun_media_sound_DirectAudioDevice_nRequiresServicing;
            Java_com_sun_media_sound_DirectAudioDevice_nService;
            Java_com_sun_media_sound_DirectAudioDevice_nSetBytePosition;
            Java_com_sun_media_sound_DirectAudioDevice_nStart;
            Java_com_sun_media_sound_DirectAudioDevice_nStop;
            Java_com_sun_media_sound_DirectAudioDevice_nWrite;
            Java_com_sun_media_sound_MidiInDeviceProvider_nGetDescription;
            Java_com_sun_media_sound_MidiInDeviceProvider_nGetName;
            Java_com_sun_media_sound_MidiInDeviceProvider_nGetNumDevices;
            Java_com_sun_media_sound_MidiInDeviceProvider_nGetVendor;
            Java_com_sun_media_sound_MidiInDeviceProvider_nGetVersion;
            Java_com_sun_media_sound_MidiInDevice_nClose;
            Java_com_sun_media_sound_MidiInDevice_nGetMessages;
            Java_com_sun_media_sound_MidiInDevice_nGetTimeStamp;
            Java_com_sun_media_sound_MidiInDevice_nOpen;
            Java_com_sun_media_sound_MidiInDevice_nStart;
            Java_com_sun_media_sound_MidiInDevice_nStop;
            Java_com_sun_media_sound_MidiOutDeviceProvider_nGetDescription;
            Java_com_sun_media_sound_MidiOutDeviceProvider_nGetName;
            Java_com_sun_media_sound_MidiOutDeviceProvider_nGetNumDevices;
            Java_com_sun_media_sound_MidiOutDeviceProvider_nGetVendor;
            Java_com_sun_media_sound_MidiOutDeviceProvider_nGetVersion;
            Java_com_sun_media_sound_MidiOutDevice_nClose;
            Java_com_sun_media_sound_MidiOutDevice_nGetTimeStamp;
            Java_com_sun_media_sound_MidiOutDevice_nOpen;
            Java_com_sun_media_sound_MidiOutDevice_nSendLongMessage;
            Java_com_sun_media_sound_MidiOutDevice_nSendShortMessage;
            Java_com_sun_media_sound_PortMixerProvider_nGetNumDevices;
            Java_com_sun_media_sound_PortMixerProvider_nNewPortMixerInfo;
            Java_com_sun_media_sound_PortMixer_nClose;
            Java_com_sun_media_sound_PortMixer_nControlGetFloatValue;
            Java_com_sun_media_sound_PortMixer_nControlGetIntValue;
            Java_com_sun_media_sound_PortMixer_nControlSetFloatValue;
            Java_com_sun_media_sound_PortMixer_nControlSetIntValue;
            Java_com_sun_media_sound_PortMixer_nGetControls;
            Java_com_sun_media_sound_PortMixer_nGetPortCount;
            Java_com_sun_media_sound_PortMixer_nGetPortName;
            Java_com_sun_media_sound_PortMixer_nGetPortType;
            Java_com_sun_media_sound_PortMixer_nOpen;
	local:
	    *;
};
