From 6bb0edf0a57bdb95c017db986f76eddbc80857e1 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 1 Jul 2019 17:25:58 -0700 Subject: Create and use a make_optional method --- Alc/alc.cpp | 2 +- Alc/alconfig.cpp | 12 ++++++------ OpenAL32/alBuffer.cpp | 2 +- common/aloptional.h | 12 ++++++++++++ 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Alc/alc.cpp b/Alc/alc.cpp index 521da6bc..df272c2a 100644 --- a/Alc/alc.cpp +++ b/Alc/alc.cpp @@ -1373,7 +1373,7 @@ static al::optional DecomposeDevFormat(ALenum format) for(const auto &item : list) { if(item.format == format) - return al::optional{{item.channels, item.type}}; + return al::make_optional(DevFmtPair{item.channels, item.type}); } return al::nullopt; diff --git a/Alc/alconfig.cpp b/Alc/alconfig.cpp index b6e406fd..5f5f9149 100644 --- a/Alc/alconfig.cpp +++ b/Alc/alconfig.cpp @@ -497,7 +497,7 @@ al::optional ConfigValueStr(const char *devName, const char *blockN const char *val = GetConfigValue(devName, blockName, keyName, ""); if(!val[0]) return al::nullopt; - return al::optional{val}; + return al::make_optional(val); } al::optional ConfigValueInt(const char *devName, const char *blockName, const char *keyName) @@ -505,7 +505,7 @@ al::optional ConfigValueInt(const char *devName, const char *blockName, con const char *val = GetConfigValue(devName, blockName, keyName, ""); if(!val[0]) return al::nullopt; - return al::optional{static_cast(std::strtol(val, nullptr, 0))}; + return al::make_optional(static_cast(std::strtol(val, nullptr, 0))); } al::optional ConfigValueUInt(const char *devName, const char *blockName, const char *keyName) @@ -513,7 +513,7 @@ al::optional ConfigValueUInt(const char *devName, const char *bloc const char *val = GetConfigValue(devName, blockName, keyName, ""); if(!val[0]) return al::nullopt; - return al::optional{static_cast(std::strtoul(val, nullptr, 0))}; + return al::make_optional(static_cast(std::strtoul(val, nullptr, 0))); } al::optional ConfigValueFloat(const char *devName, const char *blockName, const char *keyName) @@ -521,7 +521,7 @@ al::optional ConfigValueFloat(const char *devName, const char *blockName, const char *val = GetConfigValue(devName, blockName, keyName, ""); if(!val[0]) return al::nullopt; - return al::optional{std::strtof(val, nullptr)}; + return al::make_optional(std::strtof(val, nullptr)); } al::optional ConfigValueBool(const char *devName, const char *blockName, const char *keyName) @@ -529,9 +529,9 @@ al::optional ConfigValueBool(const char *devName, const char *blockName, c const char *val = GetConfigValue(devName, blockName, keyName, ""); if(!val[0]) return al::nullopt; - return al::optional{ + return al::make_optional( strcasecmp(val, "true") == 0 || strcasecmp(val, "yes") == 0 || - strcasecmp(val, "on") == 0 || atoi(val) != 0}; + strcasecmp(val, "on") == 0 || atoi(val) != 0); } int GetConfigValueBool(const char *devName, const char *blockName, const char *keyName, int def) diff --git a/OpenAL32/alBuffer.cpp b/OpenAL32/alBuffer.cpp index 8b081b78..a6ed98cc 100644 --- a/OpenAL32/alBuffer.cpp +++ b/OpenAL32/alBuffer.cpp @@ -402,7 +402,7 @@ al::optional DecomposeUserFormat(ALenum format) for(const auto &fmt : UserFmtList) { if(fmt.format == format) - return al::optional{{fmt.channels, fmt.type}}; + return al::make_optional(DecompResult{fmt.channels, fmt.type}); } return al::nullopt; } diff --git a/common/aloptional.h b/common/aloptional.h index a4b37212..8524a2e2 100644 --- a/common/aloptional.h +++ b/common/aloptional.h @@ -139,6 +139,18 @@ private: }; }; +template +inline optional::type> make_optional(T&& arg) +{ return optional::type>{in_place, std::forward(arg)}; } + +template +inline optional make_optional(Args&& ...args) +{ return optional{in_place, std::forward(args)...}; } + +template +inline optional make_optional(std::initializer_list il, Args&& ...args) +{ return optional{in_place, il, std::forward(args)...}; } + #undef REQUIRES } // namespace al -- cgit v1.2.3