OGLplus  (0.59.0) a C++ wrapper for rendering APIs

c_api.hpp
Go to the documentation of this file.
1 #ifndef OALPLUS_AL_API_C_API_HPP
9 #define OALPLUS_AL_API_C_API_HPP
10 
11 #include "api_traits.hpp"
12 #include "config.hpp"
13 #include <eagine/nothing.hpp>
14 #include <eagine/preprocessor.hpp>
15 
16 #ifndef OALPLUS_AL_STATIC_FUNC
17 #if OALPLUS_HAS_AL
18 #define OALPLUS_AL_STATIC_FUNC(NAME) &EAGINE_JOIN(::al, NAME)
19 #else
20 #define OALPLUS_AL_STATIC_FUNC(NAME) nullptr
21 #endif
22 #endif
23 
24 namespace eagine::oalp {
25 //------------------------------------------------------------------------------
30 template <typename ApiTraits>
32 public:
33  using this_api = basic_al_c_api;
34 
36  using api_traits = ApiTraits;
37 
38  static constexpr bool has_api = al_types::has_api;
39 
41  using enum_type = typename al_types::enum_type;
42 
44  using char_type = typename al_types::char_type;
45 
47  using bool_type = typename al_types::bool_type;
48 
50  using int_type = typename al_types::int_type;
51 
53  using uint_type = typename al_types::uint_type;
54 
56  using name_type = typename al_types::name_type;
57 
59  using size_type = typename al_types::size_type;
60 
62  using float_type = typename al_types::float_type;
63 
65  using double_type = typename al_types::double_type;
66 
69 
72 
73 #ifdef __GNUC__
74  EAGINE_DIAG_PUSH()
75  EAGINE_DIAG_OFF(address)
76 #endif
77 
79  template <
80  typename Signature,
81  c_api_function_ptr<api_traits, nothing_t, Signature> Function>
83  api_traits,
84  nothing_t,
85  Signature,
86  Function,
87  has_api,
88  bool(Function)>;
89 #ifdef __GNUC__
90  EAGINE_DIAG_POP()
91 #endif
92 
95  al_api_function<enum_type(), OALPLUS_AL_STATIC_FUNC(GetError)> GetError;
96 
100  void_ptr_type(const char_type*),
101  OALPLUS_AL_STATIC_FUNC(GetProcAddress)>
103 
107  enum_type(const char_type*),
108  OALPLUS_AL_STATIC_FUNC(GetEnumValue)>
110 
113  al_api_function<void(enum_type), OALPLUS_AL_STATIC_FUNC(Enable)> Enable;
114 
117  al_api_function<void(enum_type), OALPLUS_AL_STATIC_FUNC(Disable)> Disable;
118 
121  al_api_function<bool_type(enum_type), OALPLUS_AL_STATIC_FUNC(IsEnabled)>
123 
127  void(enum_type, bool_type*),
128  OALPLUS_AL_STATIC_FUNC(GetBooleanv)>
130 
134  void(enum_type, int_type*),
135  OALPLUS_AL_STATIC_FUNC(GetIntegerv)>
137 
141  void(enum_type, float_type*),
142  OALPLUS_AL_STATIC_FUNC(GetFloatv)>
144 
148  void(enum_type, double_type*),
149  OALPLUS_AL_STATIC_FUNC(GetDoublev)>
151 
154  al_api_function<bool_type(enum_type), OALPLUS_AL_STATIC_FUNC(GetBoolean)>
156 
159  al_api_function<int_type(enum_type), OALPLUS_AL_STATIC_FUNC(GetInteger)>
161 
164  al_api_function<float_type(enum_type), OALPLUS_AL_STATIC_FUNC(GetFloat)>
166 
169  al_api_function<double_type(enum_type), OALPLUS_AL_STATIC_FUNC(GetDouble)>
170  GetDouble;
171 
175  const char_type*(enum_type),
176  OALPLUS_AL_STATIC_FUNC(GetString)>
178 
181  al_api_function<void(enum_type), OALPLUS_AL_STATIC_FUNC(DistanceModel)>
183 
186  al_api_function<void(float_type), OALPLUS_AL_STATIC_FUNC(DopplerFactor)>
188 
191  al_api_function<void(float_type), OALPLUS_AL_STATIC_FUNC(SpeedOfSound)>
193 
196  al_api_function<void(enum_type, int_type), OALPLUS_AL_STATIC_FUNC(Listeneri)>
198 
203  OALPLUS_AL_STATIC_FUNC(Listener3i)>
205 
209  void(enum_type, const int_type*),
210  OALPLUS_AL_STATIC_FUNC(Listeneriv)>
212 
216  void(enum_type, int_type*),
217  OALPLUS_AL_STATIC_FUNC(GetListeneriv)>
219 
223  void(enum_type, float_type),
224  OALPLUS_AL_STATIC_FUNC(Listenerf)>
226 
231  OALPLUS_AL_STATIC_FUNC(Listener3f)>
233 
237  void(enum_type, const float_type*),
238  OALPLUS_AL_STATIC_FUNC(Listenerfv)>
240 
244  void(enum_type, float_type*),
245  OALPLUS_AL_STATIC_FUNC(GetListenerfv)>
247 
251  void(size_type, name_type*),
252  OALPLUS_AL_STATIC_FUNC(GenBuffers)>
254 
258  void(size_type, const name_type*),
259  OALPLUS_AL_STATIC_FUNC(DeleteBuffers)>
261 
264  al_api_function<bool_type(name_type), OALPLUS_AL_STATIC_FUNC(IsBuffer)>
266 
271  OALPLUS_AL_STATIC_FUNC(BufferData)>
273 
277  void(name_type, enum_type, int_type),
278  OALPLUS_AL_STATIC_FUNC(Bufferi)>
280 
285  OALPLUS_AL_STATIC_FUNC(Buffer3i)>
287 
291  void(name_type, enum_type, const int_type*),
292  OALPLUS_AL_STATIC_FUNC(Bufferiv)>
294 
298  void(name_type, enum_type, int_type*),
299  OALPLUS_AL_STATIC_FUNC(GetBufferiv)>
301 
306  OALPLUS_AL_STATIC_FUNC(Bufferf)>
308 
313  OALPLUS_AL_STATIC_FUNC(Buffer3f)>
315 
319  void(name_type, enum_type, const float_type*),
320  OALPLUS_AL_STATIC_FUNC(Bufferfv)>
322 
326  void(name_type, enum_type, float_type*),
327  OALPLUS_AL_STATIC_FUNC(GetBufferfv)>
329 
333  void(size_type, name_type*),
334  OALPLUS_AL_STATIC_FUNC(GenSources)>
336 
340  void(size_type, const name_type*),
341  OALPLUS_AL_STATIC_FUNC(DeleteSources)>
343 
346  al_api_function<bool_type(name_type), OALPLUS_AL_STATIC_FUNC(IsSource)>
348 
352  void(name_type, enum_type, int_type),
353  OALPLUS_AL_STATIC_FUNC(Sourcei)>
355 
360  OALPLUS_AL_STATIC_FUNC(Source3i)>
362 
366  void(name_type, enum_type, const int_type*),
367  OALPLUS_AL_STATIC_FUNC(Sourceiv)>
369 
373  void(name_type, enum_type, int_type*),
374  OALPLUS_AL_STATIC_FUNC(GetSourceiv)>
376 
381  OALPLUS_AL_STATIC_FUNC(Sourcef)>
383 
388  OALPLUS_AL_STATIC_FUNC(Source3f)>
390 
394  void(name_type, enum_type, const float_type*),
395  OALPLUS_AL_STATIC_FUNC(Sourcefv)>
397 
401  void(name_type, enum_type, float_type*),
402  OALPLUS_AL_STATIC_FUNC(GetSourcefv)>
404 
407  al_api_function<void(name_type), OALPLUS_AL_STATIC_FUNC(SourcePlay)>
409 
412  al_api_function<void(name_type), OALPLUS_AL_STATIC_FUNC(SourceStop)>
414 
417  al_api_function<void(name_type), OALPLUS_AL_STATIC_FUNC(SourceRewind)>
419 
422  al_api_function<void(name_type), OALPLUS_AL_STATIC_FUNC(SourcePause)>
424 
428  void(size_type, const name_type*),
429  OALPLUS_AL_STATIC_FUNC(SourcePlayv)>
431 
435  void(size_type, const name_type*),
436  OALPLUS_AL_STATIC_FUNC(SourceStopv)>
438 
442  void(size_type, const name_type*),
443  OALPLUS_AL_STATIC_FUNC(SourceRewindv)>
445 
449  void(size_type, const name_type*),
450  OALPLUS_AL_STATIC_FUNC(SourcePausev)>
452 
456  void(name_type, size_type, const name_type*),
457  OALPLUS_AL_STATIC_FUNC(SourceQueueBuffers)>
459 
463  void(name_type, size_type, name_type*),
464  OALPLUS_AL_STATIC_FUNC(SourceUnqueueBuffers)>
466 
470 
474 
478 
482 
485  al_api_function<void(name_type, enum_type, const int_type*), nullptr>
487 
491 
494  al_api_function<void(name_type, enum_type, const float_type*), nullptr>
496 
500 
504 
508 
511  al_api_function<void(name_type, enum_type, float_type*), nullptr>
513 
517 
521 
525 
529 
532  al_api_function<void(name_type, enum_type, const int_type*), nullptr>
534 
538 
541  al_api_function<void(name_type, enum_type, const float_type*), nullptr>
543 
547 
551 
555 
558  al_api_function<void(name_type, enum_type, float_type*), nullptr>
560 
563  al_api_function<void(size_type, name_type*), nullptr>
565 
568  al_api_function<void(size_type, const name_type*), nullptr>
570 
574 
577  al_api_function<void(name_type, enum_type, int_type), nullptr>
579 
582  al_api_function<void(name_type, enum_type, const int_type*), nullptr>
584 
589 
592  al_api_function<void(name_type, enum_type, const float_type*), nullptr>
594 
597  al_api_function<void(name_type, enum_type, int_type*), nullptr>
599 
602  al_api_function<void(name_type, enum_type, int_type*), nullptr>
604 
607  al_api_function<void(name_type, enum_type, float_type*), nullptr>
609 
612  al_api_function<void(name_type, enum_type, float_type*), nullptr>
614 
615  basic_al_c_api(api_traits& traits);
616 };
617 //------------------------------------------------------------------------------
621 //------------------------------------------------------------------------------
622 } // namespace eagine::oalp
623 
624 #endif // OALPLUS_AL_API_C_API_HPP
al_api_function< void(name_type, enum_type, const float_type *), nullptr > Sourcefv
Definition: c_api.hpp:396
typename al_types::name_type name_type
Alias for object handle type.
Definition: c_api.hpp:56
al_api_function< void(name_type), nullptr > SourceRewind
Definition: c_api.hpp:418
al_api_function< void(name_type, enum_type, int_type), nullptr > AuxiliaryEffectSloti
Definition: c_api.hpp:578
al_api_function< void(name_type, enum_type, int_type *), nullptr > GetBufferiv
Definition: c_api.hpp:300
al_api_function< void_ptr_type(const char_type *), nullptr > GetProcAddress
Definition: c_api.hpp:102
al_api_function< void(enum_type, const int_type *), nullptr > Listeneriv
Definition: c_api.hpp:211
al_api_function< void(float_type), nullptr > SpeedOfSound
Definition: c_api.hpp:192
al_api_function< void(name_type, enum_type, float_type), nullptr > AuxiliaryEffectSlotf
Definition: c_api.hpp:588
al_api_function< void(name_type, enum_type, float_type *), nullptr > GetBufferfv
Definition: c_api.hpp:328
al_api_function< void(name_type, enum_type, int_type *), nullptr > GetAuxiliaryEffectSlotiv
Definition: c_api.hpp:603
typename al_types::float_type float_type
Alias for floating-point type.
Definition: c_api.hpp:62
std::conditional_t< IsAvailable, std::conditional_t< IsStatic, static_c_api_function< ApiTraits, Tag, Signature, function >, dynamic_c_api_function< ApiTraits, Tag, Signature > >, unimplemented_c_api_function< ApiTraits, Tag, Signature > > opt_c_api_function
Template alias used for switching between static and dynamic function.
Definition: c_api_wrap.hpp:1096
al_api_function< void(enum_type, int_type *), nullptr > GetIntegerv
Definition: c_api.hpp:136
al_api_function< void(enum_type, const float_type *), nullptr > Listenerfv
Definition: c_api.hpp:239
typename al_types::uint_type uint_type
Alias for unsigned integer type.
Definition: c_api.hpp:53
al_api_function< void(name_type, enum_type, const int_type *), nullptr > Filteriv
Definition: c_api.hpp:533
al_api_function< void(size_type, name_type *), nullptr > GenSources
Definition: c_api.hpp:335
typename al_types::size_type size_type
Alias for integer type used to store sizes and counts.
Definition: c_api.hpp:59
al_api_function< void(name_type, enum_type, float_type), nullptr > Filterf
Definition: c_api.hpp:537
al_api_function< void(name_type, enum_type, const float_type *), nullptr > Bufferfv
Definition: c_api.hpp:321
ApiTraits api_traits
Alias for the API traits policy type passed as template argument.
Definition: c_api.hpp:36
Class representing "none" / "nothing" values.
Definition: nothing.hpp:17
al_api_function< void(name_type, enum_type, float_type *), nullptr > GetAuxiliaryEffectSlotfv
Definition: c_api.hpp:613
al_api_function< void(name_type, enum_type, int_type *), nullptr > GetFilteri
Definition: c_api.hpp:546
al_api_function< void(name_type, enum_type, int_type *), nullptr > GetEffectiv
Definition: c_api.hpp:503
al_api_function< void(name_type, enum_type, const_void_ptr_type, size_type, size_type), nullptr > BufferData
Definition: c_api.hpp:272
al_api_function< void(name_type, enum_type, float_type *), nullptr > GetAuxiliaryEffectSlotf
Definition: c_api.hpp:608
al_api_function< void(size_type, const name_type *), nullptr > SourcePausev
Definition: c_api.hpp:451
al_api_function< void(name_type, enum_type, const int_type *), nullptr > Effectiv
Definition: c_api.hpp:486
al_api_function< void(enum_type), nullptr > DistanceModel
Definition: c_api.hpp:182
const void * const_void_ptr_type
Untyped const pointer type.
Definition: config.hpp:35
typename al_types::bool_type bool_type
Alias for boolean type.
Definition: c_api.hpp:47
al_api_function< void(size_type, const name_type *), nullptr > DeleteEffects
Definition: c_api.hpp:473
al_api_function< void(name_type, enum_type, int_type), nullptr > Filteri
Definition: c_api.hpp:528
al_api_function< void(name_type, enum_type, float_type *), nullptr > GetEffectf
Definition: c_api.hpp:507
al_api_function< void(size_type, name_type *), nullptr > GenBuffers
Definition: c_api.hpp:253
al_api_function< void(name_type, enum_type, int_type *), nullptr > GetEffecti
Definition: c_api.hpp:499
al_api_function< void(name_type), nullptr > SourceStop
Definition: c_api.hpp:413
al_api_function< void(size_type, name_type *), nullptr > GenEffects
Definition: c_api.hpp:469
al_api_function< void(enum_type), nullptr > Disable
Definition: c_api.hpp:117
al_api_function< void(name_type, enum_type, int_type, int_type, int_type), nullptr > Source3i
Definition: c_api.hpp:361
al_api_function< bool_type(name_type), nullptr > IsAuxiliaryEffectSlot
Definition: c_api.hpp:573
al_api_function< enum_type(const char_type *), nullptr > GetEnumValue
Definition: c_api.hpp:109
al_api_function< void(name_type, enum_type, int_type *), nullptr > GetFilteriv
Definition: c_api.hpp:550
basic_address< false > address
Type alias for non-const memory address values.
Definition: address.hpp:203
al_api_function< enum_type(), nullptr > GetError
Definition: c_api.hpp:95
al_api_function< void(enum_type, float_type), nullptr > Listenerf
Definition: c_api.hpp:225
typename al_types::const_void_ptr_type const_void_ptr_type
Untyped const pointer type.
Definition: c_api.hpp:71
al_api_function< void(enum_type, bool_type *), nullptr > GetBooleanv
Definition: c_api.hpp:129
typename al_types::char_type char_type
Alias for string characted type.
Definition: c_api.hpp:44
al_api_function< void(name_type, enum_type, int_type *), nullptr > GetAuxiliaryEffectSloti
Definition: c_api.hpp:598
al_api_function< void(name_type, enum_type, const float_type *), nullptr > AuxiliaryEffectSlotfv
Definition: c_api.hpp:593
al_api_function< void(size_type, const name_type *), nullptr > SourceRewindv
Definition: c_api.hpp:444
al_api_function< void(name_type, enum_type, const float_type *), nullptr > Filterfv
Definition: c_api.hpp:542
al_api_function< void(enum_type, float_type *), nullptr > GetListenerfv
Definition: c_api.hpp:246
typename al_types::void_ptr_type void_ptr_type
Untyped non-const pointer type.
Definition: c_api.hpp:68
al_api_function< void(name_type, enum_type, float_type *), nullptr > GetEffectfv
Definition: c_api.hpp:512
al_api_function< void(name_type, enum_type, float_type, float_type, float_type), nullptr > Source3f
Definition: c_api.hpp:389
al_api_function< void(enum_type, double_type *), nullptr > GetDoublev
Definition: c_api.hpp:150
al_api_function< void(name_type, enum_type, float_type *), nullptr > GetFilterfv
Definition: c_api.hpp:559
al_api_function< void(name_type), nullptr > SourcePlay
Definition: c_api.hpp:408
al_api_function< void(size_type, name_type *), nullptr > GenFilters
Definition: c_api.hpp:516
al_api_function< void(enum_type, int_type), nullptr > Listeneri
Definition: c_api.hpp:197
al_api_function< void(float_type), nullptr > DopplerFactor
Definition: c_api.hpp:187
al_api_function< float_type(enum_type), nullptr > GetFloat
Definition: c_api.hpp:165
al_api_function< void(enum_type, int_type *), nullptr > GetListeneriv
Definition: c_api.hpp:218
al_api_function< const char_type *(enum_type), nullptr > GetString
Definition: c_api.hpp:177
al_api_function< void(size_type, name_type *), nullptr > GenAuxiliaryEffectSlots
Definition: c_api.hpp:564
al_api_function< void(enum_type, float_type, float_type, float_type), nullptr > Listener3f
Definition: c_api.hpp:232
al_api_function< void(size_type, const name_type *), nullptr > DeleteSources
Definition: c_api.hpp:342
void * void_ptr_type
Untyped pointer type.
Definition: config.hpp:32
al_api_function< bool_type(name_type), nullptr > IsFilter
Definition: c_api.hpp:524
al_api_function< void(name_type, enum_type, float_type), nullptr > Effectf
Definition: c_api.hpp:490
al_api_function< void(size_type, const name_type *), nullptr > DeleteFilters
Definition: c_api.hpp:520
al_api_function< bool_type(enum_type), nullptr > GetBoolean
Definition: c_api.hpp:155
al_api_function< void(name_type, enum_type, const int_type *), nullptr > AuxiliaryEffectSlotiv
Definition: c_api.hpp:583
al_api_function< bool_type(name_type), nullptr > IsEffect
Definition: c_api.hpp:477
al_api_function< void(size_type, const name_type *), nullptr > SourcePlayv
Definition: c_api.hpp:430
al_api_function< bool_type(name_type), nullptr > IsBuffer
Definition: c_api.hpp:265
al_api_function< void(name_type, enum_type, const int_type *), nullptr > Sourceiv
Definition: c_api.hpp:368
al_api_function< void(enum_type, int_type, int_type, int_type), nullptr > Listener3i
Definition: c_api.hpp:204
al_api_function< void(name_type, size_type, const name_type *), nullptr > SourceQueueBuffers
Definition: c_api.hpp:458
al_api_function< void(name_type, size_type, name_type *), nullptr > SourceUnqueueBuffers
Definition: c_api.hpp:465
al_api_function< void(name_type, enum_type, float_type), nullptr > Sourcef
Definition: c_api.hpp:382
al_api_function< void(name_type, enum_type, int_type *), nullptr > GetSourceiv
Definition: c_api.hpp:375
al_api_function< int_type(enum_type), nullptr > GetInteger
Definition: c_api.hpp:160
AL-related code is placed in this namespace.
Definition: oalplus.hpp:11
al_api_function< bool_type(enum_type), nullptr > IsEnabled
Definition: c_api.hpp:122
al_api_function< void(name_type, enum_type, float_type, float_type, float_type), nullptr > Buffer3f
Definition: c_api.hpp:314
al_api_function< void(size_type, const name_type *), nullptr > SourceStopv
Definition: c_api.hpp:437
al_api_function< void(name_type, enum_type, const float_type *), nullptr > Effectfv
Definition: c_api.hpp:495
al_api_function< void(name_type, enum_type, float_type *), nullptr > GetFilterf
Definition: c_api.hpp:554
al_api_function< void(name_type, enum_type, int_type), nullptr > Sourcei
Definition: c_api.hpp:354
al_api_function< void(name_type, enum_type, int_type, int_type, int_type), nullptr > Buffer3i
Definition: c_api.hpp:286
al_api_function< void(name_type, enum_type, float_type *), nullptr > GetSourcefv
Definition: c_api.hpp:403
typename al_types::double_type double_type
Alias for double-precision floating-point type.
Definition: c_api.hpp:65
al_api_function< void(name_type), nullptr > SourcePause
Definition: c_api.hpp:423
eagine::opt_c_api_function< api_traits, nothing_t, Signature, Function, has_api, bool(Function)> al_api_function
Alias for AL C-API function wrapper template.
Definition: c_api.hpp:88
al_api_function< bool_type(name_type), nullptr > IsSource
Definition: c_api.hpp:347
al_api_function< void(size_type, const name_type *), nullptr > DeleteBuffers
Definition: c_api.hpp:260
typename al_types::enum_type enum_type
Alias for enumeration type.
Definition: c_api.hpp:41
al_api_function< void(name_type, enum_type, int_type), nullptr > Bufferi
Definition: c_api.hpp:279
al_api_function< void(enum_type), nullptr > Enable
Definition: c_api.hpp:113
al_api_function< void(name_type, enum_type, const int_type *), nullptr > Bufferiv
Definition: c_api.hpp:293
Class wrapping the C-functions from the AL API.
Definition: c_api.hpp:31
al_api_function< void(name_type, enum_type, int_type), nullptr > Effecti
Definition: c_api.hpp:481
al_api_function< void(name_type, enum_type, float_type), nullptr > Bufferf
Definition: c_api.hpp:307
al_api_function< void(enum_type, float_type *), nullptr > GetFloatv
Definition: c_api.hpp:143
al_api_function< void(size_type, const name_type *), nullptr > DeleteAuxiliaryEffectSlots
Definition: c_api.hpp:569
typename al_types::int_type int_type
Alias for signed interger type.
Definition: c_api.hpp:50

Copyright © 2015-2021 Matúš Chochlík.
<chochlik -at -gmail.com>
Documentation generated on Tue Apr 13 2021 by Doxygen (version 1.8.17).