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