[vala-extra-vapis/wip/openal: 32/40] fix openal.vapi




commit cb1839c99cac712b6adc685a6016a306480140de
Author: Anton 'Vuvk' Shcherbatykh <vuvk69 gmail com>
Date:   Wed Apr 7 22:45:22 2021 +0500

    fix openal.vapi

 openal.vapi | 1880 +++++++++++++++++++++++++++++------------------------------
 1 file changed, 940 insertions(+), 940 deletions(-)
---
diff --git a/openal.vapi b/openal.vapi
index 7feb6f5..ad7c44e 100644
--- a/openal.vapi
+++ b/openal.vapi
@@ -1,7 +1,7 @@
 /*
  * OpenAL bindings for Vala
  *
- * Copyright 2020 Anton "Vuvk" Shcherbatykh <vuvk69 gmail com>
+ * Copyright 2020-2021 Anton "Vuvk" Shcherbatykh <vuvk69 gmail com>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy of
  * this software and associated documentation files (the "Software"), to deal in
@@ -21,949 +21,949 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename="AL/al.h")]
+[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "AL/al.h")] 
 namespace AL
 {
-    // 8-bit boolean
-    [CCode (cname="ALboolean", has_type_id = false)]
-    public struct ALboolean : int8 {}
-
-    // character
-    [CCode (cname="ALchar", has_type_id = false)]
-    public struct ALchar : char {}
-
-    // signed 8-bit 2's complement integer
-    [CCode (cname="ALbyte", has_type_id = false)]
-    public struct ALbyte : int8 {}
-
-    // unsigned 8-bit integer
-    [CCode (cname="ALubyte", has_type_id = false)]
-    public struct ALubyte : uint8 {}
-
-    // signed 16-bit 2's complement integer
-    [CCode (cname="ALshort", has_type_id = false)]
-    public struct ALshort : int16 {}
-
-    // unsigned 16-bit integer
-    [CCode (cname="ALushort", has_type_id = false)]
-    public struct ALushort : uint16 {}
-
-    // signed 32-bit 2's complement integer
-    [CCode (cname="ALint", has_type_id = false)]
-    public struct ALint : int32 {}
-
-    // unsigned 32-bit integer
-    [CCode (cname="ALuint", has_type_id = false)]
-    public struct ALuint : uint32 {}
-
-    // non-negative 32-bit binary integer size
-    [CCode (cname="ALsizei", has_type_id = false)]
-    public struct ALsizei : int32 {}
-
-    // enumerated 32-bit value
-    [CCode (cname="ALenum", has_type_id = false)]
-    public struct ALenum : int32 {}
-
-    // 32-bit IEEE754 floating-point
-    [CCode (cname="ALfloat", has_type_id = false)]
-    public struct ALfloat : float {}
-
-    // 64-bit IEEE754 floating-point
-    [CCode (cname="ALdouble", has_type_id = false)]
-    public struct ALdouble : double {}
-
-    // void type (for opaque pointers only)
-    [CCode (cname="ALvoid", has_type_id = false)]
-    public struct ALvoid {}
-
-    /** "no distance model" or "no buffer" */
-    [CCode (cname="AL_NONE")]
-    public const ALenum NONE;
-
-    /** Boolean False. */
-    [CCode (cname="AL_FALSE")]
-    public const ALenum FALSE;
-
-    /** Boolean True. */
-    [CCode (cname="AL_TRUE")]
-    public const ALenum TRUE;
-
-    /**
-    * Relative source.
-    * Type:    ALboolean
-    * Range:   [AL_TRUE, AL_FALSE]
-    * Default: AL_FALSE
-    *
-    * Specifies if the Source has relative coordinates.
-    */
-    [CCode (cname="AL_SOURCE_RELATIVE")]
-    public const ALenum SOURCE_RELATIVE;
-
-    /**
-    * Inner cone angle, in degrees.
-    * Type:    ALint, ALfloat
-    * Range:   [0 - 360]
-    * Default: 360
-    *
-    * The angle covered by the inner cone, where the source will not attenuate.
-    */
-    [CCode (cname="AL_CONE_INNER_ANGLE")]
-    public const ALenum CONE_INNER_ANGLE;
-
-    /**
-    * Outer cone angle, in degrees.
-    * Range:   [0 - 360]
-    * Default: 360
-    *
-    * The angle covered by the outer cone, where the source will be fully
-    * attenuated.
-    */
-    [CCode (cname="AL_CONE_OUTER_ANGLE")]
-    public const ALenum CONE_OUTER_ANGLE;
-
-    /**
-    * Source pitch.
-    * Type:    ALfloat
-    * Range:   [0.5 - 2.0]
-    * Default: 1.0
-    *
-    * A multiplier for the frequency (sample rate) of the source's buffer.
-    */
-    [CCode (cname="AL_PITCH")]
-    public const ALenum PITCH;
-
-    /**
-    * Source or listener position.
-    * Type:    ALfloat[3], ALint[3]
-    * Default: {0, 0, 0}
-    *
-    * The source or listener location in three dimensional space.
-    *
-    * OpenAL, like OpenGL, uses a right handed coordinate system, where in a
-    * frontal default view X (thumb) points right, Y points up (index finger), and
-    * Z points towards the viewer/camera (middle finger).
-    *
-    * To switch from a left handed coordinate system, flip the sign on the Z
-    * coordinate.
-    */
-    [CCode (cname="AL_POSITION")]
-    public const ALenum POSITION;
-
-    /**
-    * Source direction.
-    * Type:    ALfloat[3], ALint[3]
-    * Default: {0, 0, 0}
-    *
-    * Specifies the current direction in local space.
-    * A zero-length vector specifies an omni-directional source (cone is ignored).
-    */
-    [CCode (cname="AL_DIRECTION")]
-    public const ALenum DIRECTION;
-
-    /**
-    * Source or listener velocity.
-    * Type:    ALfloat[3], ALint[3]
-    * Default: {0, 0, 0}
-    *
-    * Specifies the current velocity in local space.
-    */
-    [CCode (cname="AL_VELOCITY")]
-    public const ALenum VELOCITY;
-
-    /**
-    * Source looping.
-    * Type:    ALboolean
-    * Range:   [AL_TRUE, AL_FALSE]
-    * Default: AL_FALSE
-    *
-    * Specifies whether source is looping.
-    */
-    [CCode (cname="AL_LOOPING")]
-    public const ALenum LOOPING;
-
-    /**
-    * Source buffer.
-    * Type:  ALuint
-    * Range: any valid Buffer.
-    *
-    * Specifies the buffer to provide sound samples.
-    */
-    [CCode (cname="AL_BUFFER")]
-    public const ALenum BUFFER;
-
-    /**
-    * Source or listener gain.
-    * Type:  ALfloat
-    * Range: [0.0 - ]
-    *
-    * A value of 1.0 means unattenuated. Each division by 2 equals an attenuation
-    * of about -6dB. Each multiplicaton by 2 equals an amplification of about
-    * +6dB.
-    *
-    * A value of 0.0 is meaningless with respect to a logarithmic scale; it is
-    * silent.
-    */
-    [CCode (cname="AL_GAIN")]
-    public const ALenum GAIN;
-
-    /**
-    * Minimum source gain.
-    * Type:  ALfloat
-    * Range: [0.0 - 1.0]
-    *
-    * The minimum gain allowed for a source, after distance and cone attenation is
-    * applied (if applicable).
-    */
-    [CCode (cname="AL_MIN_GAIN")]
-    public const ALenum MIN_GAIN;
-
-    /**
-    * Maximum source gain.
-    * Type:  ALfloat
-    * Range: [0.0 - 1.0]
-    *
-    * The maximum gain allowed for a source, after distance and cone attenation is
-    * applied (if applicable).
-    */
-    [CCode (cname="AL_MAX_GAIN")]
-    public const ALenum MAX_GAIN;
-
-    /**
-    * Listener orientation.
-    * Type: ALfloat[6]
-    * Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0}
-    *
-    * Effectively two three dimensional vectors. The first vector is the front (or
-    * "at") and the second is the top (or "up").
-    *
-    * Both vectors are in local space.
-    */
-    [CCode (cname="AL_ORIENTATION")]
-    public const ALenum ORIENTATION;
-
-    /**
-    * Source state (query only).
-    * Type:  ALint
-    * Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED]
-    */
-    [CCode (cname="AL_SOURCE_STATE")]
-    public const ALenum SOURCE_STATE;
-
-    /** Source state value. */
-    [CCode (cname = "ALint", cprefix = "AL_", has_type_id = false)]
-    public enum SourceState {
-        INITIAL,
-        PLAYING,
-        PAUSED,
-        STOPPED
-    }
-
-    /**
-    * Source Buffer Queue size (query only).
-    * Type: ALint
-    *
-    * The number of buffers queued using alSourceQueueBuffers, minus the buffers
-    * removed with alSourceUnqueueBuffers.
-    */
-    [CCode (cname="AL_BUFFERS_QUEUED")]
-    public const ALenum BUFFERS_QUEUED;
-
-    /**
-    * Source Buffer Queue processed count (query only).
-    * Type: ALint
-    *
-    * The number of queued buffers that have been fully processed, and can be
-    * removed with alSourceUnqueueBuffers.
-    *
-    * Looping sources will never fully process buffers because they will be set to
-    * play again for when the source loops.
-    */
-    [CCode (cname="AL_BUFFERS_PROCESSED")]
-    public const ALenum BUFFERS_PROCESSED;
-
-    /**
-    * Source reference distance.
-    * Type:    ALfloat
-    * Range:   [0.0 - ]
-    * Default: 1.0
-    *
-    * The distance in units that no attenuation occurs.
-    *
-    * At 0.0, no distance attenuation ever occurs on non-linear attenuation models.
-    */
-    [CCode (cname="AL_REFERENCE_DISTANCE")]
-    public const ALenum REFERENCE_DISTANCE;
-
-    /**
-    * Source rolloff factor.
-    * Type:    ALfloat
-    * Range:   [0.0 - ]
-    * Default: 1.0
-    *
-    * Multiplier to exaggerate or diminish distance attenuation.
-    *
-    * At 0.0, no distance attenuation ever occurs.
-    */
-    [CCode (cname="AL_ROLLOFF_FACTOR")]
-    public const ALenum ROLLOFF_FACTOR;
-
-    /**
-    * Outer cone gain.
-    * Type:    ALfloat
-    * Range:   [0.0 - 1.0]
-    * Default: 0.0
-    *
-    * The gain attenuation applied when the listener is outside of the source's
-    * outer cone.
-    */
-    [CCode (cname="AL_CONE_OUTER_GAIN")]
-    public const ALenum CONE_OUTER_GAIN;
-
-    /**
-    * Source maximum distance.
-    * Type:    ALfloat
-    * Range:   [0.0 - ]
-    * Default: +inf
-    *
-    * The distance above which the source is not attenuated any further with a
-    * clamped distance model, or where attenuation reaches 0.0 gain for linear
-    * distance models with a default rolloff factor.
-    */
-    [CCode (cname="AL_MAX_DISTANCE")]
-    public const ALenum MAX_DISTANCE;
-
-    [CCode (cname = "ALenum", cprefix = "AL_", has_type_id = false)]
-    public enum SourceBufferPosition {
-        /** Source buffer position, in seconds */
-        SEC_OFFSET,
-        /** Source buffer position, in sample frames */
-        SAMPLE_OFFSET,
-        /** Source buffer position, in bytes */
-        BYTE_OFFSET
-    }
-
-    /**
-    * Source type (query only).
-    * Type:  ALint
-    * Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED]
-    *
-    * A Source is Static if a Buffer has been attached using AL_BUFFER.
-    *
-    * A Source is Streaming if one or more Buffers have been attached using
-    * alSourceQueueBuffers.
-    *
-    * A Source is Undetermined when it has the NULL buffer attached using
-    * AL_BUFFER.
-    */
-    [CCode (cname="AL_SOURCE_TYPE")]
-    public const ALenum SOURCE_TYPE;
-
-    /** Source type value. */
-    [CCode (cname = "ALint", cprefix = "AL_", has_type_id = false)]
-    public enum SourceType {
-        STATIC,
-        STREAMING,
-        UNDETERMINED
-    }
-
-    /** Buffer format specifier. */
-    [CCode (cname = "ALenum", cprefix = "AL_FORMAT_", has_type_id = false)]
-    public enum BufferFormat {
-        MONO8,
-        MONO16,
-        STEREO8,
-        STEREO16
-    }
-
-    /** Buffer frequency (query only). */
-    [CCode (cname="AL_FREQUENCY")]
-    public const ALenum FREQUENCY;
-    /** Buffer bits per sample (query only). */
-    [CCode (cname="AL_BITS")]
-    public const ALenum BITS;
-    /** Buffer channel count (query only). */
-    [CCode (cname="AL_CHANNELS")]
-    public const ALenum CHANNELS;
-    /** Buffer data size (query only). */
-    [CCode (cname="AL_SIZE")]
-    public const ALenum SIZE;
-
-    /**
-    * Buffer state.
-    *
-    * Not for public use.
-    */
-    [CCode (cname = "ALenum", cprefix = "AL_", has_type_id = false)]
-    public enum BufferState {
-        UNUSED,
-        PENDING,
-        PROCESSED
-    }
-
-    [CCode (cname = "ALenum", cprefix = "AL_", has_type_id = false)]
-    public enum Error {
-        /** No error. */
-        NO_ERROR,
-        /** Invalid name paramater passed to AL call. */
-        INVALID_NAME,
-        /** Invalid enum parameter passed to AL call. */
-        INVALID_ENUM,
-        /** Invalid value parameter passed to AL call. */
-        INVALID_VALUE,
-        /** Illegal AL call. */
-        INVALID_OPERATION
-        /** Not enough memory. */,
-        OUT_OF_MEMORY
-    }
-
-    /** Context string: Vendor ID. */
-    [CCode (cname="AL_VENDOR")]
-    public const ALenum VENDOR;
-    /** Context string: Version. */
-    [CCode (cname="AL_VERSION")]
-    public const ALenum VERSION;
-    /** Context string: Renderer ID. */
-    [CCode (cname="AL_RENDERER")]
-    public const ALenum RENDERER;
-    /** Context string: Space-separated extension list. */
-    [CCode (cname="AL_EXTENSIONS")]
-    public const ALenum EXTENSIONS;
-
-    /**
-    * Doppler scale.
-    * Type:    ALfloat
-    * Range:   [0.0 - ]
-    * Default: 1.0
-    *
-    * Scale for source and listener velocities.
-    */
-    [CCode (cname="AL_DOPPLER_FACTOR")]
-    public const ALenum DOPPLER_FACTOR;
-
-    /**
-    * Doppler velocity (deprecated).
-    *
-    * A multiplier applied to the Speed of Sound.
-    */
-    [CCode (cname="AL_DOPPLER_VELOCITY")]
-    public const ALenum DOPPLER_VELOCITY;
-
-    /**
-    * Speed of Sound, in units per second.
-    * Type:    ALfloat
-    * Range:   [0.0001 - ]
-    * Default: 343.3
-    *
-    * The speed at which sound waves are assumed to travel, when calculating the
-    * doppler effect.
-    */
-    [CCode (cname="AL_SPEED_OF_SOUND")]
-    public const ALenum SPEED_OF_SOUND;
-
-    /**
-    * Distance attenuation model.
-    * Type:    ALint
-    * Range:   [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED,
-    *           AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED,
-    *           AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED]
-    * Default: AL_INVERSE_DISTANCE_CLAMPED
-    *
-    * The model by which sources attenuate with distance.
-    *
-    * None     - No distance attenuation.
-    * Inverse  - Doubling the distance halves the source gain.
-    * Linear   - Linear gain scaling between the reference and max distances.
-    * Exponent - Exponential gain dropoff.
-    *
-    * Clamped variations work like the non-clamped counterparts, except the
-    * distance calculated is clamped between the reference and max distances.
-    */
-    [CCode (cname="AL_DISTANCE_MODEL")]
-    public const ALenum DISTANCE_MODEL;
-
-    /** Distance model value. */
-    [CCode (cname = "ALint", cprefix = "AL_", has_type_id = false)]
-    public enum DistanceModel {
-        INVERSE_DISTANCE,
-        INVERSE_DISTANCE_CLAMPED,
-        LINEAR_DISTANCE,
-        LINEAR_DISTANCE_CLAMPED,
-        EXPONENT_DISTANCE,
-        EXPONENT_DISTANCE_CLAMPED
-    }
-
-    [CCode (cname="alDopplerFactor")]
-    public void doppler_factor(ALfloat value);
-    [CCode (cname="alDopplerVelocity")]
-    public void doppler_velocity(ALfloat value);
-    [CCode (cname="alSpeedOfSound")]
-    public void speed_of_sound(ALfloat value);
-    [CCode (cname="alDistanceModel")]
-    public void distance_model(DistanceModel distanceModel);
-
-    /** Renderer State management. */
-    [CCode (cname="alEnable")]
-    public void enable(ALenum capability);
-    [CCode (cname="alDisable")]
-    public void disable(ALenum capability);
-    [CCode (cname="alIsEnabled")]
-    public bool is_enabled(ALenum capability);
-
-    /** State retrieval. */
-    [CCode (cname="alGetString")]
-    public unowned string? get_string(ALenum param);
-    [CCode (cname="alGetBooleanv")]
-    public void get_booleanv(ALenum param, [CCode (array_length = false)]ALboolean[] values);
-    [CCode (cname="alGetIntegerv")]
-    public void get_integerv(ALenum param, [CCode (array_length = false)]ALint[] values);
-    [CCode (cname="alGetFloatv")]
-    public void get_floatv(ALenum param, [CCode (array_length = false)]ALfloat[] values);
-    [CCode (cname="alGetDoublev")]
-    public void get_doublev(ALenum param, [CCode (array_length = false)]ALdouble[] values);
-    [CCode (cname="alGetBoolean")]
-    public bool get_boolean(ALenum param);
-    [CCode (cname="alGetInteger")]
-    public ALint get_integer(ALenum param);
-    [CCode (cname="alGetFloat")]
-    public ALfloat get_float(ALenum param);
-    [CCode (cname="alGetDouble")]
-    public ALdouble get_double(ALenum param);
-
-    /**
-    * Error retrieval.
-    *
-    * Obtain the first error generated in the AL context since the last check.
-    */
-    [CCode (cname="alGetError")]
-    public Error get_error();
-
-    /**
-    * Extension support.
-    *
-    * Query for the presence of an extension, and obtain any appropriate function
-    * pointers and enum values.
-    */
-    [CCode (cname="alIsExtensionPresent")]
-    public bool is_extension_present(string extname);
-    [CCode (cname="alGetProcAddress")]
-    public void* get_proc_address(string fname);
-    [CCode (cname="alGetEnumValue")]
-    public ALenum get_enum_value(string ename);
-
-    [Compact]
-    [CCode (has_type_id = false)]
-    public class Listener {
-        /** Set Listener parameters */
-        [CCode (cname="alListenerf")]
-        public static void set_paramf(ALenum param, ALfloat value);
-        [CCode (cname="alListener3f")]
-        public static void set_param3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
-        [CCode (cname="alListenerfv")]
-        public static void set_paramfv(ALenum param, [CCode (array_length = false)]ALfloat[] values);
-        [CCode (cname="alListeneri")]
-        public static void set_parami(ALenum param, ALint value);
-        [CCode (cname="alListener3i")]
-        public static void set_param3i(ALenum param, ALint value1, ALint value2, ALint value3);
-        [CCode (cname="alListeneriv")]
-        public static void set_paramiv(ALenum param, [CCode (array_length = false)]ALint[] values);
-
-        /** Get Listener parameters */
-        [CCode (cname="alGetListenerf")]
-        public static void get_paramf(ALenum param, out ALfloat value);
-        [CCode (cname="alGetListener3f")]
-        public static void get_param3f(ALenum param, out ALfloat value1, out ALfloat value2, out ALfloat 
value3);
-        [CCode (cname="alGetListenerfv")]
-        public static void get_paramfv(ALenum param, [CCode (array_length = false)]ALfloat[] values);
-        [CCode (cname="alGetListeneri")]
-        public static void get_parami(ALenum param, out ALint value);
-        [CCode (cname="alGetListener3i")]
-        public static void get_param3i(ALenum param, out ALint value1, out ALint value2, out ALint value3);
-        [CCode (cname="alGetListeneriv")]
-        public static void get_paramiv(ALenum param, [CCode (array_length = false)]ALint[] values);
-    }
-
-    [SimpleType]
-    [CCode (cname="ALuint", has_type_id = false)]
-    public struct Source : ALuint {
-        /** Set Source parameters. */
-        [CCode (cname="alSourcef")]
-        public void set_paramf(ALenum param, ALfloat value);
-        [CCode (cname="alSource3f")]
-        public void set_param3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
-        [CCode (cname="alSourcefv")]
-        public void set_paramfv(ALenum param, [CCode (array_length = false)]ALfloat[] values);
-        [CCode (cname="alSourcei")]
-        public void set_parami(ALenum param, ALint value);
-        [CCode (cname="alSource3i")]
-        public void set_param3i(ALenum param, ALint value1, ALint value2, ALint value3);
-        [CCode (cname="alSourceiv")]
-        public void set_paramiv(ALenum param, [CCode (array_length = false)]ALint[] values);
-
-        /** Get Source parameters. */
-        [CCode (cname="alGetSourcef")]
-        public void get_paramf(ALenum param, out ALfloat value);
-        [CCode (cname="alGetSource3f")]
-        public void get_param3f(ALenum param, out ALfloat value1, out ALfloat value2, out ALfloat value3);
-        [CCode (cname="alGetSourcefv")]
-        public void get_paramfv(ALenum param, [CCode (array_length = false)]ALfloat[] values);
-        [CCode (cname="alGetSourcei")]
-        public void get_parami( ALenum param, out ALint value);
-        [CCode (cname="alGetSource3i")]
-        public void get_param3i(ALenum param, out ALint value1, out ALint value2, out ALint value3);
-        [CCode (cname="alGetSourceiv")]
-        public void get_paramiv(ALenum param, [CCode (array_length = false)]ALint[]values);
-
-        /** Play, replay, or resume (if paused) a list of Sources */
-        [CCode (cname="alSourcePlayv")]
-        public static void playv(ALsizei n, [CCode (array_length = false)]Source[] sources);
-        /** Stop a list of Sources */
-        [CCode (cname="alSourceStopv")]
-        public static void stopv(ALsizei n, [CCode (array_length = false)]Source[] sources);
-        /** Rewind a list of Sources */
-        [CCode (cname="alSourceRewindv")]
-        public static void rewindv(ALsizei n, [CCode (array_length = false)]Source[] sources);
-        /** Pause a list of Sources */
-        [CCode (cname="alSourcePausev")]
-        public static void pausev(ALsizei n, [CCode (array_length = false)]Source[] sources);
-
-        /** Play, replay, or resume a Source */
-        [CCode (cname="alSourcePlay")]
-        public void play();
-        /** Stop a Source */
-        [CCode (cname="alSourceStop")]
-        public void stop();
-        /** Rewind a Source (set playback postiton to beginning) */
-        [CCode (cname="alSourceRewind")]
-        public void rewind();
-        /** Pause a Source */
-        [CCode (cname="alSourcePause")]
-        public void pause();
-
-        /** Queue buffers onto a source */
-        [CCode (cname="alSourceQueueBuffers")]
-        public void queue_buffers(ALsizei nb, [CCode (array_length = false)]ALuint[] buffers);
-        [CCode (cname="alSourceQueueBuffers")]
-        public void queue_buffer(ALsizei nb, ref ALuint buffer);
-        /** Unqueue processed buffers from a source */
-        [CCode (cname="alSourceUnqueueBuffers")]
-        public void unqueue_buffers(ALsizei nb, [CCode (array_length = false)]ALuint[] buffers);
-        [CCode (cname="alSourceUnqueueBuffers")]
-        public void unqueue_buffer(ALsizei nb, ref ALuint buffer);
-    }
-
-    /** Create Source objects. */
-    [CCode (cname="alGenSources")]
-    public void gen_sources(ALsizei n, [CCode (array_length = false)]Source[] sources);
-    /** Create Source object. */
-    [CCode (cname="alGenSources")]
-    public void gen_source(ALsizei n, out Source source);
-    /** Delete Source objects. */
-    [CCode (cname="alDeleteSources")]
-    public void delete_sources(ALsizei n, [CCode (array_length = false)]Source[] sources);
-    /** Delete Source object. */
-    [CCode (cname="alDeleteSources")]
-    public void delete_source(ALsizei n, ref Source source);
-    /** Verify a handle is a valid Source. */
-    [CCode (cname="alIsSource")]
-    public bool is_source(ALuint source);
-
-    [SimpleType]
-    [CCode (cname="ALuint", has_type_id = false)]
-    public struct Buffer : ALuint {
-        /** Specifies the data to be copied into a buffer */
-        [CCode (cname="alBufferData")]
-        public void set_data(ALenum format, [CCode (array_length = false)]uint8[] data, ALsizei size, 
ALsizei freq);
-
-        /** Set Buffer parameters, */
-        [CCode (cname="alBufferf")]
-        public void set_paramf(ALenum param, ALfloat value);
-        [CCode (cname="alBuffer3f")]
-        public void set_param3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
-        [CCode (cname="alBufferfv")]
-        public void set_paramfv(ALenum param, [CCode (array_length = false)]ALfloat[] values);
-        [CCode (cname="alBufferi")]
-        public void set_parami(ALenum param, ALint value);
-        [CCode (cname="alBuffer3i")]
-        public void set_param3i(ALenum param, ALint value1, ALint value2, ALint value3);
-        [CCode (cname="alBufferiv")]
-        public void set_paramiv(ALenum param, [CCode (array_length = false)]ALint[] values);
-
-        /** Get Buffer parameters. */
-        [CCode (cname="alGetBufferf")]
-        public void get_paramf(ALenum param, out ALfloat value);
-        [CCode (cname="alGetBuffer3f")]
-        public void get_param3f(ALenum param, out ALfloat value1, out ALfloat value2, out ALfloat value3);
-        [CCode (cname="alGetBufferfv")]
-        public void get_paramfv(ALenum param, [CCode (array_length = false)]ALfloat[] values);
-        [CCode (cname="alGetBufferi")]
-        public void get_parami(ALenum param, out ALint value);
-        [CCode (cname="alGetBuffer3i")]
-        public void get_param3i(ALenum param, out ALint value1, out ALint value2, out ALint value3);
-        [CCode (cname="alGetBufferiv")]
-        public void get_paramiv(ALenum param, [CCode (array_length = false)]ALint[] values);
-    }
-
-    /** Create Buffer objects */
-    [CCode (cname="alGenBuffers")]
-    public void gen_buffers(ALsizei n, [CCode (array_length = false)]Buffer[] buffers);
-    /** Create Buffer object */
-    [CCode (cname="alGenBuffers")]
-    public void gen_buffer(ALsizei n, out Buffer buffer);
-    /** Delete Buffer objects */
-    [CCode (cname="alDeleteBuffers")]
-    public void delete_buffers(ALsizei n, [CCode (array_length = false)]Buffer[] buffers);
-    /** Delete Buffer object */
-    [CCode (cname="alDeleteBuffers")]
-    public void delete_buffer(ALsizei n, ref Buffer buffer);
-    /** Verify a handle is a valid Buffer */
-    [CCode (cname="alIsBuffer")]
-    public bool is_buffer(ALuint buffer);
+       // 8-bit boolean
+       [CCode (cname = "ALboolean", has_type_id = false)] 
+       public struct Boolean : int8 {}
+
+       // character
+       [CCode (cname = "ALchar", has_type_id = false)] 
+       public struct Char : char {}
+
+       // signed 8-bit 2's complement integer
+       [CCode (cname = "ALbyte", has_type_id = false)] 
+       public struct Byte : int8 {}
+
+       // unsigned 8-bit integer
+       [CCode (cname = "ALubyte", has_type_id = false)] 
+       public struct Ubyte : uint8 {}
+
+       // signed 16-bit 2's complement integer
+       [CCode (cname = "ALshort", has_type_id = false)] 
+       public struct Short : int16 {}
+
+       // unsigned 16-bit integer
+       [CCode (cname = "ALushort", has_type_id = false)] 
+       public struct Ushort : uint16 {}
+
+       // signed 32-bit 2's complement integer
+       [CCode (cname = "ALint", has_type_id = false)] 
+       public struct Int : int32 {}
+
+       // unsigned 32-bit integer
+       [CCode (cname = "ALuint", has_type_id = false)] 
+       public struct Uint : uint32 {}
+
+       // non-negative 32-bit binary integer size
+       [CCode (cname = "ALsizei", has_type_id = false)] 
+       public struct Sizei : int32 {}
+
+       // enumerated 32-bit value
+       [CCode (cname = "ALenum", has_type_id = false)] 
+       public struct Enum : int32 {}
+
+       // 32-bit IEEE754 floating-point
+       [CCode (cname = "ALfloat", has_type_id = false)] 
+       public struct Float : float {}
+
+       // 64-bit IEEE754 floating-point
+       [CCode (cname = "ALdouble", has_type_id = false)] 
+       public struct Double : double {}
+
+       // void type (for opaque pointers only)
+       [CCode (cname = "ALvoid", has_type_id = false)] 
+       public struct ALvoid {}
+
+       /** "no distance model" or "no buffer" */
+       [CCode (cname = "AL_NONE")] 
+       public const Enum NONE;
+
+       /** Boolean False. */
+       [CCode (cname = "AL_FALSE")] 
+       public const Enum FALSE;
+
+       /** Boolean True. */
+       [CCode (cname = "AL_TRUE")] 
+       public const Enum TRUE;
+
+       /**
+       * Relative source.
+       * Type: ALboolean
+       * Range: [AL_TRUE, AL_FALSE] 
+       * Default: AL_FALSE
+       *
+       * Specifies if the Source has relative coordinates.
+       */
+       [CCode (cname = "AL_SOURCE_RELATIVE")] 
+       public const Enum SOURCE_RELATIVE;
+
+       /**
+       * Inner cone angle, in degrees.
+       * Type: ALint, ALfloat
+       * Range: [0 - 360] 
+       * Default: 360
+       *
+       * The angle covered by the inner cone, where the source will not attenuate.
+       */
+       [CCode (cname = "AL_CONE_INNER_ANGLE")] 
+       public const Enum CONE_INNER_ANGLE;
+
+       /**
+       * Outer cone angle, in degrees.
+       * Range: [0 - 360] 
+       * Default: 360
+       *
+       * The angle covered by the outer cone, where the source will be fully
+       * attenuated.
+       */
+       [CCode (cname = "AL_CONE_OUTER_ANGLE")] 
+       public const Enum CONE_OUTER_ANGLE;
+
+       /**
+       * Source pitch.
+       * Type: ALfloat
+       * Range: [0.5 - 2.0] 
+       * Default: 1.0
+       *
+       * A multiplier for the frequency (sample rate) of the source's buffer.
+       */
+       [CCode (cname = "AL_PITCH")] 
+       public const Enum PITCH;
+
+       /**
+       * Source or listener position.
+       * Type: ALfloat[3] , ALint[3] 
+       * Default: {0, 0, 0}
+       *
+       * The source or listener location in three dimensional space.
+       *
+       * OpenAL, like OpenGL, uses a right handed coordinate system, where in a
+       * frontal default view X (thumb) points right, Y points up (index finger), and
+       * Z points towards the viewer/camera (middle finger).
+       *
+       * To switch from a left handed coordinate system, flip the sign on the Z
+       * coordinate.
+       */
+       [CCode (cname = "AL_POSITION")] 
+       public const Enum POSITION;
+
+       /**
+       * Source direction.
+       * Type: ALfloat[3] , ALint[3] 
+       * Default: {0, 0, 0}
+       *
+       * Specifies the current direction in local space.
+       * A zero-length vector specifies an omni-directional source (cone is ignored).
+       */
+       [CCode (cname = "AL_DIRECTION")] 
+       public const Enum DIRECTION;
+
+       /**
+       * Source or listener velocity.
+       * Type: ALfloat[3] , ALint[3] 
+       * Default: {0, 0, 0}
+       *
+       * Specifies the current velocity in local space.
+       */
+       [CCode (cname = "AL_VELOCITY")] 
+       public const Enum VELOCITY;
+
+       /**
+       * Source looping.
+       * Type: ALboolean
+       * Range: [AL_TRUE, AL_FALSE] 
+       * Default: AL_FALSE
+       *
+       * Specifies whether source is looping.
+       */
+       [CCode (cname = "AL_LOOPING")] 
+       public const Enum LOOPING;
+
+       /**
+       * Source buffer.
+       * Type: ALuint
+       * Range: any valid Buffer.
+       *
+       * Specifies the buffer to provide sound samples.
+       */
+       [CCode (cname = "AL_BUFFER")] 
+       public const Enum BUFFER;
+
+       /**
+       * Source or listener gain.
+       * Type: ALfloat
+       * Range: [0.0 - ] 
+       *
+       * A value of 1.0 means unattenuated. Each division by 2 equals an attenuation
+       * of about -6dB. Each multiplicaton by 2 equals an amplification of about
+       * +6dB.
+       *
+       * A value of 0.0 is meaningless with respect to a logarithmic scale; it is
+       * silent.
+       */
+       [CCode (cname = "AL_GAIN")] 
+       public const Enum GAIN;
+
+       /**
+       * Minimum source gain.
+       * Type: ALfloat
+       * Range: [0.0 - 1.0] 
+       *
+       * The minimum gain allowed for a source, after distance and cone attenation is
+       * applied (if applicable).
+       */
+       [CCode (cname = "AL_MIN_GAIN")] 
+       public const Enum MIN_GAIN;
+
+       /**
+       * Maximum source gain.
+       * Type: ALfloat
+       * Range: [0.0 - 1.0] 
+       *
+       * The maximum gain allowed for a source, after distance and cone attenation is
+       * applied (if applicable).
+       */
+       [CCode (cname = "AL_MAX_GAIN")] 
+       public const Enum MAX_GAIN;
+
+       /**
+       * Listener orientation.
+       * Type: ALfloat[6] 
+       * Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0}
+       *
+       * Effectively two three dimensional vectors. The first vector is the front (or
+       * "at") and the second is the top (or "up").
+       *
+       * Both vectors are in local space.
+       */
+       [CCode (cname = "AL_ORIENTATION")] 
+       public const Enum ORIENTATION;
+
+       /**
+       * Source state (query only).
+       * Type: ALint
+       * Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED] 
+       */
+       [CCode (cname = "AL_SOURCE_STATE")] 
+       public const Enum SOURCE_STATE;
+
+       /** Source state value. */
+       [CCode (cname = "ALint", cprefix = "AL_", has_type_id = false)] 
+       public enum SourceState {
+               INITIAL,
+               PLAYING,
+               PAUSED,
+               STOPPED
+       }
+
+       /**
+       * Source Buffer Queue size (query only).
+       * Type: ALint
+       *
+       * The number of buffers queued using alSourceQueueBuffers, minus the buffers
+       * removed with alSourceUnqueueBuffers.
+       */
+       [CCode (cname = "AL_BUFFERS_QUEUED")] 
+       public const Enum BUFFERS_QUEUED;
+
+       /**
+       * Source Buffer Queue processed count (query only).
+       * Type: ALint
+       *
+       * The number of queued buffers that have been fully processed, and can be
+       * removed with alSourceUnqueueBuffers.
+       *
+       * Looping sources will never fully process buffers because they will be set to
+       * play again for when the source loops.
+       */
+       [CCode (cname = "AL_BUFFERS_PROCESSED")] 
+       public const Enum BUFFERS_PROCESSED;
+
+       /**
+       * Source reference distance.
+       * Type: ALfloat
+       * Range: [0.0 - ] 
+       * Default: 1.0
+       *
+       * The distance in units that no attenuation occurs.
+       *
+       * At 0.0, no distance attenuation ever occurs on non-linear attenuation models.
+       */
+       [CCode (cname = "AL_REFERENCE_DISTANCE")] 
+       public const Enum REFERENCE_DISTANCE;
+
+       /**
+       * Source rolloff factor.
+       * Type: ALfloat
+       * Range: [0.0 - ] 
+       * Default: 1.0
+       *
+       * Multiplier to exaggerate or diminish distance attenuation.
+       *
+       * At 0.0, no distance attenuation ever occurs.
+       */
+       [CCode (cname = "AL_ROLLOFF_FACTOR")] 
+       public const Enum ROLLOFF_FACTOR;
+
+       /**
+       * Outer cone gain.
+       * Type: ALfloat
+       * Range: [0.0 - 1.0] 
+       * Default: 0.0
+       *
+       * The gain attenuation applied when the listener is outside of the source's
+       * outer cone.
+       */
+       [CCode (cname = "AL_CONE_OUTER_GAIN")] 
+       public const Enum CONE_OUTER_GAIN;
+
+       /**
+       * Source maximum distance.
+       * Type: ALfloat
+       * Range: [0.0 - ] 
+       * Default: +inf
+       *
+       * The distance above which the source is not attenuated any further with a
+       * clamped distance model, or where attenuation reaches 0.0 gain for linear
+       * distance models with a default rolloff factor.
+       */
+       [CCode (cname = "AL_MAX_DISTANCE")] 
+       public const Enum MAX_DISTANCE;
+
+       [CCode (cname = "ALenum", cprefix = "AL_", has_type_id = false)] 
+       public enum SourceBufferPosition {
+               /** Source buffer position, in seconds */
+               SEC_OFFSET,
+               /** Source buffer position, in sample frames */
+               SAMPLE_OFFSET,
+               /** Source buffer position, in bytes */
+               BYTE_OFFSET
+       }
+
+       /**
+       * Source type (query only).
+       * Type: ALint
+       * Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED] 
+       *
+       * A Source is Static if a Buffer has been attached using AL_BUFFER.
+       *
+       * A Source is Streaming if one or more Buffers have been attached using
+       * alSourceQueueBuffers.
+       *
+       * A Source is Undetermined when it has the NULL buffer attached using
+       * AL_BUFFER.
+       */
+       [CCode (cname = "AL_SOURCE_TYPE")] 
+       public const Enum SOURCE_TYPE;
+
+       /** Source type value. */
+       [CCode (cname = "ALint", cprefix = "AL_", has_type_id = false)] 
+       public enum SourceType {
+               STATIC,
+               STREAMING,
+               UNDETERMINED
+       }
+
+       /** Buffer format specifier. */
+       [CCode (cname = "ALenum", cprefix = "AL_FORMAT_", has_type_id = false)] 
+       public enum BufferFormat {
+               MONO8,
+               MONO16,
+               STEREO8,
+               STEREO16
+       }
+
+       /** Buffer frequency (query only). */
+       [CCode (cname = "AL_FREQUENCY")] 
+       public const Enum FREQUENCY;
+       /** Buffer bits per sample (query only). */
+       [CCode (cname = "AL_BITS")] 
+       public const Enum BITS;
+       /** Buffer channel count (query only). */
+       [CCode (cname = "AL_CHANNELS")] 
+       public const Enum CHANNELS;
+       /** Buffer data size (query only). */
+       [CCode (cname = "AL_SIZE")] 
+       public const Enum SIZE;
+
+       /**
+       * Buffer state.
+       *
+       * Not for public use.
+       */
+       [CCode (cname = "ALenum", cprefix = "AL_", has_type_id = false)] 
+       public enum BufferState {
+               UNUSED,
+               PENDING,
+               PROCESSED
+       }
+
+       [CCode (cname = "ALenum", cprefix = "AL_", has_type_id = false)] 
+       public enum Error {
+               /** No error. */
+               NO_ERROR,
+               /** Invalid name paramater passed to AL call. */
+               INVALID_NAME,
+               /** Invalid enum parameter passed to AL call. */
+               INVALID_ENUM,
+               /** Invalid value parameter passed to AL call. */
+               INVALID_VALUE,
+               /** Illegal AL call. */
+               INVALID_OPERATION
+               /** Not enough memory. */,
+               OUT_OF_MEMORY
+       }
+
+       /** Context string: Vendor ID. */
+       [CCode (cname = "AL_VENDOR")] 
+       public const Enum VENDOR;
+       /** Context string: Version. */
+       [CCode (cname = "AL_VERSION")] 
+       public const Enum VERSION;
+       /** Context string: Renderer ID. */
+       [CCode (cname = "AL_RENDERER")] 
+       public const Enum RENDERER;
+       /** Context string: Space-separated extension list. */
+       [CCode (cname = "AL_EXTENSIONS")] 
+       public const Enum EXTENSIONS;
+
+       /**
+       * Doppler scale.
+       * Type: ALfloat
+       * Range: [0.0 - ] 
+       * Default: 1.0
+       *
+       * Scale for source and listener velocities.
+       */
+       [CCode (cname = "AL_DOPPLER_FACTOR")] 
+       public const Enum DOPPLER_FACTOR;
+
+       /**
+       * Doppler velocity (deprecated).
+       *
+       * A multiplier applied to the Speed of Sound.
+       */
+       [CCode (cname = "AL_DOPPLER_VELOCITY")] 
+       public const Enum DOPPLER_VELOCITY;
+
+       /**
+       * Speed of Sound, in units per second.
+       * Type: ALfloat
+       * Range: [0.0001 - ] 
+       * Default: 343.3
+       *
+       * The speed at which sound waves are assumed to travel, when calculating the
+       * doppler effect.
+       */
+       [CCode (cname = "AL_SPEED_OF_SOUND")] 
+       public const Enum SPEED_OF_SOUND;
+
+       /**
+       * Distance attenuation model.
+       * Type: ALint
+       * Range: [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED,
+       *                AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED,
+       *                AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED] 
+       * Default: AL_INVERSE_DISTANCE_CLAMPED
+       *
+       * The model by which sources attenuate with distance.
+       *
+       * None   - No distance attenuation.
+       * Inverse - Doubling the distance halves the source gain.
+       * Linear - Linear gain scaling between the reference and max distances.
+       * Exponent - Exponential gain dropoff.
+       *
+       * Clamped variations work like the non-clamped counterparts, except the
+       * distance calculated is clamped between the reference and max distances.
+       */
+       [CCode (cname = "AL_DISTANCE_MODEL")] 
+       public const Enum DISTANCE_MODEL;
+
+       /** Distance model value. */
+       [CCode (cname = "ALint", cprefix = "AL_", has_type_id = false)] 
+       public enum DistanceModel {
+               INVERSE_DISTANCE,
+               INVERSE_DISTANCE_CLAMPED,
+               LINEAR_DISTANCE,
+               LINEAR_DISTANCE_CLAMPED,
+               EXPONENT_DISTANCE,
+               EXPONENT_DISTANCE_CLAMPED
+       }
+
+       [CCode (cname = "alDopplerFactor")] 
+       public void doppler_factor (Float value);
+       [CCode (cname = "alDopplerVelocity")] 
+       public void doppler_velocity (Float value);
+       [CCode (cname = "alSpeedOfSound")] 
+       public void speed_of_sound (Float value);
+       [CCode (cname = "alDistanceModel")] 
+       public void distance_model (DistanceModel distanceModel);
+
+       /** Renderer State management. */
+       [CCode (cname = "alEnable")] 
+       public void enable (Enum capability);
+       [CCode (cname = "alDisable")] 
+       public void disable (Enum capability);
+       [CCode (cname = "alIsEnabled")] 
+       public bool is_enabled (Enum capability);
+
+       /** State retrieval. */
+       [CCode (cname = "alGetString")] 
+       public unowned string? get_string (Enum param);
+       [CCode (cname = "alGetBooleanv")] 
+       public void get_booleanv (Enum param, [CCode (array_length = false)] Boolean[] values);
+       [CCode (cname = "alGetIntegerv")] 
+       public void get_integerv (Enum param, [CCode (array_length = false)] Int[] values);
+       [CCode (cname = "alGetFloatv")] 
+       public void get_floatv (Enum param, [CCode (array_length = false)] Float[] values);
+       [CCode (cname = "alGetDoublev")] 
+       public void get_doublev (Enum param, [CCode (array_length = false)] Double[] values);
+       [CCode (cname = "alGetBoolean")] 
+       public bool get_boolean (Enum param);
+       [CCode (cname = "alGetInteger")] 
+       public Int get_integer (Enum param);
+       [CCode (cname = "alGetFloat")] 
+       public Float get_float (Enum param);
+       [CCode (cname = "alGetDouble")] 
+       public Double get_double (Enum param);
+
+       /**
+       * Error retrieval.
+       *
+       * Obtain the first error generated in the AL context since the last check.
+       */
+       [CCode (cname = "alGetError")] 
+       public Error get_error ();
+
+       /**
+       * Extension support.
+       *
+       * Query for the presence of an extension, and obtain any appropriate function
+       * pointers and enum values.
+       */
+       [CCode (cname = "alIsExtensionPresent")] 
+       public bool is_extension_present (string extname);
+       [CCode (cname = "alGetProcAddress")] 
+       public void* get_proc_address (string fname);
+       [CCode (cname = "alGetEnumValue")] 
+       public Enum get_enum_value (string ename);
+
+       [Compact] 
+       [CCode (has_type_id = false)] 
+       public class Listener {
+               /** Set Listener parameters */
+               [CCode (cname = "alListenerf")] 
+               public static void set_paramf (Enum param, Float value);
+               [CCode (cname = "alListener3f")] 
+               public static void set_param3f (Enum param, Float value1, Float value2, Float value3);
+               [CCode (cname = "alListenerfv")] 
+               public static void set_paramfv (Enum param, [CCode (array_length = false)] Float[] values);
+               [CCode (cname = "alListeneri")] 
+               public static void set_parami (Enum param, Int value);
+               [CCode (cname = "alListener3i")] 
+               public static void set_param3i (Enum param, Int value1, Int value2, Int value3);
+               [CCode (cname = "alListeneriv")] 
+               public static void set_paramiv (Enum param, [CCode (array_length = false)] Int[] values);
+
+               /** Get Listener parameters */
+               [CCode (cname = "alGetListenerf")] 
+               public static void get_paramf (Enum param, out Float value);
+               [CCode (cname = "alGetListener3f")] 
+               public static void get_param3f (Enum param, out Float value1, out Float value2, out Float 
value3);
+               [CCode (cname = "alGetListenerfv")] 
+               public static void get_paramfv (Enum param, [CCode (array_length = false)] Float[] values);
+               [CCode (cname = "alGetListeneri")] 
+               public static void get_parami (Enum param, out Int value);
+               [CCode (cname = "alGetListener3i")] 
+               public static void get_param3i (Enum param, out Int value1, out Int value2, out Int value3);
+               [CCode (cname = "alGetListeneriv")] 
+               public static void get_paramiv (Enum param, [CCode (array_length = false)] Int[] values);
+       }
+
+       [SimpleType] 
+       [CCode (cname = "ALuint", has_type_id = false)] 
+       public struct Source : Uint {
+               /** Set Source parameters. */
+               [CCode (cname = "alSourcef")] 
+               public void set_paramf (Enum param, Float value);
+               [CCode (cname = "alSource3f")] 
+               public void set_param3f (Enum param, Float value1, Float value2, Float value3);
+               [CCode (cname = "alSourcefv")] 
+               public void set_paramfv (Enum param, [CCode (array_length = false)] Float[] values);
+               [CCode (cname = "alSourcei")] 
+               public void set_parami (Enum param, Int value);
+               [CCode (cname = "alSource3i")] 
+               public void set_param3i (Enum param, Int value1, Int value2, Int value3);
+               [CCode (cname = "alSourceiv")] 
+               public void set_paramiv (Enum param, [CCode (array_length = false)] Int[] values);
+
+               /** Get Source parameters. */
+               [CCode (cname = "alGetSourcef")] 
+               public void get_paramf (Enum param, out Float value);
+               [CCode (cname = "alGetSource3f")] 
+               public void get_param3f (Enum param, out Float value1, out Float value2, out Float value3);
+               [CCode (cname = "alGetSourcefv")] 
+               public void get_paramfv (Enum param, [CCode (array_length = false)] Float[] values);
+               [CCode (cname = "alGetSourcei")] 
+               public void get_parami (Enum param, out Int value);
+               [CCode (cname = "alGetSource3i")] 
+               public void get_param3i (Enum param, out Int value1, out Int value2, out Int value3);
+               [CCode (cname = "alGetSourceiv")] 
+               public void get_paramiv (Enum param, [CCode (array_length = false)] Int[] values);
+
+               /** Play, replay, or resume (if paused) a list of Sources */
+               [CCode (cname = "alSourcePlayv")] 
+               public static void playv (Sizei n, [CCode (array_length = false)] Source[] sources);
+               /** Stop a list of Sources */
+               [CCode (cname = "alSourceStopv")] 
+               public static void stopv (Sizei n, [CCode (array_length = false)] Source[] sources);
+               /** Rewind a list of Sources */
+               [CCode (cname = "alSourceRewindv")] 
+               public static void rewindv (Sizei n, [CCode (array_length = false)] Source[] sources);
+               /** Pause a list of Sources */
+               [CCode (cname = "alSourcePausev")] 
+               public static void pausev (Sizei n, [CCode (array_length = false)] Source[] sources);
+
+               /** Play, replay, or resume a Source */
+               [CCode (cname = "alSourcePlay")] 
+               public void play ();
+               /** Stop a Source */
+               [CCode (cname = "alSourceStop")] 
+               public void stop ();
+               /** Rewind a Source (set playback postiton to beginning) */
+               [CCode (cname = "alSourceRewind")] 
+               public void rewind ();
+               /** Pause a Source */
+               [CCode (cname = "alSourcePause")] 
+               public void pause ();
+
+               /** Queue buffers onto a source */
+               [CCode (cname = "alSourceQueueBuffers")] 
+               public void queue_buffers (Sizei nb, [CCode (array_length = false)] Uint[] buffers);
+               [CCode (cname = "alSourceQueueBuffers")] 
+               public void queue_buffer (Sizei nb, ref Uint buffer);
+               /** Unqueue processed buffers from a source */
+               [CCode (cname = "alSourceUnqueueBuffers")] 
+               public void unqueue_buffers (Sizei nb, [CCode (array_length = false)] Uint[] buffers);
+               [CCode (cname = "alSourceUnqueueBuffers")] 
+               public void unqueue_buffer (Sizei nb, ref Uint buffer);
+       }
+
+       /** Create Source objects. */
+       [CCode (cname = "alGenSources")] 
+       public void gen_sources (Sizei n, [CCode (array_length = false)] Source[] sources);
+       /** Create Source object. */
+       [CCode (cname = "alGenSources")] 
+       public void gen_source (Sizei n, out Source source);
+       /** Delete Source objects. */
+       [CCode (cname = "alDeleteSources")] 
+       public void delete_sources (Sizei n, [CCode (array_length = false)] Source[] sources);
+       /** Delete Source object. */
+       [CCode (cname = "alDeleteSources")] 
+       public void delete_source (Sizei n, ref Source source);
+       /** Verify a handle is a valid Source. */
+       [CCode (cname = "alIsSource")] 
+       public bool is_source (Uint source);
+
+       [SimpleType] 
+       [CCode (cname = "ALuint", has_type_id = false)] 
+       public struct Buffer : Uint {
+               /** Specifies the data to be copied into a buffer */
+               [CCode (cname = "alBufferData")] 
+               public void set_data (Enum format, [CCode (array_length = false)] uint8[] data, Sizei size, 
Sizei freq);
+
+               /** Set Buffer parameters, */
+               [CCode (cname = "alBufferf")] 
+               public void set_paramf (Enum param, Float value);
+               [CCode (cname = "alBuffer3f")] 
+               public void set_param3f (Enum param, Float value1, Float value2, Float value3);
+               [CCode (cname = "alBufferfv")] 
+               public void set_paramfv (Enum param, [CCode (array_length = false)] Float[] values);
+               [CCode (cname = "alBufferi")] 
+               public void set_parami (Enum param, Int value);
+               [CCode (cname = "alBuffer3i")] 
+               public void set_param3i (Enum param, Int value1, Int value2, Int value3);
+               [CCode (cname = "alBufferiv")] 
+               public void set_paramiv (Enum param, [CCode (array_length = false)] Int[] values);
+
+               /** Get Buffer parameters. */
+               [CCode (cname = "alGetBufferf")] 
+               public void get_paramf (Enum param, out Float value);
+               [CCode (cname = "alGetBuffer3f")] 
+               public void get_param3f (Enum param, out Float value1, out Float value2, out Float value3);
+               [CCode (cname = "alGetBufferfv")] 
+               public void get_paramfv (Enum param, [CCode (array_length = false)] Float[] values);
+               [CCode (cname = "alGetBufferi")] 
+               public void get_parami (Enum param, out Int value);
+               [CCode (cname = "alGetBuffer3i")] 
+               public void get_param3i (Enum param, out Int value1, out Int value2, out Int value3);
+               [CCode (cname = "alGetBufferiv")] 
+               public void get_paramiv (Enum param, [CCode (array_length = false)] Int[] values);
+       }
+
+       /** Create Buffer objects */
+       [CCode (cname = "alGenBuffers")] 
+       public void gen_buffers (Sizei n, [CCode (array_length = false)] Buffer[] buffers);
+       /** Create Buffer object */
+       [CCode (cname = "alGenBuffers")] 
+       public void gen_buffer (Sizei n, out Buffer buffer);
+       /** Delete Buffer objects */
+       [CCode (cname = "alDeleteBuffers")] 
+       public void delete_buffers (Sizei n, [CCode (array_length = false)] Buffer[] buffers);
+       /** Delete Buffer object */
+       [CCode (cname = "alDeleteBuffers")] 
+       public void delete_buffer (Sizei n, ref Buffer buffer);
+       /** Verify a handle is a valid Buffer */
+       [CCode (cname = "alIsBuffer")] 
+       public bool is_buffer (Uint buffer);
 }
 
-[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename="AL/alc.h")]
+[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "AL/alc.h")] 
 namespace ALC
 {
-    /** 8-bit boolean */
-    [CCode (cname="ALCboolean", has_type_id = false)]
-    public struct ALCboolean : int8 {}
-
-    /** character */
-    [CCode (cname="ALCchar", has_type_id = false)]
-    public struct ALCchar : char {}
-
-    /** signed 8-bit 2's complement integer */
-    [CCode (cname="ALCbyte", has_type_id = false)]
-    public struct ALCbyte : int8 {}
-
-    /** unsigned 8-bit integer */
-    [CCode (cname="ALCubyte", has_type_id = false)]
-    public struct ALCubyte : uint8 {}
-
-    /** signed 16-bit 2's complement integer */
-    [CCode (cname="ALCshort", has_type_id = false)]
-    public struct ALCshort : int16 {}
-
-    /** unsigned 16-bit integer */
-    [CCode (cname="ALCushort", has_type_id = false)]
-    public struct ALCushort : uint16 {}
-
-    /** signed 32-bit 2's complement integer */
-    [CCode (cname="ALCint", has_type_id = false)]
-    public struct ALCint : int32 {}
-
-    /** unsigned 32-bit integer */
-    [CCode (cname="ALCuint", has_type_id = false)]
-    public struct ALCuint : uint32 {}
-
-    /** non-negative 32-bit binary integer size */
-    [CCode (cname="ALCsizei", has_type_id = false)]
-    public struct ALCsizei : int32 {}
-
-    /** enumerated 32-bit value */
-    [CCode (cname="ALCenum", has_type_id = false)]
-    public struct ALCenum : int32 {}
-
-    /** 32-bit IEEE754 floating-point */
-    [CCode (cname="ALCfloat", has_type_id = false)]
-    public struct ALCfloat : float {}
-
-    /** 64-bit IEEE754 floating-point */
-    [CCode (cname="ALCdouble", has_type_id = false)]
-    public struct ALCdouble : double {}
-
-    /** void type (for opaque pointers only) */
-    [CCode (cname="ALCvoid", has_type_id = false)]
-    public struct ALCvoid {}
-
-    /** Boolean False. */
-    [CCode (cname="ALC_FALSE")]
-    public const ALCenum FALSE;
-
-    /** Boolean True. */
-    [CCode (cname="ALC_TRUE")]
-    public const ALCenum TRUE;
-
-    /** Context attribute: <int> Hz. */
-    [CCode (cname="ALC_FREQUENCY")]
-    public const ALCenum FREQUENCY;
-
-    /** Context attribute: <int> Hz. */
-    [CCode (cname="ALC_REFRESH")]
-    public const ALCenum REFRESH;
-
-    /** Context attribute: AL_TRUE or AL_FALSE. */
-    [CCode (cname="ALC_SYNC")]
-    public const ALCenum SYNC;
-
-    /** Context attribute: <int> requested Mono (3D) Sources. */
-    [CCode (cname="ALC_MONO_SOURCES")]
-    public const ALCenum MONO_SOURCES;
-
-    /** Context attribute: <int> requested Stereo Sources. */
-    [CCode (cname="ALC_STEREO_SOURCES")]
-    public const ALCenum STEREO_SOURCES;
-
-    [CCode (cname = "ALCenum", cprefix = "ALC_", has_type_id = false)]
-    public enum Error {
-        /** No error. */
-        NO_ERROR,
-        /** Invalid device handle. */
-        INVALID_DEVICE,
-        /** Invalid context handle. */
-        INVALID_CONTEXT,
-        /** Invalid enum parameter passed to an ALC call. */
-        INVALID_ENUM,
-        /** Invalid value parameter passed to an ALC call. */
-        INVALID_VALUE,
-        /** Out of memory. */
-        OUT_OF_MEMORY
-    }
-
-    /** Runtime ALC version. */
-    [CCode (cname="ALC_MAJOR_VERSION")]
-    public const ALCenum MAJOR_VERSION;
-    [CCode (cname="ALC_MINOR_VERSION")]
-    public const ALCenum MINOR_VERSION;
-
-    /** Context attribute list properties. */
-    [CCode (cname="ALC_ATTRIBUTES_SIZE")]
-    public const ALCenum ATTRIBUTES_SIZE;
-    [CCode (cname="ALC_ALL_ATTRIBUTES")]
-    public const ALCenum ALL_ATTRIBUTES;
-
-    /** String for the default device specifier. */
-    [CCode (cname="ALC_DEFAULT_DEVICE_SPECIFIER")]
-    public const ALCenum DEFAULT_DEVICE_SPECIFIER;
-
-    /**
-    * String for the given device's specifier.
-    *
-    * If device handle is NULL, it is instead a null-char separated list of
-    * strings of known device specifiers (list ends with an empty string).
-    */
-    [CCode (cname="ALC_DEVICE_SPECIFIER")]
-    public const ALCenum DEVICE_SPECIFIER;
-    /** String for space-separated list of ALC extensions. */
-    [CCode (cname="ALC_EXTENSIONS")]
-    public const ALCenum EXTENSIONS;
-
-    /** Capture extension */
-    [CCode (cname="ALC_EXT_CAPTURE")]
-    public const ALCenum EXT_CAPTURE;
-
-    /**
-    * String for the given capture device's specifier.
-    *
-    * If device handle is NULL, it is instead a null-char separated list of
-    * strings of known capture device specifiers (list ends with an empty string).
-    */
-    [CCode (cname="ALC_CAPTURE_DEVICE_SPECIFIER")]
-    public const ALCenum CAPTURE_DEVICE_SPECIFIER;
-    /** String for the default capture device specifier. */
-    [CCode (cname="ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER")]
-    public const ALCenum CAPTURE_DEFAULT_DEVICE_SPECIFIER;
-    /** Number of sample frames available for capture. */
-    [CCode (cname="ALC_CAPTURE_SAMPLES")]
-    public const ALCenum CAPTURE_SAMPLES;
-
-    /** Enumerate All extension */
-    [CCode (cname="ALC_ENUMERATE_ALL_EXT")]
-    public const ALCenum ENUMERATE_ALL_EXT;
-    /** String for the default extended device specifier. */
-    [CCode (cname="ALC_DEFAULT_ALL_DEVICES_SPECIFIER")]
-    public const ALCenum DEFAULT_ALL_DEVICES_SPECIFIER;
-
-    /**
-    * String for the given extended device's specifier.
-    *
-    * If device handle is NULL, it is instead a null-char separated list of
-    * strings of known extended device specifiers (list ends with an empty string).
-    */
-    [CCode (cname="ALC_ALL_DEVICES_SPECIFIER")]
-    public const ALCenum ALL_DEVICES_SPECIFIER;
-
-
-    /** Context management. */
-    [Compact]
-    [CCode (cname="ALCcontext", has_type_id = false, free_function="alcDestroyContext")]
-    public class Context {
-        [CCode (cname="alcCreateContext")]
-        public Context (Device device, [CCode (array_length = false)] ALCint[]? attrlist);
-
-        [CCode (cname="alcMakeContextCurrent")]
-        public bool make_current();
-
-        [CCode (cname="alcProcessContext")]
-        public void process();
-
-        [CCode (cname="alcSuspendContext")]
-        public void suspend();
-
-        [CCode (cname="alcDestroyContext")]
-        public void destroy();
-
-        [CCode (cname="alcGetContextsDevice")]
-        public Device get_contexts_device();
-    }
-
-    [CCode (cname="alcGetCurrentContext")]
-    public static Context get_current_context();
-
-    /** Device management. */
-    [Compact]
-    [CCode (cname="ALCdevice", has_type_id = false, free_function="alcCloseDevice")]
-    public class Device {
-        [CCode (cname="alcOpenDevice")]
-        public Device (string? devicename);
-
-        /**
-        * Extension support.
-        *
-        * Query for the presence of an extension, and obtain any appropriate
-        * function pointers and enum values.
-        */
-        [CCode (cname="alcIsExtensionPresent")]
-        public bool is_extension_present(string extname);
-        [CCode (cname="alcGetProcAddress")]
-        public void* get_proc_address(string funcname);
-        [CCode (cname="alcGetEnumValue")]
-        public ALCenum get_enum_value(string enumname);
-
-        /** Query function. */
-        [CCode (cname="alcGetString")]
-        public unowned string? get_string(ALCenum param);
-        [CCode (cname="alcGetIntegerv")]
-        public void get_integerv(ALCenum param, ALCsizei size, [CCode (array_length = false)] ALCint[] 
values);
-
-        /**
-        * Error support.
-        *
-        * Obtain the most recent Device error.
-        */
-        [CCode (cname="alcGetError")]
-        public Error get_error();
-
-        [CCode (cname="alcCloseDevice")]
-        public bool destroy();
-    }
-
-    [Compact]
-    [CCode (cname="ALCdevice", has_type_id = false, free_function="alcCaptureCloseDevice")]
-    public class CaptureDevice : Device {
-        /** Capture function. */
-        [CCode (cname="alcCaptureOpenDevice")]
-        public CaptureDevice(string devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);
-
-        [CCode (cname="alcCaptureCloseDevice")]
-        public bool destroy();
-
-        [CCode (cname="alcCaptureStart")]
-        public void start();
-
-        [CCode (cname="alcCaptureStop")]
-        public void stop();
-
-        [CCode (cname="alcCaptureSamples")]
-        public void samples([CCode (array_length = false)] uint8[] buffer, ALCsizei samples);
-    }
+       /** 8-bit boolean */
+       [CCode (cname = "ALCboolean", has_type_id = false)] 
+       public struct Boolean : int8 {}
+
+       /** character */
+       [CCode (cname = "ALCchar", has_type_id = false)] 
+       public struct Char : char {}
+
+       /** signed 8-bit 2's complement integer */
+       [CCode (cname = "ALCbyte", has_type_id = false)] 
+       public struct Byte : int8 {}
+
+       /** unsigned 8-bit integer */
+       [CCode (cname = "ALCubyte", has_type_id = false)] 
+       public struct Ubyte : uint8 {}
+
+       /** signed 16-bit 2's complement integer */
+       [CCode (cname = "ALCshort", has_type_id = false)] 
+       public struct Short : int16 {}
+
+       /** unsigned 16-bit integer */
+       [CCode (cname = "ALCushort", has_type_id = false)] 
+       public struct Ushort : uint16 {}
+
+       /** signed 32-bit 2's complement integer */
+       [CCode (cname = "ALCint", has_type_id = false)] 
+       public struct Int : int32 {}
+
+       /** unsigned 32-bit integer */
+       [CCode (cname = "ALCuint", has_type_id = false)] 
+       public struct Uint : uint32 {}
+
+       /** non-negative 32-bit binary integer size */
+       [CCode (cname = "ALCsizei", has_type_id = false)] 
+       public struct Sizei : int32 {}
+
+       /** enumerated 32-bit value */
+       [CCode (cname = "ALCenum", has_type_id = false)] 
+       public struct Enum : int32 {}
+
+       /** 32-bit IEEE754 floating-point */
+       [CCode (cname = "ALCfloat", has_type_id = false)] 
+       public struct Float : float {}
+
+       /** 64-bit IEEE754 floating-point */
+       [CCode (cname = "ALCdouble", has_type_id = false)] 
+       public struct Double : double {}
+
+       /** void type (for opaque pointers only) */
+       [CCode (cname = "ALCvoid", has_type_id = false)] 
+       public struct Void {}
+
+       /** Boolean False. */
+       [CCode (cname = "ALC_FALSE")] 
+       public const Enum FALSE;
+
+       /** Boolean True. */
+       [CCode (cname = "ALC_TRUE")] 
+       public const Enum TRUE;
+
+       /** Context attribute: <int> Hz. */
+       [CCode (cname = "ALC_FREQUENCY")] 
+       public const Enum FREQUENCY;
+
+       /** Context attribute: <int> Hz. */
+       [CCode (cname = "ALC_REFRESH")] 
+       public const Enum REFRESH;
+
+       /** Context attribute: AL_TRUE or AL_FALSE. */
+       [CCode (cname = "ALC_SYNC")] 
+       public const Enum SYNC;
+
+       /** Context attribute: <int> requested Mono (3D) Sources. */
+       [CCode (cname = "ALC_MONO_SOURCES")] 
+       public const Enum MONO_SOURCES;
+
+       /** Context attribute: <int> requested Stereo Sources. */
+       [CCode (cname = "ALC_STEREO_SOURCES")] 
+       public const Enum STEREO_SOURCES;
+
+       [CCode (cname = "ALCenum", cprefix = "ALC_", has_type_id = false)] 
+       public enum Error {
+               /** No error. */
+               NO_ERROR,
+               /** Invalid device handle. */
+               INVALID_DEVICE,
+               /** Invalid context handle. */
+               INVALID_CONTEXT,
+               /** Invalid enum parameter passed to an ALC call. */
+               INVALID_ENUM,
+               /** Invalid value parameter passed to an ALC call. */
+               INVALID_VALUE,
+               /** Out of memory. */
+               OUT_OF_MEMORY
+       }
+
+       /** Runtime ALC version. */
+       [CCode (cname = "ALC_MAJOR_VERSION")] 
+       public const Enum MAJOR_VERSION;
+       [CCode (cname = "ALC_MINOR_VERSION")] 
+       public const Enum MINOR_VERSION;
+
+       /** Context attribute list properties. */
+       [CCode (cname = "ALC_ATTRIBUTES_SIZE")] 
+       public const Enum ATTRIBUTES_SIZE;
+       [CCode (cname = "ALC_ALL_ATTRIBUTES")] 
+       public const Enum ALL_ATTRIBUTES;
+
+       /** String for the default device specifier. */
+       [CCode (cname = "ALC_DEFAULT_DEVICE_SPECIFIER")] 
+       public const Enum DEFAULT_DEVICE_SPECIFIER;
+
+       /**
+       * String for the given device's specifier.
+       *
+       * If device handle is NULL, it is instead a null-char separated list of
+       * strings of known device specifiers (list ends with an empty string).
+       */
+       [CCode (cname = "ALC_DEVICE_SPECIFIER")] 
+       public const Enum DEVICE_SPECIFIER;
+       /** String for space-separated list of ALC extensions. */
+       [CCode (cname = "ALC_EXTENSIONS")] 
+       public const Enum EXTENSIONS;
+
+       /** Capture extension */
+       [CCode (cname = "ALC_EXT_CAPTURE")] 
+       public const Enum EXT_CAPTURE;
+
+       /**
+       * String for the given capture device's specifier.
+       *
+       * If device handle is NULL, it is instead a null-char separated list of
+       * strings of known capture device specifiers (list ends with an empty string).
+       */
+       [CCode (cname = "ALC_CAPTURE_DEVICE_SPECIFIER")] 
+       public const Enum CAPTURE_DEVICE_SPECIFIER;
+       /** String for the default capture device specifier. */
+       [CCode (cname = "ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER")] 
+       public const Enum CAPTURE_DEFAULT_DEVICE_SPECIFIER;
+       /** Number of sample frames available for capture. */
+       [CCode (cname = "ALC_CAPTURE_SAMPLES")] 
+       public const Enum CAPTURE_SAMPLES;
+
+       /** Enumerate All extension */
+       [CCode (cname = "ALC_ENUMERATE_ALL_EXT")] 
+       public const Enum ENUMERATE_ALL_EXT;
+       /** String for the default extended device specifier. */
+       [CCode (cname = "ALC_DEFAULT_ALL_DEVICES_SPECIFIER")] 
+       public const Enum DEFAULT_ALL_DEVICES_SPECIFIER;
+
+       /**
+       * String for the given extended device's specifier.
+       *
+       * If device handle is NULL, it is instead a null-char separated list of
+       * strings of known extended device specifiers (list ends with an empty string).
+       */
+       [CCode (cname = "ALC_ALL_DEVICES_SPECIFIER")] 
+       public const Enum ALL_DEVICES_SPECIFIER;
+
+
+       /** Context management. */
+       [Compact] 
+       [CCode (cname = "ALCcontext", has_type_id = false, free_function = "alcDestroyContext")] 
+       public class Context {
+               [CCode (cname = "alcCreateContext")] 
+               public Context (Device device, [CCode (array_length = false)] Int[] ? attrlist);
+
+               [CCode (cname = "alcMakeContextCurrent")] 
+               public bool make_current ();
+
+               [CCode (cname = "alcProcessContext")] 
+               public void process ();
+
+               [CCode (cname = "alcSuspendContext")] 
+               public void suspend ();
+
+               [CCode (cname = "alcDestroyContext")] 
+               public void destroy ();
+
+               [CCode (cname = "alcGetContextsDevice")] 
+               public Device get_contexts_device ();
+       }
+
+       [CCode (cname = "alcGetCurrentContext")] 
+       public static Context get_current_context ();
+
+       /** Device management. */
+       [Compact] 
+       [CCode (cname = "ALCdevice", has_type_id = false, free_function = "alcCloseDevice")] 
+       public class Device {
+               [CCode (cname = "alcOpenDevice")] 
+               public Device (string? devicename);
+
+               /**
+               * Extension support.
+               *
+               * Query for the presence of an extension, and obtain any appropriate
+               * function pointers and enum values.
+               */
+               [CCode (cname = "alcIsExtensionPresent")] 
+               public bool is_extension_present (string extname);
+               [CCode (cname = "alcGetProcAddress")] 
+               public void* get_proc_address (string funcname);
+               [CCode (cname = "alcGetEnumValue")] 
+               public Enum get_enum_value (string enumname);
+
+               /** Query function. */
+               [CCode (cname = "alcGetString")] 
+               public unowned string? get_string (Enum param);
+               [CCode (cname = "alcGetIntegerv")] 
+               public void get_integerv (Enum param, Sizei size, [CCode (array_length = false)] Int[] 
values);
+
+               /**
+               * Error support.
+               *
+               * Obtain the most recent Device error.
+               */
+               [CCode (cname = "alcGetError")] 
+               public Error get_error ();
+
+               [CCode (cname = "alcCloseDevice")] 
+               public bool destroy ();
+       }
+
+       [Compact] 
+       [CCode (cname = "ALCdevice", has_type_id = false, free_function = "alcCaptureCloseDevice")] 
+       public class CaptureDevice : Device {
+               /** Capture function. */
+               [CCode (cname = "alcCaptureOpenDevice")] 
+               public CaptureDevice (string devicename, Uint frequency, Enum format, Sizei buffersize);
+
+               [CCode (cname = "alcCaptureCloseDevice")] 
+               public bool destroy ();
+
+               [CCode (cname = "alcCaptureStart")] 
+               public void start ();
+
+               [CCode (cname = "alcCaptureStop")] 
+               public void stop ();
+
+               [CCode (cname = "alcCaptureSamples")] 
+               public void samples ([CCode (array_length = false)] uint8[] buffer, Sizei samples);
+       }
 }


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