1 
2 #ifndef FMOD_WRAP_H
3 #define FMOD_WRAP_H
4 
5 #ifndef NO_FMOD
6 
7 #if !defined(_WIN32) || defined(_MSC_VER)
8 // Use the real C++ interface if it's supported on this platform.
9 #include "fmod.hpp"
10 #else
11 // Use a wrapper C++ interface for non-Microsoft compilers on Windows.
12 
13 #include "fmod.h"
14 
15 // Create fake definitions for these structs so they can be subclassed.
16 struct FMOD_SYSTEM {};
17 struct FMOD_SOUND {};
18 struct FMOD_CHANNEL {};
19 struct FMOD_CHANNELGROUP {};
20 struct FMOD_SOUNDGROUP {};
21 struct FMOD_REVERB {};
22 struct FMOD_DSP {};
23 struct FMOD_DSPCONNECTION {};
24 struct FMOD_POLYGON {};
25 struct FMOD_GEOMETRY {};
26 struct FMOD_SYNCPOINT {};
27 /*
28 	Constant and defines
29 */
30 
31 /*
32 	FMOD Namespace
33 */
34 
35 namespace FMOD
36 {
37 
38 	class System;
39 	class Sound;
40 	class Channel;
41 	class ChannelGroup;
42 	class SoundGroup;
43 	class Reverb;
44 	class DSP;
45 	class DSPConnection;
46 	class Geometry;
47 
48 	/*
49 		FMOD global system functions (optional).
50 	*/
51 	inline FMOD_RESULT Memory_Initialize(void *poolmem, int poollen, FMOD_MEMORY_ALLOCCALLBACK useralloc, FMOD_MEMORY_REALLOCCALLBACK userrealloc, FMOD_MEMORY_FREECALLBACK userfree, FMOD_MEMORY_TYPE memtypeflags = (FMOD_MEMORY_NORMAL | FMOD_MEMORY_XBOX360_PHYSICAL)) { return FMOD_Memory_Initialize(poolmem, poollen, useralloc, userrealloc, userfree, memtypeflags); }
52 	//inline FMOD_RESULT Memory_GetStats(int *currentalloced, int *maxalloced) { return FMOD_Memory_GetStats(currentalloced, maxalloced); }
Debug_SetLevel(FMOD_DEBUGLEVEL level)53 	inline FMOD_RESULT Debug_SetLevel(FMOD_DEBUGLEVEL level)  { return FMOD_Debug_SetLevel(level); }
Debug_GetLevel(FMOD_DEBUGLEVEL * level)54 	inline FMOD_RESULT Debug_GetLevel(FMOD_DEBUGLEVEL *level) { return FMOD_Debug_GetLevel(level); }
File_SetDiskBusy(int busy)55 	inline FMOD_RESULT File_SetDiskBusy(int busy) { return FMOD_File_SetDiskBusy(busy); }
File_GetDiskBusy(int * busy)56 	inline FMOD_RESULT File_GetDiskBusy(int *busy) { return FMOD_File_GetDiskBusy(busy); }
57 
58 	/*
59 		FMOD System factory functions.
60 	*/
System_Create(System ** system)61 	inline FMOD_RESULT System_Create(System **system) { return FMOD_System_Create((FMOD_SYSTEM **)system); }
62 
63 	/*
64 	   'System' API
65 	*/
66 
67 	class System : FMOD_SYSTEM
68 	{
69 	  private:
70 
71 		System();   /* Constructor made private so user cannot statically instance a System class.
72 					   System_Create must be used. */
73 	  public:
74 
release()75 		  FMOD_RESULT release                () { return FMOD_System_Release(this); }
76 
77 		// Pre-init functions.
setOutput(FMOD_OUTPUTTYPE output)78 		  FMOD_RESULT setOutput              (FMOD_OUTPUTTYPE output) { return FMOD_System_SetOutput(this, output); }
getOutput(FMOD_OUTPUTTYPE * output)79 		  FMOD_RESULT getOutput              (FMOD_OUTPUTTYPE *output) { return FMOD_System_GetOutput(this, output); }
getNumDrivers(int * numdrivers)80 		  FMOD_RESULT getNumDrivers          (int *numdrivers) { return FMOD_System_GetNumDrivers(this, numdrivers); }
getDriverInfo(int id,char * name,int namelen,FMOD_GUID * guid)81 		  FMOD_RESULT getDriverInfo          (int id, char *name, int namelen, FMOD_GUID *guid) { return FMOD_System_GetDriverInfo(this, id, name, namelen, guid); }
getDriverCaps(int id,FMOD_CAPS * caps,int * minfrequency,int * maxfrequency,FMOD_SPEAKERMODE * controlpanelspeakermode)82 		  FMOD_RESULT getDriverCaps          (int id, FMOD_CAPS *caps, int *minfrequency, int *maxfrequency, FMOD_SPEAKERMODE *controlpanelspeakermode) { return FMOD_System_GetDriverCaps(this, id, caps, minfrequency, maxfrequency, controlpanelspeakermode); }
setDriver(int driver)83 		  FMOD_RESULT setDriver              (int driver) { return FMOD_System_SetDriver(this, driver); }
getDriver(int * driver)84 		  FMOD_RESULT getDriver              (int *driver) { return FMOD_System_GetDriver(this, driver); }
setHardwareChannels(int min2d,int max2d,int min3d,int max3d)85 		  FMOD_RESULT setHardwareChannels    (int min2d, int max2d, int min3d, int max3d) { return FMOD_System_SetHardwareChannels(this, min2d, max2d, min3d, max3d); }
setSoftwareChannels(int numsoftwarechannels)86 		  FMOD_RESULT setSoftwareChannels    (int numsoftwarechannels) { return FMOD_System_SetSoftwareChannels(this, numsoftwarechannels); }
getSoftwareChannels(int * numsoftwarechannels)87 		  FMOD_RESULT getSoftwareChannels    (int *numsoftwarechannels) { return FMOD_System_GetSoftwareChannels(this, numsoftwarechannels); }
setSoftwareFormat(int samplerate,FMOD_SOUND_FORMAT format,int numoutputchannels,int maxinputchannels,FMOD_DSP_RESAMPLER resamplemethod)88 		  FMOD_RESULT setSoftwareFormat      (int samplerate, FMOD_SOUND_FORMAT format, int numoutputchannels, int maxinputchannels, FMOD_DSP_RESAMPLER resamplemethod) { return FMOD_System_SetSoftwareFormat(this, samplerate, format, numoutputchannels, maxinputchannels, resamplemethod); }
getSoftwareFormat(int * samplerate,FMOD_SOUND_FORMAT * format,int * numoutputchannels,int * maxinputchannels,FMOD_DSP_RESAMPLER * resamplemethod,int * bits)89 		  FMOD_RESULT getSoftwareFormat      (int *samplerate, FMOD_SOUND_FORMAT *format, int *numoutputchannels, int *maxinputchannels, FMOD_DSP_RESAMPLER *resamplemethod, int *bits) { return FMOD_System_GetSoftwareFormat(this, samplerate, format, numoutputchannels, maxinputchannels, resamplemethod, bits); }
setDSPBufferSize(unsigned int bufferlength,int numbuffers)90 		  FMOD_RESULT setDSPBufferSize       (unsigned int bufferlength, int numbuffers) { return FMOD_System_SetDSPBufferSize(this, bufferlength, numbuffers); }
getDSPBufferSize(unsigned int * bufferlength,int * numbuffers)91 		  FMOD_RESULT getDSPBufferSize       (unsigned int *bufferlength, int *numbuffers) { return FMOD_System_GetDSPBufferSize(this, bufferlength, numbuffers); }
setFileSystem(FMOD_FILE_OPENCALLBACK useropen,FMOD_FILE_CLOSECALLBACK userclose,FMOD_FILE_READCALLBACK userread,FMOD_FILE_SEEKCALLBACK userseek,int blockalign)92 		  FMOD_RESULT setFileSystem          (FMOD_FILE_OPENCALLBACK useropen, FMOD_FILE_CLOSECALLBACK userclose, FMOD_FILE_READCALLBACK userread, FMOD_FILE_SEEKCALLBACK userseek, int blockalign) { return FMOD_System_SetFileSystem(this, useropen, userclose, userread, userseek, blockalign); }
attachFileSystem(FMOD_FILE_OPENCALLBACK useropen,FMOD_FILE_CLOSECALLBACK userclose,FMOD_FILE_READCALLBACK userread,FMOD_FILE_SEEKCALLBACK userseek)93 		  FMOD_RESULT attachFileSystem       (FMOD_FILE_OPENCALLBACK useropen, FMOD_FILE_CLOSECALLBACK userclose, FMOD_FILE_READCALLBACK userread, FMOD_FILE_SEEKCALLBACK userseek) { return FMOD_System_AttachFileSystem(this, useropen, userclose, userread, userseek); }
setAdvancedSettings(FMOD_ADVANCEDSETTINGS * settings)94 		  FMOD_RESULT setAdvancedSettings    (FMOD_ADVANCEDSETTINGS *settings) { return FMOD_System_SetAdvancedSettings(this, settings); }
getAdvancedSettings(FMOD_ADVANCEDSETTINGS * settings)95 		  FMOD_RESULT getAdvancedSettings    (FMOD_ADVANCEDSETTINGS *settings) { return FMOD_System_GetAdvancedSettings(this, settings); }
setSpeakerMode(FMOD_SPEAKERMODE speakermode)96 		  FMOD_RESULT setSpeakerMode         (FMOD_SPEAKERMODE speakermode) { return FMOD_System_SetSpeakerMode(this, speakermode); }
getSpeakerMode(FMOD_SPEAKERMODE * speakermode)97 		  FMOD_RESULT getSpeakerMode         (FMOD_SPEAKERMODE *speakermode) { return FMOD_System_GetSpeakerMode(this, speakermode); }
setCallback(FMOD_SYSTEM_CALLBACK callback)98 		  FMOD_RESULT setCallback            (FMOD_SYSTEM_CALLBACK callback) { return FMOD_System_SetCallback(this, callback); }
99 
100 		// Plug-in support
setPluginPath(const char * path)101 		  FMOD_RESULT setPluginPath          (const char *path) { return FMOD_System_SetPluginPath(this, path); }
102 		  FMOD_RESULT loadPlugin             (const char *filename, unsigned int *handle, unsigned int priority = 0) { return FMOD_System_LoadPlugin(this, filename, handle, priority); }
unloadPlugin(unsigned int handle)103 		  FMOD_RESULT unloadPlugin           (unsigned int handle) { return FMOD_System_UnloadPlugin(this, handle); }
getNumPlugins(FMOD_PLUGINTYPE plugintype,int * numplugins)104 		  FMOD_RESULT getNumPlugins          (FMOD_PLUGINTYPE plugintype, int *numplugins) { return FMOD_System_GetNumPlugins(this, plugintype, numplugins); }
getPluginHandle(FMOD_PLUGINTYPE plugintype,int index,unsigned int * handle)105 		  FMOD_RESULT getPluginHandle        (FMOD_PLUGINTYPE plugintype, int index, unsigned int *handle) { return FMOD_System_GetPluginHandle(this, plugintype, index, handle); }
getPluginInfo(unsigned int handle,FMOD_PLUGINTYPE * plugintype,char * name,int namelen,unsigned int * version)106 		  FMOD_RESULT getPluginInfo          (unsigned int handle, FMOD_PLUGINTYPE *plugintype, char *name, int namelen, unsigned int *version) { return FMOD_System_GetPluginInfo(this, handle, plugintype, name, namelen, version); }
setOutputByPlugin(unsigned int handle)107 		  FMOD_RESULT setOutputByPlugin      (unsigned int handle) { return FMOD_System_SetOutputByPlugin(this, handle); }
getOutputByPlugin(unsigned int * handle)108 		  FMOD_RESULT getOutputByPlugin      (unsigned int *handle) { return FMOD_System_GetOutputByPlugin(this, handle); }
109 		  FMOD_RESULT createCodec            (FMOD_CODEC_DESCRIPTION *description, unsigned int priority = 0) { return FMOD_System_CreateCodec(this, description, priority); }
110 
111 		// Init/Close
init(int maxchannels,FMOD_INITFLAGS flags,void * extradriverdata)112 		  FMOD_RESULT init                   (int maxchannels, FMOD_INITFLAGS flags, void *extradriverdata) { return FMOD_System_Init(this, maxchannels, flags, extradriverdata); }
close()113 		  FMOD_RESULT close                  () { return FMOD_System_Close(this); }
114 
115 		// General post-init system functions
update()116 		  FMOD_RESULT update                 ()        /* IMPORTANT! CALL THIS ONCE PER FRAME! */ { return FMOD_System_Update(this); }
117 
set3DSettings(float dopplerscale,float distancefactor,float rolloffscale)118 		  FMOD_RESULT set3DSettings          (float dopplerscale, float distancefactor, float rolloffscale) { return FMOD_System_Set3DSettings(this, dopplerscale, distancefactor, rolloffscale); }
get3DSettings(float * dopplerscale,float * distancefactor,float * rolloffscale)119 		  FMOD_RESULT get3DSettings          (float *dopplerscale, float *distancefactor, float *rolloffscale) { return FMOD_System_Get3DSettings(this, dopplerscale, distancefactor, rolloffscale); }
set3DNumListeners(int numlisteners)120 		  FMOD_RESULT set3DNumListeners      (int numlisteners) { return FMOD_System_Set3DNumListeners(this, numlisteners); }
get3DNumListeners(int * numlisteners)121 		  FMOD_RESULT get3DNumListeners      (int *numlisteners) { return FMOD_System_Get3DNumListeners(this, numlisteners); }
set3DListenerAttributes(int listener,const FMOD_VECTOR * pos,const FMOD_VECTOR * vel,const FMOD_VECTOR * forward,const FMOD_VECTOR * up)122 		  FMOD_RESULT set3DListenerAttributes(int listener, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel, const FMOD_VECTOR *forward, const FMOD_VECTOR *up) { return FMOD_System_Set3DListenerAttributes(this, listener, pos, vel, forward, up); }
get3DListenerAttributes(int listener,FMOD_VECTOR * pos,FMOD_VECTOR * vel,FMOD_VECTOR * forward,FMOD_VECTOR * up)123 		  FMOD_RESULT get3DListenerAttributes(int listener, FMOD_VECTOR *pos, FMOD_VECTOR *vel, FMOD_VECTOR *forward, FMOD_VECTOR *up) { return FMOD_System_Get3DListenerAttributes(this, listener, pos, vel, forward, up); }
set3DRolloffCallback(FMOD_3D_ROLLOFFCALLBACK callback)124 		  FMOD_RESULT set3DRolloffCallback   (FMOD_3D_ROLLOFFCALLBACK callback) { return FMOD_System_Set3DRolloffCallback(this, callback); }
set3DSpeakerPosition(FMOD_SPEAKER speaker,float x,float y,bool active)125 		  FMOD_RESULT set3DSpeakerPosition   (FMOD_SPEAKER speaker, float x, float y, bool active) { return FMOD_System_Set3DSpeakerPosition(this, speaker, x, y, active); }
get3DSpeakerPosition(FMOD_SPEAKER speaker,float * x,float * y,bool * active)126 		  FMOD_RESULT get3DSpeakerPosition   (FMOD_SPEAKER speaker, float *x, float *y, bool *active) { FMOD_BOOL b; FMOD_RESULT res = FMOD_System_Get3DSpeakerPosition(this, speaker, x, y, &b); *active = b; return res; }
127 
setStreamBufferSize(unsigned int filebuffersize,FMOD_TIMEUNIT filebuffersizetype)128 		  FMOD_RESULT setStreamBufferSize    (unsigned int filebuffersize, FMOD_TIMEUNIT filebuffersizetype) { return FMOD_System_SetStreamBufferSize(this, filebuffersize, filebuffersizetype); }
getStreamBufferSize(unsigned int * filebuffersize,FMOD_TIMEUNIT * filebuffersizetype)129 		  FMOD_RESULT getStreamBufferSize    (unsigned int *filebuffersize, FMOD_TIMEUNIT *filebuffersizetype) { return FMOD_System_GetStreamBufferSize(this, filebuffersize, filebuffersizetype); }
130 
131 		// System information functions.
getVersion(unsigned int * version)132 		  FMOD_RESULT getVersion             (unsigned int *version) { return FMOD_System_GetVersion(this, version); }
getOutputHandle(void ** handle)133 		  FMOD_RESULT getOutputHandle        (void **handle) { return FMOD_System_GetOutputHandle(this, handle); }
getChannelsPlaying(int * channels)134 		  FMOD_RESULT getChannelsPlaying     (int *channels) { return FMOD_System_GetChannelsPlaying(this, channels); }
getHardwareChannels(int * num2d,int * num3d,int * total)135 		  FMOD_RESULT getHardwareChannels    (int *num2d, int *num3d, int *total) { return FMOD_System_GetHardwareChannels(this, num2d, num3d, total); }
136 #if FMOD_VERSION < 0x42501
getCPUUsage(float * dsp,float * stream,float * update,float * total)137 		  FMOD_RESULT getCPUUsage            (float *dsp, float *stream, float *update, float *total) { return FMOD_System_GetCPUUsage(this, dsp, stream, update, total); }
138 #else
getCPUUsage(float * dsp,float * stream,float * geometry,float * update,float * total)139 		  FMOD_RESULT getCPUUsage            (float *dsp, float *stream, float *geometry, float *update, float *total) { return FMOD_System_GetCPUUsage(this, dsp, stream, geometry, update, total); }
140 #endif
getSoundRAM(int * currentalloced,int * maxalloced,int * total)141 		  FMOD_RESULT getSoundRAM            (int *currentalloced, int *maxalloced, int *total) { return FMOD_System_GetSoundRAM(this, currentalloced, maxalloced, total); }
getNumCDROMDrives(int * numdrives)142 		  FMOD_RESULT getNumCDROMDrives      (int *numdrives) { return FMOD_System_GetNumCDROMDrives(this, numdrives); }
getCDROMDriveName(int drive,char * drivename,int drivenamelen,char * scsiname,int scsinamelen,char * devicename,int devicenamelen)143 		  FMOD_RESULT getCDROMDriveName      (int drive, char *drivename, int drivenamelen, char *scsiname, int scsinamelen, char *devicename, int devicenamelen) { return FMOD_System_GetCDROMDriveName(this, drive, drivename, drivenamelen, scsiname, scsinamelen, devicename, devicenamelen); }
getSpectrum(float * spectrumarray,int numvalues,int channeloffset,FMOD_DSP_FFT_WINDOW windowtype)144 		  FMOD_RESULT getSpectrum            (float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype) { return FMOD_System_GetSpectrum(this, spectrumarray, numvalues, channeloffset, windowtype); }
getWaveData(float * wavearray,int numvalues,int channeloffset)145 		  FMOD_RESULT getWaveData            (float *wavearray, int numvalues, int channeloffset) { return FMOD_System_GetWaveData(this, wavearray, numvalues, channeloffset); }
146 
147 		// Sound/DSP/Channel/FX creation and retrieval.
createSound(const char * name_or_data,FMOD_MODE mode,FMOD_CREATESOUNDEXINFO * exinfo,Sound ** sound)148 		  FMOD_RESULT createSound            (const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, Sound **sound) { return FMOD_System_CreateSound(this, name_or_data, mode, exinfo, (FMOD_SOUND **)sound); }
createStream(const char * name_or_data,FMOD_MODE mode,FMOD_CREATESOUNDEXINFO * exinfo,Sound ** sound)149 		  FMOD_RESULT createStream           (const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, Sound **sound) { return FMOD_System_CreateStream(this, name_or_data, mode, exinfo, (FMOD_SOUND **)sound); }
createDSP(FMOD_DSP_DESCRIPTION * description,DSP ** dsp)150 		  FMOD_RESULT createDSP              (FMOD_DSP_DESCRIPTION *description, DSP **dsp) { return FMOD_System_CreateDSP(this, description, (FMOD_DSP **)dsp); }
createDSPByType(FMOD_DSP_TYPE type,DSP ** dsp)151 		  FMOD_RESULT createDSPByType        (FMOD_DSP_TYPE type, DSP **dsp) { return FMOD_System_CreateDSPByType(this, type, (FMOD_DSP **)dsp); }
createChannelGroup(const char * name,ChannelGroup ** channelgroup)152 		  FMOD_RESULT createChannelGroup     (const char *name, ChannelGroup **channelgroup) { return FMOD_System_CreateChannelGroup(this, name, (FMOD_CHANNELGROUP **)channelgroup); }
createSoundGroup(const char * name,SoundGroup ** soundgroup)153 		  FMOD_RESULT createSoundGroup       (const char *name, SoundGroup **soundgroup) { return FMOD_System_CreateSoundGroup(this, name, (FMOD_SOUNDGROUP **)soundgroup); }
createReverb(Reverb ** reverb)154 		  FMOD_RESULT createReverb           (Reverb **reverb) { return FMOD_System_CreateReverb(this, (FMOD_REVERB **)reverb); }
155 
playSound(FMOD_CHANNELINDEX channelid,Sound * sound,bool paused,Channel ** channel)156 		  FMOD_RESULT playSound              (FMOD_CHANNELINDEX channelid, Sound *sound, bool paused, Channel **channel) { return FMOD_System_PlaySound(this, channelid, (FMOD_SOUND *)sound, paused, (FMOD_CHANNEL **)channel); }
playDSP(FMOD_CHANNELINDEX channelid,DSP * dsp,bool paused,Channel ** channel)157 		  FMOD_RESULT playDSP                (FMOD_CHANNELINDEX channelid, DSP *dsp, bool paused, Channel **channel) { return FMOD_System_PlayDSP(this, channelid, (FMOD_DSP *)dsp, paused, (FMOD_CHANNEL **)channel); }
getChannel(int channelid,Channel ** channel)158 		  FMOD_RESULT getChannel             (int channelid, Channel **channel) { return FMOD_System_GetChannel(this, channelid, (FMOD_CHANNEL **)channel); }
getMasterChannelGroup(ChannelGroup ** channelgroup)159 		  FMOD_RESULT getMasterChannelGroup  (ChannelGroup **channelgroup) { return FMOD_System_GetMasterChannelGroup(this, (FMOD_CHANNELGROUP **)channelgroup); }
getMasterSoundGroup(SoundGroup ** soundgroup)160 		  FMOD_RESULT getMasterSoundGroup    (SoundGroup **soundgroup) { return FMOD_System_GetMasterSoundGroup(this, (FMOD_SOUNDGROUP **)soundgroup); }
161 
162 		// Reverb API
setReverbProperties(const FMOD_REVERB_PROPERTIES * prop)163 		  FMOD_RESULT setReverbProperties    (const FMOD_REVERB_PROPERTIES *prop) { return FMOD_System_SetReverbProperties(this, prop); }
getReverbProperties(FMOD_REVERB_PROPERTIES * prop)164 		  FMOD_RESULT getReverbProperties    (FMOD_REVERB_PROPERTIES *prop) { return FMOD_System_GetReverbProperties(this, prop); }
setReverbAmbientProperties(FMOD_REVERB_PROPERTIES * prop)165 		  FMOD_RESULT setReverbAmbientProperties(FMOD_REVERB_PROPERTIES *prop) { return FMOD_System_SetReverbAmbientProperties(this, prop); }
getReverbAmbientProperties(FMOD_REVERB_PROPERTIES * prop)166 		  FMOD_RESULT getReverbAmbientProperties(FMOD_REVERB_PROPERTIES *prop) { return FMOD_System_GetReverbAmbientProperties(this, prop); }
167 
168 		// System level DSP access.
getDSPHead(DSP ** dsp)169 		  FMOD_RESULT getDSPHead             (DSP **dsp) { return FMOD_System_GetDSPHead(this, (FMOD_DSP **)dsp); }
addDSP(DSP * dsp,DSPConnection ** connection)170 		  FMOD_RESULT addDSP                 (DSP *dsp, DSPConnection **connection) { return FMOD_System_AddDSP(this, (FMOD_DSP *)dsp, (FMOD_DSPCONNECTION**)dsp); }
lockDSP()171 		  FMOD_RESULT lockDSP                () { return FMOD_System_LockDSP(this); }
unlockDSP()172 		  FMOD_RESULT unlockDSP              () { return FMOD_System_UnlockDSP(this); }
getDSPClock(unsigned int * hi,unsigned int * lo)173 		  FMOD_RESULT getDSPClock            (unsigned int *hi, unsigned int *lo) { return FMOD_System_GetDSPClock(this, hi, lo); }
174 
175 		// Recording API.
getRecordNumDrivers(int * numdrivers)176 		  FMOD_RESULT getRecordNumDrivers    (int *numdrivers) { return FMOD_System_GetRecordNumDrivers(this, numdrivers); }
getRecordDriverInfo(int id,char * name,int namelen,FMOD_GUID * guid)177 		  FMOD_RESULT getRecordDriverInfo    (int id, char *name, int namelen, FMOD_GUID *guid) { return FMOD_System_GetRecordDriverInfo(this, id, name, namelen, guid); }
getRecordDriverCaps(int id,FMOD_CAPS * caps,int * minfrequency,int * maxfrequency)178 		  FMOD_RESULT getRecordDriverCaps    (int id, FMOD_CAPS *caps, int *minfrequency, int *maxfrequency) { return FMOD_System_GetRecordDriverCaps(this, id, caps, minfrequency, maxfrequency); }
getRecordPosition(int id,unsigned int * position)179 		  FMOD_RESULT getRecordPosition      (int id, unsigned int *position) { return FMOD_System_GetRecordPosition(this, id, position); }
180 
recordStart(int id,Sound * sound,bool loop)181 		  FMOD_RESULT recordStart            (int id, Sound *sound, bool loop) { return FMOD_System_RecordStart(this, id, (FMOD_SOUND *)sound, loop); }
recordStop(int id)182 		  FMOD_RESULT recordStop             (int id) { return FMOD_System_RecordStop(this, id); }
isRecording(int id,bool * recording)183 		  FMOD_RESULT isRecording            (int id, bool *recording) { FMOD_BOOL b; FMOD_RESULT res = FMOD_System_IsRecording(this, id, &b); *recording = b; return res; }
184 
185 		// Geometry API.
createGeometry(int maxpolygons,int maxvertices,Geometry ** geometry)186 		  FMOD_RESULT createGeometry         (int maxpolygons, int maxvertices, Geometry **geometry) { return FMOD_System_CreateGeometry(this, maxpolygons, maxvertices, (FMOD_GEOMETRY **)geometry); }
setGeometrySettings(float maxworldsize)187 		  FMOD_RESULT setGeometrySettings    (float maxworldsize) { return FMOD_System_SetGeometrySettings(this, maxworldsize); }
getGeometrySettings(float * maxworldsize)188 		  FMOD_RESULT getGeometrySettings    (float *maxworldsize) { return FMOD_System_GetGeometrySettings(this, maxworldsize); }
loadGeometry(const void * data,int datasize,Geometry ** geometry)189 		  FMOD_RESULT loadGeometry           (const void *data, int datasize, Geometry **geometry) { return FMOD_System_LoadGeometry(this, data, datasize, (FMOD_GEOMETRY **)geometry); }
190 
191 		// Network functions.
setNetworkProxy(const char * proxy)192 		  FMOD_RESULT setNetworkProxy        (const char *proxy) { return FMOD_System_SetNetworkProxy(this, proxy); }
getNetworkProxy(char * proxy,int proxylen)193 		  FMOD_RESULT getNetworkProxy        (char *proxy, int proxylen) { return FMOD_System_GetNetworkProxy(this, proxy, proxylen); }
setNetworkTimeout(int timeout)194 		  FMOD_RESULT setNetworkTimeout      (int timeout) { return FMOD_System_SetNetworkTimeout(this, timeout); }
getNetworkTimeout(int * timeout)195 		  FMOD_RESULT getNetworkTimeout      (int *timeout) { return FMOD_System_GetNetworkTimeout(this, timeout); }
196 
197 		// Userdata set/get.
setUserData(void * userdata)198 		  FMOD_RESULT setUserData            (void *userdata) { return FMOD_System_SetUserData(this, userdata); }
getUserData(void ** userdata)199 		  FMOD_RESULT getUserData            (void **userdata) { return FMOD_System_GetUserData(this, userdata); }
200 
getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)201 		  FMOD_RESULT getMemoryInfo          (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_System_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); }
202 	};
203 
204 	/*
205 		'Sound' API
206 	*/
207 	class Sound : FMOD_SOUND
208 	{
209 	  private:
210 
211 		Sound();   /* Constructor made private so user cannot statically instance a Sound class.
212 					  Appropriate Sound creation or retrieval function must be used. */
213 	  public:
214 
release()215 		  FMOD_RESULT release                () { return FMOD_Sound_Release(this); }
getSystemObject(System ** system)216 		  FMOD_RESULT getSystemObject        (System **system) { return FMOD_Sound_GetSystemObject(this, (FMOD_SYSTEM **)system); }
217 
218 		// Standard sound manipulation functions.
lock(unsigned int offset,unsigned int length,void ** ptr1,void ** ptr2,unsigned int * len1,unsigned int * len2)219 		  FMOD_RESULT lock                   (unsigned int offset, unsigned int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2) { return FMOD_Sound_Lock(this, offset, length, ptr1, ptr2, len1, len2); }
unlock(void * ptr1,void * ptr2,unsigned int len1,unsigned int len2)220 		  FMOD_RESULT unlock                 (void *ptr1, void *ptr2, unsigned int len1, unsigned int len2) { return FMOD_Sound_Unlock(this, ptr1, ptr2, len1, len2); }
setDefaults(float frequency,float volume,float pan,int priority)221 		  FMOD_RESULT setDefaults            (float frequency, float volume, float pan, int priority) { return FMOD_Sound_SetDefaults(this, frequency, volume, pan, priority); }
getDefaults(float * frequency,float * volume,float * pan,int * priority)222 		  FMOD_RESULT getDefaults            (float *frequency, float *volume, float *pan, int *priority) { return FMOD_Sound_GetDefaults(this, frequency, volume, pan, priority); }
setVariations(float frequencyvar,float volumevar,float panvar)223 		  FMOD_RESULT setVariations          (float frequencyvar, float volumevar, float panvar) { return FMOD_Sound_SetVariations(this, frequencyvar, volumevar, panvar); }
getVariations(float * frequencyvar,float * volumevar,float * panvar)224 		  FMOD_RESULT getVariations          (float *frequencyvar, float *volumevar, float *panvar) { return FMOD_Sound_GetVariations(this, frequencyvar, volumevar, panvar); }
set3DMinMaxDistance(float min,float max)225 		  FMOD_RESULT set3DMinMaxDistance    (float min, float max) { return FMOD_Sound_Set3DMinMaxDistance(this, min, max); }
get3DMinMaxDistance(float * min,float * max)226 		  FMOD_RESULT get3DMinMaxDistance    (float *min, float *max) { return FMOD_Sound_Get3DMinMaxDistance(this, min, max); }
set3DConeSettings(float insideconeangle,float outsideconeangle,float outsidevolume)227 		  FMOD_RESULT set3DConeSettings      (float insideconeangle, float outsideconeangle, float outsidevolume) { return FMOD_Sound_Set3DConeSettings(this, insideconeangle, outsideconeangle, outsidevolume); }
get3DConeSettings(float * insideconeangle,float * outsideconeangle,float * outsidevolume)228 		  FMOD_RESULT get3DConeSettings      (float *insideconeangle, float *outsideconeangle, float *outsidevolume) { return FMOD_Sound_Get3DConeSettings(this, insideconeangle, outsideconeangle, outsidevolume); }
set3DCustomRolloff(FMOD_VECTOR * points,int numpoints)229 		  FMOD_RESULT set3DCustomRolloff     (FMOD_VECTOR *points, int numpoints) { return FMOD_Sound_Set3DCustomRolloff(this, points, numpoints); }
get3DCustomRolloff(FMOD_VECTOR ** points,int * numpoints)230 		  FMOD_RESULT get3DCustomRolloff     (FMOD_VECTOR **points, int *numpoints) { return FMOD_Sound_Get3DCustomRolloff(this, points, numpoints); }
setSubSound(int index,Sound * subsound)231 		  FMOD_RESULT setSubSound            (int index, Sound *subsound) { return FMOD_Sound_SetSubSound(this, index, subsound); }
getSubSound(int index,Sound ** subsound)232 		  FMOD_RESULT getSubSound            (int index, Sound **subsound) { return FMOD_Sound_GetSubSound(this, index, (FMOD_SOUND **)subsound); }
setSubSoundSentence(int * subsoundlist,int numsubsounds)233 		  FMOD_RESULT setSubSoundSentence    (int *subsoundlist, int numsubsounds) { return FMOD_Sound_SetSubSoundSentence(this, subsoundlist, numsubsounds); }
getName(char * name,int namelen)234 		  FMOD_RESULT getName                (char *name, int namelen) { return FMOD_Sound_GetName(this, name, namelen); }
getLength(unsigned int * length,FMOD_TIMEUNIT lengthtype)235 		  FMOD_RESULT getLength              (unsigned int *length, FMOD_TIMEUNIT lengthtype) { return FMOD_Sound_GetLength(this, length, lengthtype); }
getFormat(FMOD_SOUND_TYPE * type,FMOD_SOUND_FORMAT * format,int * channels,int * bits)236 		  FMOD_RESULT getFormat              (FMOD_SOUND_TYPE *type, FMOD_SOUND_FORMAT *format, int *channels, int *bits) { return FMOD_Sound_GetFormat(this, type, format, channels, bits); }
getNumSubSounds(int * numsubsounds)237 		  FMOD_RESULT getNumSubSounds        (int *numsubsounds) { return FMOD_Sound_GetNumSubSounds(this, numsubsounds); }
getNumTags(int * numtags,int * numtagsupdated)238 		  FMOD_RESULT getNumTags             (int *numtags, int *numtagsupdated) { return FMOD_Sound_GetNumTags(this, numtags, numtagsupdated); }
getTag(const char * name,int index,FMOD_TAG * tag)239 		  FMOD_RESULT getTag                 (const char *name, int index, FMOD_TAG *tag) { return FMOD_Sound_GetTag(this, name, index, tag); }
getOpenState(FMOD_OPENSTATE * openstate,unsigned int * percentbuffered,bool * starving)240 		  FMOD_RESULT getOpenState           (FMOD_OPENSTATE *openstate, unsigned int *percentbuffered, bool *starving) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Sound_GetOpenState(this, openstate, percentbuffered, &b); *starving = b; return res; }
readData(void * buffer,unsigned int lenbytes,unsigned int * read)241 		  FMOD_RESULT readData               (void *buffer, unsigned int lenbytes, unsigned int *read) { return FMOD_Sound_ReadData(this, buffer, lenbytes, read); }
seekData(unsigned int pcm)242 		  FMOD_RESULT seekData               (unsigned int pcm) { return FMOD_Sound_SeekData(this, pcm); }
243 
setSoundGroup(SoundGroup * soundgroup)244 		  FMOD_RESULT setSoundGroup          (SoundGroup *soundgroup) { return FMOD_Sound_SetSoundGroup(this, (FMOD_SOUNDGROUP *)soundgroup); }
getSoundGroup(SoundGroup ** soundgroup)245 		  FMOD_RESULT getSoundGroup          (SoundGroup **soundgroup) { return FMOD_Sound_GetSoundGroup(this, (FMOD_SOUNDGROUP **)soundgroup); }
246 
247 		// Synchronization point API.  These points can come from markers embedded in wav files, and can also generate channel callbacks.
getNumSyncPoints(int * numsyncpoints)248 		  FMOD_RESULT getNumSyncPoints       (int *numsyncpoints) { return FMOD_Sound_GetNumSyncPoints(this, numsyncpoints); }
getSyncPoint(int index,FMOD_SYNCPOINT ** point)249 		  FMOD_RESULT getSyncPoint           (int index, FMOD_SYNCPOINT **point) { return FMOD_Sound_GetSyncPoint(this, index, point); }
getSyncPointInfo(FMOD_SYNCPOINT * point,char * name,int namelen,unsigned int * offset,FMOD_TIMEUNIT offsettype)250 		  FMOD_RESULT getSyncPointInfo       (FMOD_SYNCPOINT *point, char *name, int namelen, unsigned int *offset, FMOD_TIMEUNIT offsettype) { return FMOD_Sound_GetSyncPointInfo(this, point, name, namelen, offset, offsettype); }
addSyncPoint(unsigned int offset,FMOD_TIMEUNIT offsettype,const char * name,FMOD_SYNCPOINT ** point)251 		  FMOD_RESULT addSyncPoint           (unsigned int offset, FMOD_TIMEUNIT offsettype, const char *name, FMOD_SYNCPOINT **point) { return FMOD_Sound_AddSyncPoint(this, offset, offsettype, name, point); }
deleteSyncPoint(FMOD_SYNCPOINT * point)252 		  FMOD_RESULT deleteSyncPoint        (FMOD_SYNCPOINT *point) { return FMOD_Sound_DeleteSyncPoint(this, point); }
253 
254 		// Functions also in Channel class but here they are the 'default' to save having to change it in Channel all the time.
setMode(FMOD_MODE mode)255 		  FMOD_RESULT setMode                (FMOD_MODE mode) { return FMOD_Sound_SetMode(this, mode); }
getMode(FMOD_MODE * mode)256 		  FMOD_RESULT getMode                (FMOD_MODE *mode) { return FMOD_Sound_GetMode(this, mode); }
setLoopCount(int loopcount)257 		  FMOD_RESULT setLoopCount           (int loopcount) { return FMOD_Sound_SetLoopCount(this, loopcount); }
getLoopCount(int * loopcount)258 		  FMOD_RESULT getLoopCount           (int *loopcount) { return FMOD_Sound_GetLoopCount(this, loopcount); }
setLoopPoints(unsigned int loopstart,FMOD_TIMEUNIT loopstarttype,unsigned int loopend,FMOD_TIMEUNIT loopendtype)259 		  FMOD_RESULT setLoopPoints          (unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype) { return FMOD_Sound_SetLoopPoints(this, loopstart, loopstarttype, loopend, loopendtype); }
getLoopPoints(unsigned int * loopstart,FMOD_TIMEUNIT loopstarttype,unsigned int * loopend,FMOD_TIMEUNIT loopendtype)260 		  FMOD_RESULT getLoopPoints          (unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype) { return FMOD_Sound_GetLoopPoints(this, loopstart, loopstarttype, loopend, loopendtype); }
261 
262 		// Userdata set/get.
setUserData(void * userdata)263 		  FMOD_RESULT setUserData            (void *userdata) { return FMOD_Sound_SetUserData(this, userdata); }
getUserData(void ** userdata)264 		  FMOD_RESULT getUserData            (void **userdata) { return FMOD_Sound_GetUserData(this, userdata); }
265 
getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)266 		  FMOD_RESULT getMemoryInfo          (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_Sound_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); }
267 	};
268 
269 	/*
270 		'Channel' API.
271 	*/
272 	class Channel : FMOD_CHANNEL
273 	{
274 	  private:
275 
276 		Channel();   /* Constructor made private so user cannot statically instance a Channel class.
277 						Appropriate Channel creation or retrieval function must be used. */
278 	  public:
279 
getSystemObject(System ** system)280 		  FMOD_RESULT getSystemObject        (System **system) { return FMOD_Channel_GetSystemObject(this, (FMOD_SYSTEM **)system); }
281 
stop()282 		  FMOD_RESULT stop                   () { return FMOD_Channel_Stop(this); }
setPaused(bool paused)283 		  FMOD_RESULT setPaused              (bool paused) { return FMOD_Channel_SetPaused(this, paused); }
getPaused(bool * paused)284 		  FMOD_RESULT getPaused              (bool *paused) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Channel_GetPaused(this, &b); *paused = b; return res; }
setVolume(float volume)285 		  FMOD_RESULT setVolume              (float volume) { return FMOD_Channel_SetVolume(this, volume); }
getVolume(float * volume)286 		  FMOD_RESULT getVolume              (float *volume) { return FMOD_Channel_GetVolume(this, volume); }
setFrequency(float frequency)287 		  FMOD_RESULT setFrequency           (float frequency) { return FMOD_Channel_SetFrequency(this, frequency); }
getFrequency(float * frequency)288 		  FMOD_RESULT getFrequency           (float *frequency) { return FMOD_Channel_GetFrequency(this, frequency); }
setPan(float pan)289 		  FMOD_RESULT setPan                 (float pan) { return FMOD_Channel_SetPan(this, pan); }
getPan(float * pan)290 		  FMOD_RESULT getPan                 (float *pan) { return FMOD_Channel_GetPan(this, pan); }
setDelay(FMOD_DELAYTYPE delaytype,unsigned int delayhi,unsigned int delaylo)291 		  FMOD_RESULT setDelay               (FMOD_DELAYTYPE delaytype, unsigned int delayhi, unsigned int delaylo) { return FMOD_Channel_SetDelay(this, delaytype, delayhi, delaylo); }
getDelay(FMOD_DELAYTYPE delaytype,unsigned int * delayhi,unsigned int * delaylo)292 		  FMOD_RESULT getDelay               (FMOD_DELAYTYPE delaytype, unsigned int *delayhi, unsigned int *delaylo) { return FMOD_Channel_GetDelay(this, delaytype, delayhi, delaylo); }
setSpeakerMix(float frontleft,float frontright,float center,float lfe,float backleft,float backright,float sideleft,float sideright)293 		  FMOD_RESULT setSpeakerMix          (float frontleft, float frontright, float center, float lfe, float backleft, float backright, float sideleft, float sideright) { return FMOD_Channel_SetSpeakerMix(this, frontleft, frontright, center, lfe, backleft, backright, sideleft, sideright); }
getSpeakerMix(float * frontleft,float * frontright,float * center,float * lfe,float * backleft,float * backright,float * sideleft,float * sideright)294 		  FMOD_RESULT getSpeakerMix          (float *frontleft, float *frontright, float *center, float *lfe, float *backleft, float *backright, float *sideleft, float *sideright) { return FMOD_Channel_GetSpeakerMix(this, frontleft, frontright, center, lfe, backleft, backright, sideleft, sideright); }
setSpeakerLevels(FMOD_SPEAKER speaker,float * levels,int numlevels)295 		  FMOD_RESULT setSpeakerLevels       (FMOD_SPEAKER speaker, float *levels, int numlevels) { return FMOD_Channel_SetSpeakerLevels(this, speaker, levels, numlevels); }
getSpeakerLevels(FMOD_SPEAKER speaker,float * levels,int numlevels)296 		  FMOD_RESULT getSpeakerLevels       (FMOD_SPEAKER speaker, float *levels, int numlevels) { return FMOD_Channel_GetSpeakerLevels(this, speaker, levels, numlevels); }
setInputChannelMix(float * levels,int numlevels)297 		  FMOD_RESULT setInputChannelMix     (float *levels, int numlevels) { return FMOD_Channel_SetInputChannelMix(this, levels, numlevels); }
getInputChannelMix(float * levels,int numlevels)298 		  FMOD_RESULT getInputChannelMix     (float *levels, int numlevels) { return FMOD_Channel_GetInputChannelMix(this, levels, numlevels); }
setMute(bool mute)299 		  FMOD_RESULT setMute                (bool mute) { return FMOD_Channel_SetMute(this, mute); }
getMute(bool * mute)300 		  FMOD_RESULT getMute                (bool *mute) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Channel_GetMute(this, &b); *mute = b; return res; }
setPriority(int priority)301 		  FMOD_RESULT setPriority            (int priority) { return FMOD_Channel_SetPriority(this, priority); }
getPriority(int * priority)302 		  FMOD_RESULT getPriority            (int *priority) { return FMOD_Channel_GetPriority(this, priority); }
setPosition(unsigned int position,FMOD_TIMEUNIT postype)303 		  FMOD_RESULT setPosition            (unsigned int position, FMOD_TIMEUNIT postype) { return FMOD_Channel_SetPosition(this, position, postype); }
getPosition(unsigned int * position,FMOD_TIMEUNIT postype)304 		  FMOD_RESULT getPosition            (unsigned int *position, FMOD_TIMEUNIT postype) { return FMOD_Channel_GetPosition(this, position, postype); }
setReverbProperties(const FMOD_REVERB_CHANNELPROPERTIES * prop)305 		  FMOD_RESULT setReverbProperties    (const FMOD_REVERB_CHANNELPROPERTIES *prop) { return FMOD_Channel_SetReverbProperties(this, prop); }
getReverbProperties(FMOD_REVERB_CHANNELPROPERTIES * prop)306 		  FMOD_RESULT getReverbProperties    (FMOD_REVERB_CHANNELPROPERTIES *prop) { return FMOD_Channel_GetReverbProperties(this, prop); }
307 
setChannelGroup(ChannelGroup * channelgroup)308 		  FMOD_RESULT setChannelGroup        (ChannelGroup *channelgroup) { return FMOD_Channel_SetChannelGroup(this, (FMOD_CHANNELGROUP *)channelgroup); }
getChannelGroup(ChannelGroup ** channelgroup)309 		  FMOD_RESULT getChannelGroup        (ChannelGroup **channelgroup) { return FMOD_Channel_GetChannelGroup(this, (FMOD_CHANNELGROUP **)channelgroup); }
setCallback(FMOD_CHANNEL_CALLBACK callback)310 		  FMOD_RESULT setCallback            (FMOD_CHANNEL_CALLBACK callback) { return FMOD_Channel_SetCallback(this, callback); }
setLowPassGain(float gain)311 		  FMOD_RESULT setLowPassGain         (float gain) { return FMOD_Channel_SetLowPassGain(this, gain); }
getLowPassGain(float * gain)312 		  FMOD_RESULT getLowPassGain         (float *gain) { return FMOD_Channel_GetLowPassGain(this, gain); }
313 
314 		// 3D functionality.
set3DAttributes(const FMOD_VECTOR * pos,const FMOD_VECTOR * vel)315 		  FMOD_RESULT set3DAttributes        (const FMOD_VECTOR *pos, const FMOD_VECTOR *vel) { return FMOD_Channel_Set3DAttributes(this, pos, vel); }
get3DAttributes(FMOD_VECTOR * pos,FMOD_VECTOR * vel)316 		  FMOD_RESULT get3DAttributes        (FMOD_VECTOR *pos, FMOD_VECTOR *vel) { return FMOD_Channel_Get3DAttributes(this, pos, vel); }
set3DMinMaxDistance(float mindistance,float maxdistance)317 		  FMOD_RESULT set3DMinMaxDistance    (float mindistance, float maxdistance) { return FMOD_Channel_Set3DMinMaxDistance(this, mindistance, maxdistance); }
get3DMinMaxDistance(float * mindistance,float * maxdistance)318 		  FMOD_RESULT get3DMinMaxDistance    (float *mindistance, float *maxdistance) { return FMOD_Channel_Get3DMinMaxDistance(this, mindistance, maxdistance); }
set3DConeSettings(float insideconeangle,float outsideconeangle,float outsidevolume)319 		  FMOD_RESULT set3DConeSettings      (float insideconeangle, float outsideconeangle, float outsidevolume) { return FMOD_Channel_Set3DConeSettings(this, insideconeangle, outsideconeangle, outsidevolume); }
get3DConeSettings(float * insideconeangle,float * outsideconeangle,float * outsidevolume)320 		  FMOD_RESULT get3DConeSettings      (float *insideconeangle, float *outsideconeangle, float *outsidevolume) { return FMOD_Channel_Get3DConeSettings(this, insideconeangle, outsideconeangle, outsidevolume); }
set3DConeOrientation(FMOD_VECTOR * orientation)321 		  FMOD_RESULT set3DConeOrientation   (FMOD_VECTOR *orientation) { return FMOD_Channel_Set3DConeOrientation(this, orientation); }
get3DConeOrientation(FMOD_VECTOR * orientation)322 		  FMOD_RESULT get3DConeOrientation   (FMOD_VECTOR *orientation) { return FMOD_Channel_Get3DConeOrientation(this, orientation); }
set3DCustomRolloff(FMOD_VECTOR * points,int numpoints)323 		  FMOD_RESULT set3DCustomRolloff     (FMOD_VECTOR *points, int numpoints) { return FMOD_Channel_Set3DCustomRolloff(this, points, numpoints); }
get3DCustomRolloff(FMOD_VECTOR ** points,int * numpoints)324 		  FMOD_RESULT get3DCustomRolloff     (FMOD_VECTOR **points, int *numpoints) { return FMOD_Channel_Get3DCustomRolloff(this, points, numpoints); }
set3DOcclusion(float directocclusion,float reverbocclusion)325 		  FMOD_RESULT set3DOcclusion         (float directocclusion, float reverbocclusion) { return FMOD_Channel_Set3DOcclusion(this, directocclusion, reverbocclusion); }
get3DOcclusion(float * directocclusion,float * reverbocclusion)326 		  FMOD_RESULT get3DOcclusion         (float *directocclusion, float *reverbocclusion) { return FMOD_Channel_Get3DOcclusion(this, directocclusion, reverbocclusion); }
set3DSpread(float angle)327 		  FMOD_RESULT set3DSpread            (float angle) { return FMOD_Channel_Set3DSpread(this, angle); }
get3DSpread(float * angle)328 		  FMOD_RESULT get3DSpread            (float *angle) { return FMOD_Channel_Get3DSpread(this, angle); }
set3DPanLevel(float level)329 		  FMOD_RESULT set3DPanLevel          (float level) { return FMOD_Channel_Set3DPanLevel(this, level); }
get3DPanLevel(float * level)330 		  FMOD_RESULT get3DPanLevel          (float *level) { return FMOD_Channel_Get3DPanLevel(this, level); }
set3DDopplerLevel(float level)331 		  FMOD_RESULT set3DDopplerLevel      (float level) { return FMOD_Channel_Set3DDopplerLevel(this, level); }
get3DDopplerLevel(float * level)332 		  FMOD_RESULT get3DDopplerLevel      (float *level) { return FMOD_Channel_Get3DDopplerLevel(this, level); }
333 
334 		// DSP functionality only for channels playing sounds created with FMOD_SOFTWARE.
getDSPHead(DSP ** dsp)335 		  FMOD_RESULT getDSPHead             (DSP **dsp) { return FMOD_Channel_GetDSPHead(this, (FMOD_DSP **)dsp); }
addDSP(DSP * dsp,DSPConnection ** connection)336 		  FMOD_RESULT addDSP                 (DSP *dsp, DSPConnection **connection) { return FMOD_Channel_AddDSP(this, (FMOD_DSP *)dsp, (FMOD_DSPCONNECTION **)connection); }
337 
338 		// Information only functions.
isPlaying(bool * isplaying)339 		  FMOD_RESULT isPlaying              (bool *isplaying) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Channel_IsPlaying(this, &b); *isplaying = b; return res; }
isVirtual(bool * isvirtual)340 		  FMOD_RESULT isVirtual              (bool *isvirtual) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Channel_IsVirtual(this, &b); *isvirtual = b; return res; }
getAudibility(float * audibility)341 		  FMOD_RESULT getAudibility          (float *audibility) { return FMOD_Channel_GetAudibility(this, audibility); }
getCurrentSound(Sound ** sound)342 		  FMOD_RESULT getCurrentSound        (Sound **sound) { return FMOD_Channel_GetCurrentSound(this, (FMOD_SOUND **)sound); }
getSpectrum(float * spectrumarray,int numvalues,int channeloffset,FMOD_DSP_FFT_WINDOW windowtype)343 		  FMOD_RESULT getSpectrum            (float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype) { return FMOD_Channel_GetSpectrum(this, spectrumarray, numvalues, channeloffset, windowtype); }
getWaveData(float * wavearray,int numvalues,int channeloffset)344 		  FMOD_RESULT getWaveData            (float *wavearray, int numvalues, int channeloffset) { return FMOD_Channel_GetWaveData(this, wavearray, numvalues, channeloffset); }
getIndex(int * index)345 		  FMOD_RESULT getIndex               (int *index) { return FMOD_Channel_GetIndex(this, index); }
346 
347 		// Functions also found in Sound class but here they can be set per channel.
setMode(FMOD_MODE mode)348 		  FMOD_RESULT setMode                (FMOD_MODE mode) { return FMOD_Channel_SetMode(this, mode); }
getMode(FMOD_MODE * mode)349 		  FMOD_RESULT getMode                (FMOD_MODE *mode) { return FMOD_Channel_GetMode(this, mode); }
setLoopCount(int loopcount)350 		  FMOD_RESULT setLoopCount           (int loopcount) { return FMOD_Channel_SetLoopCount(this, loopcount); }
getLoopCount(int * loopcount)351 		  FMOD_RESULT getLoopCount           (int *loopcount) { return FMOD_Channel_GetLoopCount(this, loopcount); }
setLoopPoints(unsigned int loopstart,FMOD_TIMEUNIT loopstarttype,unsigned int loopend,FMOD_TIMEUNIT loopendtype)352 		  FMOD_RESULT setLoopPoints          (unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype) { return FMOD_Channel_SetLoopPoints(this, loopstart, loopstarttype, loopend, loopendtype); }
getLoopPoints(unsigned int * loopstart,FMOD_TIMEUNIT loopstarttype,unsigned int * loopend,FMOD_TIMEUNIT loopendtype)353 		  FMOD_RESULT getLoopPoints          (unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype) { return FMOD_Channel_GetLoopPoints(this, loopstart, loopstarttype, loopend, loopendtype); }
354 
355 		// Userdata set/get.
setUserData(void * userdata)356 		  FMOD_RESULT setUserData            (void *userdata) { return FMOD_Channel_SetUserData(this, userdata); }
getUserData(void ** userdata)357 		  FMOD_RESULT getUserData            (void **userdata) { return FMOD_Channel_GetUserData(this, userdata); }
358 
getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)359 		  FMOD_RESULT getMemoryInfo          (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_Channel_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); }
360 	};
361 
362 	/*
363 		'ChannelGroup' API
364 	*/
365 	class ChannelGroup : FMOD_CHANNELGROUP
366 	{
367 	  private:
368 
369 		ChannelGroup();   /* Constructor made private so user cannot statically instance a ChannelGroup class.
370 							 Appropriate ChannelGroup creation or retrieval function must be used. */
371 	  public:
372 
release()373 		  FMOD_RESULT release                 () { return FMOD_ChannelGroup_Release(this); }
getSystemObject(System ** system)374 		  FMOD_RESULT getSystemObject         (System **system) { return FMOD_ChannelGroup_GetSystemObject(this, (FMOD_SYSTEM **)system); }
375 
376 		// Channelgroup scale values.  (changes attributes relative to the channels, doesn't overwrite them)
setVolume(float volume)377 		  FMOD_RESULT setVolume               (float volume) { return FMOD_ChannelGroup_SetVolume(this, volume); }
getVolume(float * volume)378 		  FMOD_RESULT getVolume               (float *volume) { return FMOD_ChannelGroup_GetVolume(this, volume); }
setPitch(float pitch)379 		  FMOD_RESULT setPitch                (float pitch) { return FMOD_ChannelGroup_SetPitch(this, pitch); }
getPitch(float * pitch)380 		  FMOD_RESULT getPitch                (float *pitch) { return FMOD_ChannelGroup_GetPitch(this, pitch); }
set3DOcclusion(float directocclusion,float reverbocclusion)381 		  FMOD_RESULT set3DOcclusion          (float directocclusion, float reverbocclusion) { return FMOD_ChannelGroup_Set3DOcclusion(this, directocclusion, reverbocclusion); }
get3DOcclusion(float * directocclusion,float * reverbocclusion)382 		  FMOD_RESULT get3DOcclusion          (float *directocclusion, float *reverbocclusion) { return FMOD_ChannelGroup_Get3DOcclusion(this, directocclusion, reverbocclusion); }
setPaused(bool paused)383 		  FMOD_RESULT setPaused               (bool paused) { return FMOD_ChannelGroup_SetPaused(this, paused); }
getPaused(bool * paused)384 		  FMOD_RESULT getPaused               (bool *paused) { FMOD_BOOL b; FMOD_RESULT res = FMOD_ChannelGroup_GetPaused(this, &b); *paused = b; return res; }
setMute(bool mute)385 		  FMOD_RESULT setMute                 (bool mute) { return FMOD_ChannelGroup_SetMute(this, mute); }
getMute(bool * mute)386 		  FMOD_RESULT getMute                 (bool *mute) { FMOD_BOOL b; FMOD_RESULT res = FMOD_ChannelGroup_GetMute(this, &b); *mute = b; return res; }
387 
388 		// Channelgroup override values.  (recursively overwrites whatever settings the channels had)
stop()389 		  FMOD_RESULT stop                    () { return FMOD_ChannelGroup_Stop(this); }
overrideVolume(float volume)390 		  FMOD_RESULT overrideVolume          (float volume) { return FMOD_ChannelGroup_OverrideVolume(this, volume); }
overrideFrequency(float frequency)391 		  FMOD_RESULT overrideFrequency       (float frequency) { return FMOD_ChannelGroup_OverrideFrequency(this, frequency); }
overridePan(float pan)392 		  FMOD_RESULT overridePan             (float pan) { return FMOD_ChannelGroup_OverridePan(this, pan); }
overrideReverbProperties(const FMOD_REVERB_CHANNELPROPERTIES * prop)393 		  FMOD_RESULT overrideReverbProperties(const FMOD_REVERB_CHANNELPROPERTIES *prop) { return FMOD_ChannelGroup_OverrideReverbProperties(this, prop); }
override3DAttributes(const FMOD_VECTOR * pos,const FMOD_VECTOR * vel)394 		  FMOD_RESULT override3DAttributes    (const FMOD_VECTOR *pos, const FMOD_VECTOR *vel) { return FMOD_ChannelGroup_Override3DAttributes(this, pos, vel); }
overrideSpeakerMix(float frontleft,float frontright,float center,float lfe,float backleft,float backright,float sideleft,float sideright)395 		  FMOD_RESULT overrideSpeakerMix      (float frontleft, float frontright, float center, float lfe, float backleft, float backright, float sideleft, float sideright) { return FMOD_ChannelGroup_OverrideSpeakerMix(this, frontleft, frontright, center, lfe, backleft, backright, sideleft, sideright); }
396 
397 		// Nested channel groups.
addGroup(ChannelGroup * group)398 		  FMOD_RESULT addGroup                (ChannelGroup *group) { return FMOD_ChannelGroup_AddGroup(this, group); }
getNumGroups(int * numgroups)399 		  FMOD_RESULT getNumGroups            (int *numgroups) { return FMOD_ChannelGroup_GetNumGroups(this, numgroups); }
getGroup(int index,ChannelGroup ** group)400 		  FMOD_RESULT getGroup                (int index, ChannelGroup **group) { return FMOD_ChannelGroup_GetGroup(this, index, (FMOD_CHANNELGROUP **)group); }
getParentGroup(ChannelGroup ** group)401 		  FMOD_RESULT getParentGroup          (ChannelGroup **group) { return FMOD_ChannelGroup_GetParentGroup(this, (FMOD_CHANNELGROUP **)group); }
402 
403 		// DSP functionality only for channel groups playing sounds created with FMOD_SOFTWARE.
getDSPHead(DSP ** dsp)404 		  FMOD_RESULT getDSPHead              (DSP **dsp) { return FMOD_ChannelGroup_GetDSPHead(this, (FMOD_DSP **)dsp); }
addDSP(DSP * dsp,DSPConnection ** connection)405 		  FMOD_RESULT addDSP                  (DSP *dsp, DSPConnection **connection) { return FMOD_ChannelGroup_AddDSP(this, (FMOD_DSP *)dsp, (FMOD_DSPCONNECTION **)connection); }
406 
407 		// Information only functions.
getName(char * name,int namelen)408 		  FMOD_RESULT getName                 (char *name, int namelen) { return FMOD_ChannelGroup_GetName(this, name, namelen); }
getNumChannels(int * numchannels)409 		  FMOD_RESULT getNumChannels          (int *numchannels) { return FMOD_ChannelGroup_GetNumChannels(this, numchannels); }
getChannel(int index,Channel ** channel)410 		  FMOD_RESULT getChannel              (int index, Channel **channel) { return FMOD_ChannelGroup_GetChannel(this, index, (FMOD_CHANNEL **)channel); }
getSpectrum(float * spectrumarray,int numvalues,int channeloffset,FMOD_DSP_FFT_WINDOW windowtype)411 		  FMOD_RESULT getSpectrum             (float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype) { return FMOD_ChannelGroup_GetSpectrum(this, spectrumarray, numvalues, channeloffset, windowtype); }
getWaveData(float * wavearray,int numvalues,int channeloffset)412 		  FMOD_RESULT getWaveData             (float *wavearray, int numvalues, int channeloffset) { return FMOD_ChannelGroup_GetWaveData(this, wavearray, numvalues, channeloffset) ;}
413 
414 		// Userdata set/get.
setUserData(void * userdata)415 		  FMOD_RESULT setUserData             (void *userdata) { return FMOD_ChannelGroup_SetUserData(this, userdata); }
getUserData(void ** userdata)416 		  FMOD_RESULT getUserData             (void **userdata) { return FMOD_ChannelGroup_GetUserData(this, userdata); }
417 
getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)418 		  FMOD_RESULT getMemoryInfo           (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_ChannelGroup_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); }
419 	};
420 
421 	/*
422 		'SoundGroup' API
423 	*/
424 	class SoundGroup : FMOD_SOUNDGROUP
425 	{
426 	  private:
427 
428 		SoundGroup();       /* Constructor made private so user cannot statically instance a SoundGroup class.
429 							   Appropriate SoundGroup creation or retrieval function must be used. */
430 	  public:
431 
release()432 		  FMOD_RESULT release                () { return FMOD_SoundGroup_Release(this); }
getSystemObject(System ** system)433 		  FMOD_RESULT getSystemObject        (System **system) { return FMOD_SoundGroup_GetSystemObject(this, (FMOD_SYSTEM **)system); }
434 
435 		// SoundGroup control functions.
setMaxAudible(int maxaudible)436 		  FMOD_RESULT setMaxAudible          (int maxaudible) { return FMOD_SoundGroup_SetMaxAudible(this, maxaudible); }
getMaxAudible(int * maxaudible)437 		  FMOD_RESULT getMaxAudible          (int *maxaudible) { return FMOD_SoundGroup_GetMaxAudible(this, maxaudible); }
setMaxAudibleBehavior(FMOD_SOUNDGROUP_BEHAVIOR behavior)438 		  FMOD_RESULT setMaxAudibleBehavior  (FMOD_SOUNDGROUP_BEHAVIOR behavior) { return FMOD_SoundGroup_SetMaxAudibleBehavior(this, behavior); }
getMaxAudibleBehavior(FMOD_SOUNDGROUP_BEHAVIOR * behavior)439 		  FMOD_RESULT getMaxAudibleBehavior  (FMOD_SOUNDGROUP_BEHAVIOR *behavior) { return FMOD_SoundGroup_GetMaxAudibleBehavior(this, behavior); }
setMuteFadeSpeed(float speed)440 		  FMOD_RESULT setMuteFadeSpeed       (float speed) { return FMOD_SoundGroup_SetMuteFadeSpeed(this, speed); }
getMuteFadeSpeed(float * speed)441 		  FMOD_RESULT getMuteFadeSpeed       (float *speed) { return FMOD_SoundGroup_GetMuteFadeSpeed(this, speed); }
setVolume(float volume)442 		  FMOD_RESULT setVolume              (float volume) { return FMOD_SoundGroup_SetVolume(this, volume); }
getVolume(float * volume)443 		  FMOD_RESULT getVolume              (float *volume) { return FMOD_SoundGroup_GetVolume(this, volume); }
stop()444 		  FMOD_RESULT stop                   () { return FMOD_SoundGroup_Stop(this); }
445 
446 		// Information only functions.
getName(char * name,int namelen)447 		  FMOD_RESULT getName                (char *name, int namelen) { return FMOD_SoundGroup_GetName(this, name, namelen); }
getNumSounds(int * numsounds)448 		  FMOD_RESULT getNumSounds           (int *numsounds) { return FMOD_SoundGroup_GetNumSounds(this, numsounds); }
getSound(int index,Sound ** sound)449 		  FMOD_RESULT getSound               (int index, Sound **sound) { return FMOD_SoundGroup_GetSound(this, index, (FMOD_SOUND **)sound); }
getNumPlaying(int * numplaying)450 		  FMOD_RESULT getNumPlaying          (int *numplaying) { return FMOD_SoundGroup_GetNumPlaying(this, numplaying); }
451 
452 		// Userdata set/get.
setUserData(void * userdata)453 		  FMOD_RESULT setUserData            (void *userdata) { return FMOD_SoundGroup_SetUserData(this, userdata); }
getUserData(void ** userdata)454 		  FMOD_RESULT getUserData            (void **userdata) { return FMOD_SoundGroup_GetUserData(this, userdata); }
455 
getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)456 		  FMOD_RESULT getMemoryInfo          (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_SoundGroup_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); }
457 	};
458 
459 	/*
460 		'DSP' API
461 	*/
462 	class DSP : FMOD_DSP
463 	{
464 	  private:
465 
466 		DSP();   /* Constructor made private so user cannot statically instance a DSP class.
467 					Appropriate DSP creation or retrieval function must be used. */
468 	  public:
469 
release()470 		  FMOD_RESULT release                () { return FMOD_DSP_Release(this); }
getSystemObject(System ** system)471 		  FMOD_RESULT getSystemObject        (System **system) { return FMOD_DSP_GetSystemObject(this, (FMOD_SYSTEM **)system); }
472 
473 		// Connection / disconnection / input and output enumeration.
addInput(DSP * target,DSPConnection ** connection)474 		  FMOD_RESULT addInput               (DSP *target, DSPConnection **connection) { return FMOD_DSP_AddInput(this, target, (FMOD_DSPCONNECTION **)connection); }
disconnectFrom(DSP * target)475 		  FMOD_RESULT disconnectFrom         (DSP *target) { return FMOD_DSP_DisconnectFrom(this, target); }
disconnectAll(bool inputs,bool outputs)476 		  FMOD_RESULT disconnectAll          (bool inputs, bool outputs) { return FMOD_DSP_DisconnectAll(this, inputs, outputs); }
remove()477 		  FMOD_RESULT remove                 () { return FMOD_DSP_Remove(this); }
getNumInputs(int * numinputs)478 		  FMOD_RESULT getNumInputs           (int *numinputs) { return FMOD_DSP_GetNumInputs(this, numinputs); }
getNumOutputs(int * numoutputs)479 		  FMOD_RESULT getNumOutputs          (int *numoutputs) { return FMOD_DSP_GetNumOutputs(this, numoutputs); }
getInput(int index,DSP ** input,DSPConnection ** inputconnection)480 		  FMOD_RESULT getInput               (int index, DSP **input, DSPConnection **inputconnection) { return FMOD_DSP_GetInput(this, index, (FMOD_DSP **)input, (FMOD_DSPCONNECTION **)inputconnection); }
getOutput(int index,DSP ** output,DSPConnection ** outputconnection)481 		  FMOD_RESULT getOutput              (int index, DSP **output, DSPConnection **outputconnection) { return FMOD_DSP_GetOutput(this, index, (FMOD_DSP **)output, (FMOD_DSPCONNECTION **)outputconnection); }
482 
483 		// DSP unit control.
setActive(bool active)484 		  FMOD_RESULT setActive              (bool active) { return FMOD_DSP_SetActive(this, active); }
getActive(bool * active)485 		  FMOD_RESULT getActive              (bool *active) { FMOD_BOOL b; FMOD_RESULT res = FMOD_DSP_GetActive(this, &b); *active = b; return res; }
setBypass(bool bypass)486 		  FMOD_RESULT setBypass              (bool bypass) { return FMOD_DSP_SetBypass(this, bypass); }
getBypass(bool * bypass)487 		  FMOD_RESULT getBypass              (bool *bypass) { FMOD_BOOL b; FMOD_RESULT res = FMOD_DSP_GetBypass(this, &b); *bypass = b; return res; }
setSpeakerActive(FMOD_SPEAKER speaker,bool active)488 		  FMOD_RESULT setSpeakerActive       (FMOD_SPEAKER speaker, bool active) { return FMOD_DSP_SetSpeakerActive(this, speaker, active); }
getSpeakerActive(FMOD_SPEAKER speaker,bool * active)489 		  FMOD_RESULT getSpeakerActive       (FMOD_SPEAKER speaker, bool *active) { FMOD_BOOL b; FMOD_RESULT res = FMOD_DSP_GetSpeakerActive(this, speaker, &b); *active = b; return res; }
reset()490 		  FMOD_RESULT reset                  ()  { return FMOD_DSP_Reset(this); }
491 
492 		// DSP parameter control.
setParameter(int index,float value)493 		  FMOD_RESULT setParameter           (int index, float value) { return FMOD_DSP_SetParameter(this, index, value); }
getParameter(int index,float * value,char * valuestr,int valuestrlen)494 		  FMOD_RESULT getParameter           (int index, float *value, char *valuestr, int valuestrlen) { return FMOD_DSP_GetParameter(this, index, value, valuestr, valuestrlen); }
getNumParameters(int * numparams)495 		  FMOD_RESULT getNumParameters       (int *numparams) { return FMOD_DSP_GetNumParameters(this, numparams); }
getParameterInfo(int index,char * name,char * label,char * description,int descriptionlen,float * min,float * max)496 		  FMOD_RESULT getParameterInfo       (int index, char *name, char *label, char *description, int descriptionlen, float *min, float *max) { return FMOD_DSP_GetParameterInfo(this, index, name, label, description, descriptionlen, min, max); }
showConfigDialog(void * hwnd,bool show)497 		  FMOD_RESULT showConfigDialog       (void *hwnd, bool show) { return FMOD_DSP_ShowConfigDialog(this, hwnd, show); }
498 
499 		// DSP attributes.
getInfo(char * name,unsigned int * version,int * channels,int * configwidth,int * configheight)500 		  FMOD_RESULT getInfo                (char *name, unsigned int *version, int *channels, int *configwidth, int *configheight) { return FMOD_DSP_GetInfo(this, name, version, channels, configwidth, configheight); }
getType(FMOD_DSP_TYPE * type)501 		  FMOD_RESULT getType                (FMOD_DSP_TYPE *type) { return FMOD_DSP_GetType(this, type); }
setDefaults(float frequency,float volume,float pan,int priority)502 		  FMOD_RESULT setDefaults            (float frequency, float volume, float pan, int priority) { return FMOD_DSP_SetDefaults(this, frequency, volume, pan, priority); }
getDefaults(float * frequency,float * volume,float * pan,int * priority)503 		  FMOD_RESULT getDefaults            (float *frequency, float *volume, float *pan, int *priority) { return FMOD_DSP_GetDefaults(this, frequency, volume, pan, priority) ;}
504 
505 		// Userdata set/get.
setUserData(void * userdata)506 		  FMOD_RESULT setUserData            (void *userdata) { return FMOD_DSP_SetUserData(this, userdata); }
getUserData(void ** userdata)507 		  FMOD_RESULT getUserData            (void **userdata) { return FMOD_DSP_GetUserData(this, userdata); }
508 
getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)509 		  FMOD_RESULT getMemoryInfo          (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_DSP_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); }
510 	};
511 
512 
513 	/*
514 		'DSPConnection' API
515 	*/
516 	class DSPConnection : FMOD_DSPCONNECTION
517 	{
518 	  private:
519 
520 		DSPConnection();    /* Constructor made private so user cannot statically instance a DSPConnection class.
521 							   Appropriate DSPConnection creation or retrieval function must be used. */
522 
523 	  public:
524 
getInput(DSP ** input)525 		  FMOD_RESULT getInput              (DSP **input) { return FMOD_DSPConnection_GetInput(this, (FMOD_DSP **)input); }
getOutput(DSP ** output)526 		  FMOD_RESULT getOutput             (DSP **output) { return FMOD_DSPConnection_GetOutput(this, (FMOD_DSP **)output); }
setMix(float volume)527 		  FMOD_RESULT setMix                (float volume) { return FMOD_DSPConnection_SetMix(this, volume); }
getMix(float * volume)528 		  FMOD_RESULT getMix                (float *volume) { return FMOD_DSPConnection_GetMix(this, volume); }
setLevels(FMOD_SPEAKER speaker,float * levels,int numlevels)529 		  FMOD_RESULT setLevels             (FMOD_SPEAKER speaker, float *levels, int numlevels) { return FMOD_DSPConnection_SetLevels(this, speaker, levels, numlevels); }
getLevels(FMOD_SPEAKER speaker,float * levels,int numlevels)530 		  FMOD_RESULT getLevels             (FMOD_SPEAKER speaker, float *levels, int numlevels) { return FMOD_DSPConnection_GetLevels(this, speaker, levels, numlevels); }
531 
532 		// Userdata set/get.
setUserData(void * userdata)533 		  FMOD_RESULT setUserData           (void *userdata) { return FMOD_DSPConnection_SetUserData(this, userdata); }
getUserData(void ** userdata)534 		  FMOD_RESULT getUserData           (void **userdata) { return FMOD_DSPConnection_GetUserData(this, userdata); }
535 
getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)536 		  FMOD_RESULT getMemoryInfo         (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_DSPConnection_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); }
537 	};
538 
539 
540 	/*
541 		'Geometry' API
542 	*/
543 	class Geometry : FMOD_GEOMETRY
544 	{
545 	  private:
546 
547 		Geometry();   /* Constructor made private so user cannot statically instance a Geometry class.
548 						 Appropriate Geometry creation or retrieval function must be used. */
549 
550 	  public:
551 
release()552 		  FMOD_RESULT release                () { return FMOD_Geometry_Release(this); }
553 
554 		// Polygon manipulation.
addPolygon(float directocclusion,float reverbocclusion,bool doublesided,int numvertices,const FMOD_VECTOR * vertices,int * polygonindex)555 		  FMOD_RESULT addPolygon             (float directocclusion, float reverbocclusion, bool doublesided, int numvertices, const FMOD_VECTOR *vertices, int *polygonindex) { return FMOD_Geometry_AddPolygon(this, directocclusion, reverbocclusion, doublesided, numvertices, vertices, polygonindex); }
getNumPolygons(int * numpolygons)556 		  FMOD_RESULT getNumPolygons         (int *numpolygons) { return FMOD_Geometry_GetNumPolygons(this, numpolygons); }
getMaxPolygons(int * maxpolygons,int * maxvertices)557 		  FMOD_RESULT getMaxPolygons         (int *maxpolygons, int *maxvertices) { return FMOD_Geometry_GetMaxPolygons(this, maxpolygons, maxvertices); }
getPolygonNumVertices(int index,int * numvertices)558 		  FMOD_RESULT getPolygonNumVertices  (int index, int *numvertices) { return FMOD_Geometry_GetPolygonNumVertices(this, index, numvertices); }
setPolygonVertex(int index,int vertexindex,const FMOD_VECTOR * vertex)559 		  FMOD_RESULT setPolygonVertex       (int index, int vertexindex, const FMOD_VECTOR *vertex) { return FMOD_Geometry_SetPolygonVertex(this, index, vertexindex, vertex); }
getPolygonVertex(int index,int vertexindex,FMOD_VECTOR * vertex)560 		  FMOD_RESULT getPolygonVertex       (int index, int vertexindex, FMOD_VECTOR *vertex) { return FMOD_Geometry_GetPolygonVertex(this, index, vertexindex, vertex); }
setPolygonAttributes(int index,float directocclusion,float reverbocclusion,bool doublesided)561 		  FMOD_RESULT setPolygonAttributes   (int index, float directocclusion, float reverbocclusion, bool doublesided) { return FMOD_Geometry_SetPolygonAttributes(this, index, directocclusion, reverbocclusion, doublesided); }
getPolygonAttributes(int index,float * directocclusion,float * reverbocclusion,bool * doublesided)562 		  FMOD_RESULT getPolygonAttributes   (int index, float *directocclusion, float *reverbocclusion, bool *doublesided) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Geometry_GetPolygonAttributes(this, index, directocclusion, reverbocclusion, &b); *doublesided = b; return res; }
563 
564 		// Object manipulation.
setActive(bool active)565 		  FMOD_RESULT setActive              (bool active) { return FMOD_Geometry_SetActive(this, active); }
getActive(bool * active)566 		  FMOD_RESULT getActive              (bool *active) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Geometry_GetActive(this, &b); *active = b; return res; }
setRotation(const FMOD_VECTOR * forward,const FMOD_VECTOR * up)567 		  FMOD_RESULT setRotation            (const FMOD_VECTOR *forward, const FMOD_VECTOR *up) { return FMOD_Geometry_SetRotation(this, forward, up); }
getRotation(FMOD_VECTOR * forward,FMOD_VECTOR * up)568 		  FMOD_RESULT getRotation            (FMOD_VECTOR *forward, FMOD_VECTOR *up) { return FMOD_Geometry_GetRotation(this, forward, up); }
setPosition(const FMOD_VECTOR * position)569 		  FMOD_RESULT setPosition            (const FMOD_VECTOR *position) { return FMOD_Geometry_SetPosition(this, position); }
getPosition(FMOD_VECTOR * position)570 		  FMOD_RESULT getPosition            (FMOD_VECTOR *position) { return FMOD_Geometry_GetPosition(this, position); }
setScale(const FMOD_VECTOR * scale)571 		  FMOD_RESULT setScale               (const FMOD_VECTOR *scale) { return FMOD_Geometry_SetScale(this, scale); }
getScale(FMOD_VECTOR * scale)572 		  FMOD_RESULT getScale               (FMOD_VECTOR *scale) { return FMOD_Geometry_GetScale(this, scale); }
save(void * data,int * datasize)573 		  FMOD_RESULT save                   (void *data, int *datasize) { return FMOD_Geometry_Save(this, data, datasize); }
574 
575 		// Userdata set/get.
setUserData(void * userdata)576 		  FMOD_RESULT setUserData            (void *userdata) { return FMOD_Geometry_SetUserData(this, userdata); }
getUserData(void ** userdata)577 		  FMOD_RESULT getUserData            (void **userdata) { return FMOD_Geometry_GetUserData(this, userdata); }
578 
getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)579 		  FMOD_RESULT getMemoryInfo          (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_Geometry_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); }
580 	};
581 
582 
583 	/*
584 		'Reverb' API
585 	*/
586 	class Reverb : FMOD_REVERB
587 	{
588 	  private:
589 
590 		Reverb();    /*  Constructor made private so user cannot statically instance a Reverb class.
591 						 Appropriate Reverb creation or retrieval function must be used. */
592 
593 	  public:
594 
release()595 		  FMOD_RESULT release                () { return FMOD_Reverb_Release(this); }
596 
597 		// Reverb manipulation.
set3DAttributes(const FMOD_VECTOR * position,float mindistance,float maxdistance)598 		  FMOD_RESULT set3DAttributes        (const FMOD_VECTOR *position, float mindistance, float maxdistance) { return FMOD_Reverb_Set3DAttributes(this, position, mindistance, maxdistance); }
get3DAttributes(FMOD_VECTOR * position,float * mindistance,float * maxdistance)599 		  FMOD_RESULT get3DAttributes        (FMOD_VECTOR *position, float *mindistance, float *maxdistance) { return FMOD_Reverb_Get3DAttributes(this, position, mindistance, maxdistance); }
setProperties(const FMOD_REVERB_PROPERTIES * properties)600 		  FMOD_RESULT setProperties          (const FMOD_REVERB_PROPERTIES *properties) { return FMOD_Reverb_SetProperties(this, properties); }
getProperties(FMOD_REVERB_PROPERTIES * properties)601 		  FMOD_RESULT getProperties          (FMOD_REVERB_PROPERTIES *properties) { return FMOD_Reverb_GetProperties(this, properties); }
setActive(bool active)602 		  FMOD_RESULT setActive              (bool active) { return FMOD_Reverb_SetActive(this, active); }
getActive(bool * active)603 		  FMOD_RESULT getActive              (bool *active) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Reverb_GetActive(this, &b); *active = b; return res; }
604 
605 		// Userdata set/get.
setUserData(void * userdata)606 		  FMOD_RESULT setUserData            (void *userdata) { return FMOD_Reverb_SetUserData(this, userdata); }
getUserData(void ** userdata)607 		  FMOD_RESULT getUserData            (void **userdata) { return FMOD_Reverb_GetUserData(this, userdata); }
608 
getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)609 		  FMOD_RESULT getMemoryInfo          (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_Reverb_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); }
610 	};
611 }
612 
613 #endif
614 #endif
615 #endif
616