mirror of
https://github.com/matrix-construct/construct
synced 2024-12-27 07:54:05 +01:00
ircd::util: Split what(); use default param of std::current_exception().
This commit is contained in:
parent
907efca5d8
commit
63d77c2392
2 changed files with 38 additions and 20 deletions
|
@ -48,6 +48,7 @@ namespace ircd
|
|||
#include "pointers.h"
|
||||
#include "iterator.h"
|
||||
#include "nothrow.h"
|
||||
#include "what.h"
|
||||
|
||||
// Unsorted section
|
||||
namespace ircd {
|
||||
|
@ -220,25 +221,5 @@ is_powerof2(const long long v)
|
|||
return v && !(v & (v - 1LL));
|
||||
}
|
||||
|
||||
/// Get what() from exception_ptr
|
||||
///
|
||||
inline ircd::string_view
|
||||
what(const std::exception_ptr &eptr)
|
||||
try
|
||||
{
|
||||
if(likely(eptr))
|
||||
std::rethrow_exception(eptr);
|
||||
|
||||
return {};
|
||||
}
|
||||
catch(const std::exception &e)
|
||||
{
|
||||
return e.what();
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
} // namespace util
|
||||
} // namespace ircd
|
||||
|
|
37
include/ircd/util/what.h
Normal file
37
include/ircd/util/what.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
// Matrix Construct
|
||||
//
|
||||
// Copyright (C) Matrix Construct Developers, Authors & Contributors
|
||||
// Copyright (C) 2016-2018 Jason Volk <jason@zemos.net>
|
||||
//
|
||||
// Permission to use, copy, modify, and/or distribute this software for any
|
||||
// purpose with or without fee is hereby granted, provided that the above
|
||||
// copyright notice and this permission notice is present in all copies. The
|
||||
// full license for this software is available in the LICENSE file.
|
||||
|
||||
#pragma once
|
||||
#define HAVE_IRCD_UTIL_WHAT_H
|
||||
|
||||
namespace ircd::util
|
||||
{
|
||||
string_view what(const std::exception_ptr eptr = std::current_exception()) noexcept;
|
||||
}
|
||||
|
||||
/// Get what() from exception_ptr
|
||||
///
|
||||
inline ircd::string_view
|
||||
ircd::util::what(const std::exception_ptr eptr)
|
||||
noexcept try
|
||||
{
|
||||
if(likely(eptr))
|
||||
std::rethrow_exception(eptr);
|
||||
|
||||
return {};
|
||||
}
|
||||
catch(const std::exception &e)
|
||||
{
|
||||
return e.what();
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
return {};
|
||||
}
|
Loading…
Reference in a new issue