aboutsummaryrefslogtreecommitdiffstats
path: root/al/eax
diff options
context:
space:
mode:
Diffstat (limited to 'al/eax')
-rw-r--r--al/eax/exception.cpp43
-rw-r--r--al/eax/exception.h6
-rw-r--r--al/eax/utils.cpp6
-rw-r--r--al/eax/utils.h3
4 files changed, 20 insertions, 38 deletions
diff --git a/al/eax/exception.cpp b/al/eax/exception.cpp
index 435e7442..cd32e11a 100644
--- a/al/eax/exception.cpp
+++ b/al/eax/exception.cpp
@@ -6,54 +6,35 @@
#include <string>
-EaxException::EaxException(const char *context, const char *message)
+EaxException::EaxException(std::string_view context, std::string_view message)
: std::runtime_error{make_message(context, message)}
{
}
EaxException::~EaxException() = default;
-std::string EaxException::make_message(const char *context, const char *message)
+std::string EaxException::make_message(std::string_view context, std::string_view message)
{
- const auto context_size = (context ? std::string::traits_type::length(context) : 0);
- const auto has_contex = (context_size > 0);
-
- const auto message_size = (message ? std::string::traits_type::length(message) : 0);
- const auto has_message = (message_size > 0);
-
- if (!has_contex && !has_message)
- {
- return std::string{};
- }
+ auto what = std::string{};
+ if(context.empty() && message.empty())
+ return what;
static constexpr char left_prefix[] = "[";
- const auto left_prefix_size = std::string::traits_type::length(left_prefix);
+ static constexpr auto left_prefix_size = std::string::traits_type::length(left_prefix);
static constexpr char right_prefix[] = "] ";
- const auto right_prefix_size = std::string::traits_type::length(right_prefix);
+ static constexpr auto right_prefix_size = std::string::traits_type::length(right_prefix);
- const auto what_size =
- (
- has_contex ?
- left_prefix_size + context_size + right_prefix_size :
- 0) +
- message_size +
- 1;
+ what.reserve((!context.empty() ? left_prefix_size + context.size() + right_prefix_size : 0) +
+ message.length() + 1);
- auto what = std::string{};
- what.reserve(what_size);
-
- if (has_contex)
+ if(!context.empty())
{
what.append(left_prefix, left_prefix_size);
- what.append(context, context_size);
+ what += context;
what.append(right_prefix, right_prefix_size);
}
-
- if (has_message)
- {
- what.append(message, message_size);
- }
+ what += message;
return what;
}
diff --git a/al/eax/exception.h b/al/eax/exception.h
index 3ae88cdc..336654f0 100644
--- a/al/eax/exception.h
+++ b/al/eax/exception.h
@@ -1,16 +1,16 @@
#ifndef EAX_EXCEPTION_INCLUDED
#define EAX_EXCEPTION_INCLUDED
-
#include <stdexcept>
#include <string>
+#include <string_view>
class EaxException : public std::runtime_error {
- static std::string make_message(const char *context, const char *message);
+ static std::string make_message(std::string_view context, std::string_view message);
public:
- EaxException(const char *context, const char *message);
+ EaxException(std::string_view context, std::string_view message);
~EaxException() override;
}; // EaxException
diff --git a/al/eax/utils.cpp b/al/eax/utils.cpp
index b3ed6ca1..53599ac5 100644
--- a/al/eax/utils.cpp
+++ b/al/eax/utils.cpp
@@ -8,7 +8,7 @@
#include "core/logging.h"
-void eax_log_exception(const char *message) noexcept
+void eax_log_exception(std::string_view message) noexcept
{
const auto exception_ptr = std::current_exception();
assert(exception_ptr);
@@ -18,9 +18,9 @@ void eax_log_exception(const char *message) noexcept
}
catch(const std::exception& ex) {
const auto ex_message = ex.what();
- ERR("%s %s\n", message ? message : "", ex_message);
+ ERR("%.*s %s\n", static_cast<int>(message.length()), message.data(), ex_message);
}
catch(...) {
- ERR("%s %s\n", message ? message : "", "Generic exception.");
+ ERR("%.*s %s\n", static_cast<int>(message.length()), message.data(), "Generic exception.");
}
}
diff --git a/al/eax/utils.h b/al/eax/utils.h
index 8ff75a18..e5581bd6 100644
--- a/al/eax/utils.h
+++ b/al/eax/utils.h
@@ -4,6 +4,7 @@
#include <algorithm>
#include <cstdint>
#include <string>
+#include <string_view>
#include <type_traits>
using EaxDirtyFlags = unsigned int;
@@ -13,7 +14,7 @@ struct EaxAlLowPassParam {
float gain_hf;
};
-void eax_log_exception(const char *message) noexcept;
+void eax_log_exception(std::string_view message) noexcept;
template<typename TException, typename TValue>
void eax_validate_range(