Add a ptr-to-int map
[openal-soft.git] / router / router.h
blob7cd776f45ff566442722e236901b3e706f4ebf73
1 #ifndef ROUTER_ROUTER_H
2 #define ROUTER_ROUTER_H
4 #define WIN32_LEAN_AND_MEAN
5 #include <windows.h>
6 #include <winnt.h>
8 #include "AL/alc.h"
9 #include "AL/al.h"
10 #include "atomic.h"
11 #include "rwlock.h"
14 typedef struct DriverIface {
15 WCHAR Name[32];
16 HMODULE Module;
18 LPALCCREATECONTEXT alcCreateContext;
19 LPALCMAKECONTEXTCURRENT alcMakeContextCurrent;
20 LPALCPROCESSCONTEXT alcProcessContext;
21 LPALCSUSPENDCONTEXT alcSuspendContext;
22 LPALCDESTROYCONTEXT alcDestroyContext;
23 LPALCGETCURRENTCONTEXT alcGetCurrentContext;
24 LPALCGETCONTEXTSDEVICE alcGetContextsDevice;
25 LPALCOPENDEVICE alcOpenDevice;
26 LPALCCLOSEDEVICE alcCloseDevice;
27 LPALCGETERROR alcGetError;
28 LPALCISEXTENSIONPRESENT alcIsExtensionPresent;
29 LPALCGETPROCADDRESS alcGetProcAddress;
30 LPALCGETENUMVALUE alcGetEnumValue;
31 LPALCGETSTRING alcGetString;
32 LPALCGETINTEGERV alcGetIntegerv;
33 LPALCCAPTUREOPENDEVICE alcCaptureOpenDevice;
34 LPALCCAPTURECLOSEDEVICE alcCaptureCloseDevice;
35 LPALCCAPTURESTART alcCaptureStart;
36 LPALCCAPTURESTOP alcCaptureStop;
37 LPALCCAPTURESAMPLES alcCaptureSamples;
39 LPALENABLE alEnable;
40 LPALDISABLE alDisable;
41 LPALISENABLED alIsEnabled;
42 LPALGETSTRING alGetString;
43 LPALGETBOOLEANV alGetBooleanv;
44 LPALGETINTEGERV alGetIntegerv;
45 LPALGETFLOATV alGetFloatv;
46 LPALGETDOUBLEV alGetDoublev;
47 LPALGETBOOLEAN alGetBoolean;
48 LPALGETINTEGER alGetInteger;
49 LPALGETFLOAT alGetFloat;
50 LPALGETDOUBLE alGetDouble;
51 LPALGETERROR alGetError;
52 LPALISEXTENSIONPRESENT alIsExtensionPresent;
53 LPALGETPROCADDRESS alGetProcAddress;
54 LPALGETENUMVALUE alGetEnumValue;
55 LPALLISTENERF alListenerf;
56 LPALLISTENER3F alListener3f;
57 LPALLISTENERFV alListenerfv;
58 LPALLISTENERI alListeneri;
59 LPALLISTENER3I alListener3i;
60 LPALLISTENERIV alListeneriv;
61 LPALGETLISTENERF alGetListenerf;
62 LPALGETLISTENER3F alGetListener3f;
63 LPALGETLISTENERFV alGetListenerfv;
64 LPALGETLISTENERI alGetListeneri;
65 LPALGETLISTENER3I alGetListener3i;
66 LPALGETLISTENERIV alGetListeneriv;
67 LPALGENSOURCES alGenSources;
68 LPALDELETESOURCES alDeleteSources;
69 LPALISSOURCE alIsSource;
70 LPALSOURCEF alSourcef;
71 LPALSOURCE3F alSource3f;
72 LPALSOURCEFV alSourcefv;
73 LPALSOURCEI alSourcei;
74 LPALSOURCE3I alSource3i;
75 LPALSOURCEIV alSourceiv;
76 LPALGETSOURCEF alGetSourcef;
77 LPALGETSOURCE3F alGetSource3f;
78 LPALGETSOURCEFV alGetSourcefv;
79 LPALGETSOURCEI alGetSourcei;
80 LPALGETSOURCE3I alGetSource3i;
81 LPALGETSOURCEIV alGetSourceiv;
82 LPALSOURCEPLAYV alSourcePlayv;
83 LPALSOURCESTOPV alSourceStopv;
84 LPALSOURCEREWINDV alSourceRewindv;
85 LPALSOURCEPAUSEV alSourcePausev;
86 LPALSOURCEPLAY alSourcePlay;
87 LPALSOURCESTOP alSourceStop;
88 LPALSOURCEREWIND alSourceRewind;
89 LPALSOURCEPAUSE alSourcePause;
90 LPALSOURCEQUEUEBUFFERS alSourceQueueBuffers;
91 LPALSOURCEUNQUEUEBUFFERS alSourceUnqueueBuffers;
92 LPALGENBUFFERS alGenBuffers;
93 LPALDELETEBUFFERS alDeleteBuffers;
94 LPALISBUFFER alIsBuffer;
95 LPALBUFFERF alBufferf;
96 LPALBUFFER3F alBuffer3f;
97 LPALBUFFERFV alBufferfv;
98 LPALBUFFERI alBufferi;
99 LPALBUFFER3I alBuffer3i;
100 LPALBUFFERIV alBufferiv;
101 LPALGETBUFFERF alGetBufferf;
102 LPALGETBUFFER3F alGetBuffer3f;
103 LPALGETBUFFERFV alGetBufferfv;
104 LPALGETBUFFERI alGetBufferi;
105 LPALGETBUFFER3I alGetBuffer3i;
106 LPALGETBUFFERIV alGetBufferiv;
107 LPALBUFFERDATA alBufferData;
108 LPALDOPPLERFACTOR alDopplerFactor;
109 LPALDOPPLERVELOCITY alDopplerVelocity;
110 LPALSPEEDOFSOUND alSpeedOfSound;
111 LPALDISTANCEMODEL alDistanceModel;
112 } DriverIface;
114 extern DriverIface *DriverList;
115 extern int DriverListSize;
117 extern ATOMIC(DriverIface*) CurrentCtxDriver;
120 typedef struct PtrIntMap {
121 ALvoid **keys;
122 /* Shares memory with keys. */
123 ALint *values;
125 ALsizei size;
126 ALsizei capacity;
127 RWLock lock;
128 } PtrIntMap;
129 #define PTRINTMAP_STATIC_INITIALIZE { NULL, NULL, 0, 0, RWLOCK_STATIC_INITIALIZE }
131 void InitPtrIntMap(PtrIntMap *map);
132 void ResetPtrIntMap(PtrIntMap *map);
133 ALenum InsertPtrIntMapEntry(PtrIntMap *map, ALvoid *key, ALint value);
134 ALint RemovePtrIntMapKey(PtrIntMap *map, ALvoid *key);
135 ALint LookupPtrIntMapKey(PtrIntMap *map, ALvoid *key);
137 #endif /* ROUTER_ROUTER_H */