aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--al/eax_eax_call.cpp68
-rw-r--r--al/eax_eax_call.h13
2 files changed, 33 insertions, 48 deletions
diff --git a/al/eax_eax_call.cpp b/al/eax_eax_call.cpp
index 2c9d1d7e..a833ceab 100644
--- a/al/eax_eax_call.cpp
+++ b/al/eax_eax_call.cpp
@@ -5,9 +5,9 @@
#include "al/eax_exception.h"
-namespace
-{
+namespace {
+constexpr auto deferred_flag = 0x80000000U;
class EaxEaxCallException :
public EaxException
@@ -21,129 +21,112 @@ public:
}
}; // EaxEaxCallException
-
} // namespace
EaxEaxCall::EaxEaxCall(
bool is_get,
- const GUID* property_set_id,
+ const GUID& property_set_guid,
ALuint property_id,
ALuint property_source_id,
ALvoid* property_buffer,
ALuint property_size)
+ : is_get_{is_get}, is_deferred_{(property_id&deferred_flag) != 0}, version_{0}
+ , property_set_id_{EaxEaxCallPropertySetId::none}, property_id_{property_id & ~deferred_flag}
+ , property_source_id_{property_source_id}, property_buffer_{property_buffer}
+ , property_size_{property_size}
{
- if (!property_set_id)
- {
- fail("Null property set ID.");
- }
-
- is_get_ = is_get;
-
- constexpr auto deferred_flag = 0x80000000U;
- is_deferred_ = ((property_id & 0x80000000U) != 0);
-
- version_ = 0;
- fx_slot_index_.reset();
- property_set_id_ = EaxEaxCallPropertySetId::none;
-
- property_set_guid_ = *property_set_id;
- property_id_ = property_id & (~deferred_flag);
- property_source_id_ = property_source_id;
- property_buffer_ = property_buffer;
- property_size_ = property_size;
-
if (false)
{
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX40_Context)
+ else if (property_set_guid == EAXPROPERTYID_EAX40_Context)
{
version_ = 4;
property_set_id_ = EaxEaxCallPropertySetId::context;
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX50_Context)
+ else if (property_set_guid == EAXPROPERTYID_EAX50_Context)
{
version_ = 5;
property_set_id_ = EaxEaxCallPropertySetId::context;
}
- else if (property_set_guid_ == DSPROPSETID_EAX20_ListenerProperties)
+ else if (property_set_guid == DSPROPSETID_EAX20_ListenerProperties)
{
version_ = 2;
fx_slot_index_ = 0u;
property_set_id_ = EaxEaxCallPropertySetId::fx_slot_effect;
property_id_ = convert_eax_v2_0_listener_property_id(property_id_);
}
- else if (property_set_guid_ == DSPROPSETID_EAX30_ListenerProperties)
+ else if (property_set_guid == DSPROPSETID_EAX30_ListenerProperties)
{
version_ = 3;
fx_slot_index_ = 0u;
property_set_id_ = EaxEaxCallPropertySetId::fx_slot_effect;
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX40_FXSlot0)
+ else if (property_set_guid == EAXPROPERTYID_EAX40_FXSlot0)
{
version_ = 4;
fx_slot_index_ = 0u;
property_set_id_ = EaxEaxCallPropertySetId::fx_slot;
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX50_FXSlot0)
+ else if (property_set_guid == EAXPROPERTYID_EAX50_FXSlot0)
{
version_ = 5;
fx_slot_index_ = 0u;
property_set_id_ = EaxEaxCallPropertySetId::fx_slot;
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX40_FXSlot1)
+ else if (property_set_guid == EAXPROPERTYID_EAX40_FXSlot1)
{
version_ = 4;
fx_slot_index_ = 1u;
property_set_id_ = EaxEaxCallPropertySetId::fx_slot;
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX50_FXSlot1)
+ else if (property_set_guid == EAXPROPERTYID_EAX50_FXSlot1)
{
version_ = 5;
fx_slot_index_ = 1u;
property_set_id_ = EaxEaxCallPropertySetId::fx_slot;
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX40_FXSlot2)
+ else if (property_set_guid == EAXPROPERTYID_EAX40_FXSlot2)
{
version_ = 4;
fx_slot_index_ = 2u;
property_set_id_ = EaxEaxCallPropertySetId::fx_slot;
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX50_FXSlot2)
+ else if (property_set_guid == EAXPROPERTYID_EAX50_FXSlot2)
{
version_ = 5;
fx_slot_index_ = 2u;
property_set_id_ = EaxEaxCallPropertySetId::fx_slot;
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX40_FXSlot3)
+ else if (property_set_guid == EAXPROPERTYID_EAX40_FXSlot3)
{
version_ = 4;
fx_slot_index_ = 3u;
property_set_id_ = EaxEaxCallPropertySetId::fx_slot;
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX50_FXSlot3)
+ else if (property_set_guid == EAXPROPERTYID_EAX50_FXSlot3)
{
version_ = 5;
fx_slot_index_ = 3u;
property_set_id_ = EaxEaxCallPropertySetId::fx_slot;
}
- else if (property_set_guid_ == DSPROPSETID_EAX20_BufferProperties)
+ else if (property_set_guid == DSPROPSETID_EAX20_BufferProperties)
{
version_ = 2;
property_set_id_ = EaxEaxCallPropertySetId::source;
property_id_ = convert_eax_v2_0_buffer_property_id(property_id_);
}
- else if (property_set_guid_ == DSPROPSETID_EAX30_BufferProperties)
+ else if (property_set_guid == DSPROPSETID_EAX30_BufferProperties)
{
version_ = 3;
property_set_id_ = EaxEaxCallPropertySetId::source;
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX40_Source)
+ else if (property_set_guid == EAXPROPERTYID_EAX40_Source)
{
version_ = 4;
property_set_id_ = EaxEaxCallPropertySetId::source;
}
- else if (property_set_guid_ == EAXPROPERTYID_EAX50_Source)
+ else if (property_set_guid == EAXPROPERTYID_EAX50_Source)
{
version_ = 5;
property_set_id_ = EaxEaxCallPropertySetId::source;
@@ -319,9 +302,12 @@ EaxEaxCall create_eax_call(
ALvoid* property_buffer,
ALuint property_size)
{
+ if(!property_set_id)
+ throw EaxEaxCallException{"Null property set ID."};
+
return EaxEaxCall{
is_get,
- property_set_id,
+ *property_set_id,
property_id,
property_source_id,
property_buffer,
diff --git a/al/eax_eax_call.h b/al/eax_eax_call.h
index 25b5e64a..dd89795a 100644
--- a/al/eax_eax_call.h
+++ b/al/eax_eax_call.h
@@ -26,7 +26,7 @@ class EaxEaxCall
public:
EaxEaxCall(
bool is_get,
- const GUID* property_set_id,
+ const GUID& property_set_guid,
ALuint property_id,
ALuint property_source_id,
ALvoid* property_buffer,
@@ -82,17 +82,16 @@ public:
private:
- bool is_get_;
- bool is_deferred_;
+ const bool is_get_;
+ const bool is_deferred_;
int version_;
EaxFxSlotIndex fx_slot_index_;
EaxEaxCallPropertySetId property_set_id_;
- GUID property_set_guid_;
ALuint property_id_;
- ALuint property_source_id_;
- ALvoid* property_buffer_;
- ALuint property_size_;
+ const ALuint property_source_id_;
+ ALvoid*const property_buffer_;
+ const ALuint property_size_;
[[noreturn]]