1 #ifndef ROUTER_ROUTER_H
2 #define ROUTER_ROUTER_H
4 #define WIN32_LEAN_AND_MEAN
21 #if defined(__cplusplus)
23 #elif defined(__GNUC__)
24 #define UNUSED(x) UNUSED_##x __attribute__((unused))
25 #elif defined(__LCLINT__)
26 #define UNUSED(x) /*@unused@*/ x
32 #define MAKE_ALC_VER(major, minor) (((major)<<8) | (minor))
36 HMODULE Module
{nullptr};
39 LPALCCREATECONTEXT alcCreateContext
{nullptr};
40 LPALCMAKECONTEXTCURRENT alcMakeContextCurrent
{nullptr};
41 LPALCPROCESSCONTEXT alcProcessContext
{nullptr};
42 LPALCSUSPENDCONTEXT alcSuspendContext
{nullptr};
43 LPALCDESTROYCONTEXT alcDestroyContext
{nullptr};
44 LPALCGETCURRENTCONTEXT alcGetCurrentContext
{nullptr};
45 LPALCGETCONTEXTSDEVICE alcGetContextsDevice
{nullptr};
46 LPALCOPENDEVICE alcOpenDevice
{nullptr};
47 LPALCCLOSEDEVICE alcCloseDevice
{nullptr};
48 LPALCGETERROR alcGetError
{nullptr};
49 LPALCISEXTENSIONPRESENT alcIsExtensionPresent
{nullptr};
50 LPALCGETPROCADDRESS alcGetProcAddress
{nullptr};
51 LPALCGETENUMVALUE alcGetEnumValue
{nullptr};
52 LPALCGETSTRING alcGetString
{nullptr};
53 LPALCGETINTEGERV alcGetIntegerv
{nullptr};
54 LPALCCAPTUREOPENDEVICE alcCaptureOpenDevice
{nullptr};
55 LPALCCAPTURECLOSEDEVICE alcCaptureCloseDevice
{nullptr};
56 LPALCCAPTURESTART alcCaptureStart
{nullptr};
57 LPALCCAPTURESTOP alcCaptureStop
{nullptr};
58 LPALCCAPTURESAMPLES alcCaptureSamples
{nullptr};
60 PFNALCSETTHREADCONTEXTPROC alcSetThreadContext
{nullptr};
61 PFNALCGETTHREADCONTEXTPROC alcGetThreadContext
{nullptr};
63 LPALENABLE alEnable
{nullptr};
64 LPALDISABLE alDisable
{nullptr};
65 LPALISENABLED alIsEnabled
{nullptr};
66 LPALGETSTRING alGetString
{nullptr};
67 LPALGETBOOLEANV alGetBooleanv
{nullptr};
68 LPALGETINTEGERV alGetIntegerv
{nullptr};
69 LPALGETFLOATV alGetFloatv
{nullptr};
70 LPALGETDOUBLEV alGetDoublev
{nullptr};
71 LPALGETBOOLEAN alGetBoolean
{nullptr};
72 LPALGETINTEGER alGetInteger
{nullptr};
73 LPALGETFLOAT alGetFloat
{nullptr};
74 LPALGETDOUBLE alGetDouble
{nullptr};
75 LPALGETERROR alGetError
{nullptr};
76 LPALISEXTENSIONPRESENT alIsExtensionPresent
{nullptr};
77 LPALGETPROCADDRESS alGetProcAddress
{nullptr};
78 LPALGETENUMVALUE alGetEnumValue
{nullptr};
79 LPALLISTENERF alListenerf
{nullptr};
80 LPALLISTENER3F alListener3f
{nullptr};
81 LPALLISTENERFV alListenerfv
{nullptr};
82 LPALLISTENERI alListeneri
{nullptr};
83 LPALLISTENER3I alListener3i
{nullptr};
84 LPALLISTENERIV alListeneriv
{nullptr};
85 LPALGETLISTENERF alGetListenerf
{nullptr};
86 LPALGETLISTENER3F alGetListener3f
{nullptr};
87 LPALGETLISTENERFV alGetListenerfv
{nullptr};
88 LPALGETLISTENERI alGetListeneri
{nullptr};
89 LPALGETLISTENER3I alGetListener3i
{nullptr};
90 LPALGETLISTENERIV alGetListeneriv
{nullptr};
91 LPALGENSOURCES alGenSources
{nullptr};
92 LPALDELETESOURCES alDeleteSources
{nullptr};
93 LPALISSOURCE alIsSource
{nullptr};
94 LPALSOURCEF alSourcef
{nullptr};
95 LPALSOURCE3F alSource3f
{nullptr};
96 LPALSOURCEFV alSourcefv
{nullptr};
97 LPALSOURCEI alSourcei
{nullptr};
98 LPALSOURCE3I alSource3i
{nullptr};
99 LPALSOURCEIV alSourceiv
{nullptr};
100 LPALGETSOURCEF alGetSourcef
{nullptr};
101 LPALGETSOURCE3F alGetSource3f
{nullptr};
102 LPALGETSOURCEFV alGetSourcefv
{nullptr};
103 LPALGETSOURCEI alGetSourcei
{nullptr};
104 LPALGETSOURCE3I alGetSource3i
{nullptr};
105 LPALGETSOURCEIV alGetSourceiv
{nullptr};
106 LPALSOURCEPLAYV alSourcePlayv
{nullptr};
107 LPALSOURCESTOPV alSourceStopv
{nullptr};
108 LPALSOURCEREWINDV alSourceRewindv
{nullptr};
109 LPALSOURCEPAUSEV alSourcePausev
{nullptr};
110 LPALSOURCEPLAY alSourcePlay
{nullptr};
111 LPALSOURCESTOP alSourceStop
{nullptr};
112 LPALSOURCEREWIND alSourceRewind
{nullptr};
113 LPALSOURCEPAUSE alSourcePause
{nullptr};
114 LPALSOURCEQUEUEBUFFERS alSourceQueueBuffers
{nullptr};
115 LPALSOURCEUNQUEUEBUFFERS alSourceUnqueueBuffers
{nullptr};
116 LPALGENBUFFERS alGenBuffers
{nullptr};
117 LPALDELETEBUFFERS alDeleteBuffers
{nullptr};
118 LPALISBUFFER alIsBuffer
{nullptr};
119 LPALBUFFERF alBufferf
{nullptr};
120 LPALBUFFER3F alBuffer3f
{nullptr};
121 LPALBUFFERFV alBufferfv
{nullptr};
122 LPALBUFFERI alBufferi
{nullptr};
123 LPALBUFFER3I alBuffer3i
{nullptr};
124 LPALBUFFERIV alBufferiv
{nullptr};
125 LPALGETBUFFERF alGetBufferf
{nullptr};
126 LPALGETBUFFER3F alGetBuffer3f
{nullptr};
127 LPALGETBUFFERFV alGetBufferfv
{nullptr};
128 LPALGETBUFFERI alGetBufferi
{nullptr};
129 LPALGETBUFFER3I alGetBuffer3i
{nullptr};
130 LPALGETBUFFERIV alGetBufferiv
{nullptr};
131 LPALBUFFERDATA alBufferData
{nullptr};
132 LPALDOPPLERFACTOR alDopplerFactor
{nullptr};
133 LPALDOPPLERVELOCITY alDopplerVelocity
{nullptr};
134 LPALSPEEDOFSOUND alSpeedOfSound
{nullptr};
135 LPALDISTANCEMODEL alDistanceModel
{nullptr};
137 DriverIface(std::wstring name
, HMODULE mod
)
138 : Name(std::move(name
)), Module(mod
)
148 extern std::vector
<DriverIface
> DriverList
;
150 extern thread_local DriverIface
*ThreadCtxDriver
;
151 extern std::atomic
<DriverIface
*> CurrentCtxDriver
;
155 ALvoid
**mKeys
{nullptr};
156 /* Shares memory with keys. */
157 ALint
*mValues
{nullptr};
160 ALsizei mCapacity
{0};
164 PtrIntMap() = default;
167 ALenum
insert(ALvoid
*key
, ALint value
);
168 ALint
removeByKey(ALvoid
*key
);
169 ALint
lookupByKey(ALvoid
*key
);
179 extern enum LogLevel LogLevel
;
180 extern FILE *LogFile
;
182 #define TRACE(...) do { \
183 if(LogLevel >= LogLevel_Trace) \
185 fprintf(LogFile, "AL Router (II): " __VA_ARGS__); \
189 #define WARN(...) do { \
190 if(LogLevel >= LogLevel_Warn) \
192 fprintf(LogFile, "AL Router (WW): " __VA_ARGS__); \
196 #define ERR(...) do { \
197 if(LogLevel >= LogLevel_Error) \
199 fprintf(LogFile, "AL Router (EE): " __VA_ARGS__); \
204 #endif /* ROUTER_ROUTER_H */