feat():initial version
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
/* Policies for result and outcome
|
||||
(C) 2017-2020 Niall Douglas <http://www.nedproductions.biz/> (13 commits)
|
||||
File Created: Oct 2017
|
||||
|
||||
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_OUTCOME_POLICY_ALL_NARROW_HPP
|
||||
#define BOOST_OUTCOME_POLICY_ALL_NARROW_HPP
|
||||
|
||||
#include "base.hpp"
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_EXPORT_BEGIN
|
||||
|
||||
namespace policy
|
||||
{
|
||||
/*! AWAITING HUGO JSON CONVERSION TOOL
|
||||
type definition all_narrow. Potential doc page: `all_narrow`
|
||||
*/
|
||||
struct all_narrow : base
|
||||
{
|
||||
template <class Impl> static constexpr void wide_value_check(Impl &&self) { base::narrow_value_check(static_cast<Impl &&>(self)); }
|
||||
template <class Impl> static constexpr void wide_error_check(Impl &&self) { base::narrow_error_check(static_cast<Impl &&>(self)); }
|
||||
template <class Impl> static constexpr void wide_exception_check(Impl &&self) { base::narrow_exception_check(static_cast<Impl &&>(self)); }
|
||||
};
|
||||
} // namespace policy
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
93
install/boost_1_75_0/include/boost/outcome/policy/base.hpp
Normal file
93
install/boost_1_75_0/include/boost/outcome/policy/base.hpp
Normal file
@@ -0,0 +1,93 @@
|
||||
/* Policies for result and outcome
|
||||
(C) 2017-2020 Niall Douglas <http://www.nedproductions.biz/> (6 commits) and Andrzej Krzemieński <akrzemi1@gmail.com> (1 commit)
|
||||
File Created: Oct 2017
|
||||
|
||||
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_OUTCOME_POLICY_BASE_HPP
|
||||
#define BOOST_OUTCOME_POLICY_BASE_HPP
|
||||
|
||||
#include "../detail/value_storage.hpp"
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_EXPORT_BEGIN
|
||||
|
||||
namespace policy
|
||||
{
|
||||
namespace detail
|
||||
{
|
||||
using BOOST_OUTCOME_V2_NAMESPACE::detail::make_ub;
|
||||
}
|
||||
/*! AWAITING HUGO JSON CONVERSION TOOL
|
||||
SIGNATURE NOT RECOGNISED
|
||||
*/
|
||||
struct base
|
||||
{
|
||||
protected:
|
||||
template <class Impl> static constexpr void _make_ub(Impl &&self) noexcept { return detail::make_ub(static_cast<Impl &&>(self)); }
|
||||
template <class Impl> static constexpr bool _has_value(Impl &&self) noexcept { return self._state._status.have_value(); }
|
||||
template <class Impl> static constexpr bool _has_error(Impl &&self) noexcept { return self._state._status.have_error(); }
|
||||
template <class Impl> static constexpr bool _has_exception(Impl &&self) noexcept { return self._state._status.have_exception(); }
|
||||
template <class Impl> static constexpr bool _has_error_is_errno(Impl &&self) noexcept { return self._state._status.have_error_is_errno(); }
|
||||
|
||||
template <class Impl> static constexpr void _set_has_value(Impl &&self, bool v) noexcept { self._state._status.set_have_value(v); }
|
||||
template <class Impl> static constexpr void _set_has_error(Impl &&self, bool v) noexcept { self._state._status.set_have_error(v); }
|
||||
template <class Impl> static constexpr void _set_has_exception(Impl &&self, bool v) noexcept { self._state._status.set_have_exception(v); }
|
||||
template <class Impl> static constexpr void _set_has_error_is_errno(Impl &&self, bool v) noexcept { self._state._status.set_have_error_is_errno(v); }
|
||||
|
||||
template <class Impl> static constexpr auto &&_value(Impl &&self) noexcept { return static_cast<Impl &&>(self)._state._value; }
|
||||
template <class Impl> static constexpr auto &&_error(Impl &&self) noexcept { return static_cast<Impl &&>(self)._error; }
|
||||
|
||||
public:
|
||||
template <class R, class S, class P, class NoValuePolicy, class Impl> static inline constexpr auto &&_exception(Impl &&self) noexcept;
|
||||
|
||||
template <class Impl> static constexpr void narrow_value_check(Impl &&self) noexcept
|
||||
{
|
||||
if(!_has_value(self))
|
||||
{
|
||||
_make_ub(self);
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void narrow_error_check(Impl &&self) noexcept
|
||||
{
|
||||
if(!_has_error(self))
|
||||
{
|
||||
_make_ub(self);
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void narrow_exception_check(Impl &&self) noexcept
|
||||
{
|
||||
if(!_has_exception(self))
|
||||
{
|
||||
_make_ub(self);
|
||||
}
|
||||
}
|
||||
};
|
||||
} // namespace policy
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,60 @@
|
||||
/* Policies for result and outcome
|
||||
(C) 2018-2020 Niall Douglas <http://www.nedproductions.biz/> (4 commits)
|
||||
File Created: Sep 2018
|
||||
|
||||
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_OUTCOME_POLICY_FAIL_TO_COMPILE_OBSERVERS_HPP
|
||||
#define BOOST_OUTCOME_POLICY_FAIL_TO_COMPILE_OBSERVERS_HPP
|
||||
|
||||
#include "base.hpp"
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_EXPORT_BEGIN
|
||||
|
||||
#define BOOST_OUTCOME_FAIL_TO_COMPILE_OBSERVERS_MESSAGE \
|
||||
"Attempt to wide observe value, error or " \
|
||||
"exception for a basic_result/basic_outcome given an EC or EP type which is not void, and for whom " \
|
||||
"trait::is_error_code_available<EC>, trait::is_exception_ptr_available<EC>, and trait::is_exception_ptr_available<EP> " \
|
||||
"are all false. Please specify a NoValuePolicy to tell basic_result/basic_outcome what to do, or else use " \
|
||||
"a more specific convenience type alias such as unchecked<T, E> to indicate you want the wide " \
|
||||
"observers to be narrow, or checked<T, E> to indicate you always want an exception throw etc."
|
||||
|
||||
namespace policy
|
||||
{
|
||||
struct fail_to_compile_observers : base
|
||||
{
|
||||
template <class Impl> static constexpr void wide_value_check(Impl && /* unused */) { static_assert(!std::is_same<Impl, Impl>::value, BOOST_OUTCOME_FAIL_TO_COMPILE_OBSERVERS_MESSAGE); }
|
||||
template <class Impl> static constexpr void wide_error_check(Impl && /* unused */) { static_assert(!std::is_same<Impl, Impl>::value, BOOST_OUTCOME_FAIL_TO_COMPILE_OBSERVERS_MESSAGE); }
|
||||
template <class Impl> static constexpr void wide_exception_check(Impl && /* unused */) { static_assert(!std::is_same<Impl, Impl>::value, BOOST_OUTCOME_FAIL_TO_COMPILE_OBSERVERS_MESSAGE); }
|
||||
};
|
||||
} // namespace policy
|
||||
|
||||
#undef BOOST_OUTCOME_FAIL_TO_COMPILE_OBSERVERS_MESSAGE
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,80 @@
|
||||
/* Policies for result and outcome
|
||||
(C) 2017-2020 Niall Douglas <http://www.nedproductions.biz/> (12 commits)
|
||||
File Created: Oct 2017
|
||||
|
||||
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_OUTCOME_POLICY_OUTCOME_ERROR_CODE_THROW_AS_SYSTEM_ERROR_HPP
|
||||
#define BOOST_OUTCOME_POLICY_OUTCOME_ERROR_CODE_THROW_AS_SYSTEM_ERROR_HPP
|
||||
|
||||
#include "result_error_code_throw_as_system_error.hpp"
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_EXPORT_BEGIN
|
||||
|
||||
namespace policy
|
||||
{
|
||||
/*! AWAITING HUGO JSON CONVERSION TOOL
|
||||
type definition error_code_throw_as_system_error. Potential doc page: NOT FOUND
|
||||
*/
|
||||
template <class T, class EC, class E> struct error_code_throw_as_system_error : base
|
||||
{
|
||||
template <class Impl> static constexpr void wide_value_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_value(std::forward<Impl>(self)))
|
||||
{
|
||||
if(base::_has_exception(std::forward<Impl>(self)))
|
||||
{
|
||||
detail::_rethrow_exception<trait::is_exception_ptr_available<E>::value>{base::_exception<T, EC, E, error_code_throw_as_system_error>(std::forward<Impl>(self))}; // NOLINT
|
||||
}
|
||||
if(base::_has_error(std::forward<Impl>(self)))
|
||||
{
|
||||
// ADL discovered
|
||||
outcome_throw_as_system_error_with_payload(base::_error(std::forward<Impl>(self)));
|
||||
}
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_outcome_access("no value")); // NOLINT
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void wide_error_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_error(std::forward<Impl>(self)))
|
||||
{
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_outcome_access("no error")); // NOLINT
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void wide_exception_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_exception(std::forward<Impl>(self)))
|
||||
{
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_outcome_access("no exception")); // NOLINT
|
||||
}
|
||||
}
|
||||
};
|
||||
} // namespace policy
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,79 @@
|
||||
/* Policies for result and outcome
|
||||
(C) 2017-2020 Niall Douglas <http://www.nedproductions.biz/> (10 commits)
|
||||
File Created: Oct 2017
|
||||
|
||||
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_OUTCOME_POLICY_OUTCOME_EXCEPTION_PTR_RETHROW_HPP
|
||||
#define BOOST_OUTCOME_POLICY_OUTCOME_EXCEPTION_PTR_RETHROW_HPP
|
||||
|
||||
#include "result_exception_ptr_rethrow.hpp"
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_EXPORT_BEGIN
|
||||
|
||||
namespace policy
|
||||
{
|
||||
/*! AWAITING HUGO JSON CONVERSION TOOL
|
||||
type definition exception_ptr_rethrow. Potential doc page: NOT FOUND
|
||||
*/
|
||||
template <class T, class EC, class E> struct exception_ptr_rethrow : base
|
||||
{
|
||||
template <class Impl> static constexpr void wide_value_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_value(std::forward<Impl>(self)))
|
||||
{
|
||||
if(base::_has_exception(std::forward<Impl>(self)))
|
||||
{
|
||||
detail::_rethrow_exception<trait::is_exception_ptr_available<E>::value>{base::_exception<T, EC, E, exception_ptr_rethrow>(std::forward<Impl>(self))};
|
||||
}
|
||||
if(base::_has_error(std::forward<Impl>(self)))
|
||||
{
|
||||
detail::_rethrow_exception<trait::is_exception_ptr_available<EC>::value>{base::_error(std::forward<Impl>(self))};
|
||||
}
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_outcome_access("no value")); // NOLINT
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void wide_error_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_error(std::forward<Impl>(self)))
|
||||
{
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_outcome_access("no error")); // NOLINT
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void wide_exception_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_exception(std::forward<Impl>(self)))
|
||||
{
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_outcome_access("no exception")); // NOLINT
|
||||
}
|
||||
}
|
||||
};
|
||||
} // namespace policy
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,73 @@
|
||||
/* Policies for result and outcome
|
||||
(C) 2017-2020 Niall Douglas <http://www.nedproductions.biz/> (8 commits)
|
||||
File Created: Oct 2017
|
||||
|
||||
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_OUTCOME_POLICY_RESULT_ERROR_CODE_THROW_AS_SYSTEM_ERROR_HPP
|
||||
#define BOOST_OUTCOME_POLICY_RESULT_ERROR_CODE_THROW_AS_SYSTEM_ERROR_HPP
|
||||
|
||||
#include "../bad_access.hpp"
|
||||
#include "base.hpp"
|
||||
|
||||
#include <system_error>
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_EXPORT_BEGIN
|
||||
|
||||
namespace policy
|
||||
{
|
||||
template <class T, class EC, class E> struct error_code_throw_as_system_error;
|
||||
/*! AWAITING HUGO JSON CONVERSION TOOL
|
||||
SIGNATURE NOT RECOGNISED
|
||||
*/
|
||||
template <class T, class EC> struct error_code_throw_as_system_error<T, EC, void> : base
|
||||
{
|
||||
template <class Impl> static constexpr void wide_value_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_value(std::forward<Impl>(self)))
|
||||
{
|
||||
if(base::_has_error(std::forward<Impl>(self)))
|
||||
{
|
||||
// ADL discovered
|
||||
outcome_throw_as_system_error_with_payload(base::_error(std::forward<Impl>(self)));
|
||||
}
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_result_access("no value")); // NOLINT
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void wide_error_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_error(std::forward<Impl>(self)))
|
||||
{
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_result_access("no error")); // NOLINT
|
||||
}
|
||||
}
|
||||
};
|
||||
} // namespace policy
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,71 @@
|
||||
/* Policies for result and outcome
|
||||
(C) 2017-2020 Niall Douglas <http://www.nedproductions.biz/> (6 commits)
|
||||
File Created: Oct 2017
|
||||
|
||||
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_OUTCOME_POLICY_RESULT_EXCEPTION_PTR_RETHROW_HPP
|
||||
#define BOOST_OUTCOME_POLICY_RESULT_EXCEPTION_PTR_RETHROW_HPP
|
||||
|
||||
#include "../bad_access.hpp"
|
||||
#include "base.hpp"
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_EXPORT_BEGIN
|
||||
|
||||
namespace policy
|
||||
{
|
||||
/*! AWAITING HUGO JSON CONVERSION TOOL
|
||||
SIGNATURE NOT RECOGNISED
|
||||
*/
|
||||
template <class T, class EC, class E> struct exception_ptr_rethrow;
|
||||
template <class T, class EC> struct exception_ptr_rethrow<T, EC, void> : base
|
||||
{
|
||||
template <class Impl> static constexpr void wide_value_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_value(std::forward<Impl>(self)))
|
||||
{
|
||||
if(base::_has_error(std::forward<Impl>(self)))
|
||||
{
|
||||
// ADL
|
||||
rethrow_exception(policy::exception_ptr(base::_error(std::forward<Impl>(self))));
|
||||
}
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_result_access("no value")); // NOLINT
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void wide_error_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_error(std::forward<Impl>(self)))
|
||||
{
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_result_access("no error")); // NOLINT
|
||||
}
|
||||
}
|
||||
};
|
||||
} // namespace policy
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,73 @@
|
||||
/* Policies for result and outcome
|
||||
(C) 2017-2020 Niall Douglas <http://www.nedproductions.biz/> (12 commits)
|
||||
File Created: Oct 2017
|
||||
|
||||
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_OUTCOME_POLICY_TERMINATE_HPP
|
||||
#define BOOST_OUTCOME_POLICY_TERMINATE_HPP
|
||||
|
||||
#include "base.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_EXPORT_BEGIN
|
||||
|
||||
namespace policy
|
||||
{
|
||||
/*! AWAITING HUGO JSON CONVERSION TOOL
|
||||
type definition terminate. Potential doc page: `terminate`
|
||||
*/
|
||||
struct terminate : base
|
||||
{
|
||||
template <class Impl> static constexpr void wide_value_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_value(static_cast<Impl &&>(self)))
|
||||
{
|
||||
std::abort();
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void wide_error_check(Impl &&self) noexcept
|
||||
{
|
||||
if(!base::_has_error(static_cast<Impl &&>(self)))
|
||||
{
|
||||
std::abort();
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void wide_exception_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_exception(static_cast<Impl &&>(self)))
|
||||
{
|
||||
std::abort();
|
||||
}
|
||||
}
|
||||
};
|
||||
} // namespace policy
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,93 @@
|
||||
/* Policies for result and outcome
|
||||
(C) 2017-2020 Niall Douglas <http://www.nedproductions.biz/> (13 commits)
|
||||
File Created: Oct 2017
|
||||
|
||||
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_OUTCOME_POLICY_THROW_BAD_RESULT_ACCESS_HPP
|
||||
#define BOOST_OUTCOME_POLICY_THROW_BAD_RESULT_ACCESS_HPP
|
||||
|
||||
#include "../bad_access.hpp"
|
||||
#include "base.hpp"
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_EXPORT_BEGIN
|
||||
|
||||
namespace policy
|
||||
{
|
||||
/*! AWAITING HUGO JSON CONVERSION TOOL
|
||||
type definition throw_bad_result_access. Potential doc page: NOT FOUND
|
||||
*/
|
||||
template <class EC, class EP> struct throw_bad_result_access : base
|
||||
{
|
||||
template <class Impl> static constexpr void wide_value_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_value(std::forward<Impl>(self)))
|
||||
{
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_outcome_access("no value")); // NOLINT
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void wide_error_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_error(std::forward<Impl>(self)))
|
||||
{
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_outcome_access("no error")); // NOLINT
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void wide_exception_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_exception(std::forward<Impl>(self)))
|
||||
{
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_outcome_access("no exception")); // NOLINT
|
||||
}
|
||||
}
|
||||
};
|
||||
template <class EC> struct throw_bad_result_access<EC, void> : base
|
||||
{
|
||||
template <class Impl> static constexpr void wide_value_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_value(std::forward<Impl>(self)))
|
||||
{
|
||||
if(base::_has_error(std::forward<Impl>(self)))
|
||||
{
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_result_access_with<EC>(base::_error(std::forward<Impl>(self))));
|
||||
}
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_result_access("no value")); // NOLINT
|
||||
}
|
||||
}
|
||||
template <class Impl> static constexpr void wide_error_check(Impl &&self)
|
||||
{
|
||||
if(!base::_has_error(std::forward<Impl>(self)))
|
||||
{
|
||||
BOOST_OUTCOME_THROW_EXCEPTION(bad_result_access("no error")); // NOLINT
|
||||
}
|
||||
}
|
||||
};
|
||||
} // namespace policy
|
||||
|
||||
BOOST_OUTCOME_V2_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user