diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..5f85b18b6 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "common/include/boost"] + path = common/include/boost + url = https://github.com/Atmosphere-NX/ext-boost.git diff --git a/common/include/boost b/common/include/boost new file mode 160000 index 000000000..fc6429e46 --- /dev/null +++ b/common/include/boost @@ -0,0 +1 @@ +Subproject commit fc6429e46398e16178b828a3a20e1bee9c56443d diff --git a/stratosphere/libstratosphere/include/boost/callable_traits.hpp b/stratosphere/libstratosphere/include/boost/callable_traits.hpp deleted file mode 100644 index 87f0fa622..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_BOOST_CLBL_TRTS_HPP -#define BOOST_CLBL_TRTS_BOOST_CLBL_TRTS_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/add_member_const.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/add_member_const.hpp deleted file mode 100644 index cd7280ef8..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/add_member_const.hpp +++ /dev/null @@ -1,105 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_ADD_MEMBER_CONST_HPP -#define BOOST_CLBL_TRTS_ADD_MEMBER_CONST_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ add_member_const_hpp -/*` -[section:ref_add_member_const add_member_const] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using add_member_const_t = //see below -//<- -#ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - - detail::sfinae_try< - typename detail::traits::add_member_const, - - detail::fail_when_same::add_member_const, - detail::abominable_functions_not_supported_on_this_compiler, - this_compiler_doesnt_support_abominable_function_types>, - - detail::fail_if_invalid::add_member_const, - member_qualifiers_are_illegal_for_this_type>>; -#else - - detail::try_but_fail_if_invalid< - typename detail::traits::add_member_const, - member_qualifiers_are_illegal_for_this_type>; - -#endif // #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - -namespace detail { - - template - struct add_member_const_impl {}; - - template - struct add_member_const_impl , detail::dummy>::type> - { - using type = add_member_const_t; - }; -} - -//-> - -template -struct add_member_const : detail::add_member_const_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - - -/*` -[heading Constraints] -* `T` must be a function type or a member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Adds a member `const` qualifier to `T`, if not already present. - -[heading Input/Output Examples] -[table - [[`T`] [`add_member_const_t`]] - [[`int()`] [`int() const`]] - [[`int(foo::*)()`] [`int(foo::*)() const`]] - [[`int(foo::*)() &`] [`int(foo::*)() const &`]] - [[`int(foo::*)() &&`] [`int(foo::*)() const &&`]] - [[`int(foo::*)() const`] [`int(foo::*)() const`]] - [[`int(foo::*)() volatile`] [`int(foo::*)() const volatile`]] - [[`int(foo::*)() transaction_safe`] [`int(foo::*)() const transaction_safe`]] - [[`int`] [(substitution failure)]] - [[`int (&)()`] [(substitution failure)]] - [[`int (*)()`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (foo::* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/add_member_const.cpp] -[add_member_const] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_ADD_MEMBER_CONST_HPP - - - diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/add_member_cv.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/add_member_cv.hpp deleted file mode 100644 index e11cc0754..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/add_member_cv.hpp +++ /dev/null @@ -1,101 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_ADD_MEMBER_CV_HPP -#define BOOST_CLBL_TRTS_ADD_MEMBER_CV_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ add_member_cv_hpp -/*` -[section:ref_add_member_cv add_member_cv] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using add_member_cv_t = //see below -//<- -#ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - - detail::sfinae_try< - typename detail::traits::add_member_cv, - - detail::fail_when_same::add_member_cv, - detail::abominable_functions_not_supported_on_this_compiler, - this_compiler_doesnt_support_abominable_function_types>, - - detail::fail_if_invalid::add_member_cv, - member_qualifiers_are_illegal_for_this_type>>; -#else - - detail::try_but_fail_if_invalid< - typename detail::traits::add_member_cv, - member_qualifiers_are_illegal_for_this_type>; - -#endif // #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - -namespace detail { - - template - struct add_member_cv_impl {}; - - template - struct add_member_cv_impl , detail::dummy>::type> - { - using type = add_member_cv_t; - }; -} - -//-> - -template -struct add_member_cv : detail::add_member_cv_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be a function type or a member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Adds member `const` and `volatile` qualifiers to `T`, if not already present. - -[heading Input/Output Examples] -[table - [[`T`] [`add_member_cv_t`]] - [[`int()`] [`int() const volatile`]] - [[`int(foo::*)()`] [`int(foo::*)() const volatile`]] - [[`int(foo::*)() &`] [`int(foo::*)() const volatile &`]] - [[`int(foo::*)() &&`] [`int(foo::*)() const volatile &&`]] - [[`int(foo::*)() const`] [`int(foo::*)() const volatile`]] - [[`int(foo::*)() volatile`] [`int(foo::*)() const volatile`]] - [[`int(foo::*)() transaction_safe`] [`int(foo::*)() const volatile transaction_safe`]] - [[`int`] [(substitution failure)]] - [[`int (&)()`] [(substitution failure)]] - [[`int (*)()`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (foo::* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/add_member_cv.cpp] -[add_member_cv] -[endsect] -*/ -//] - -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/add_member_lvalue_reference.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/add_member_lvalue_reference.hpp deleted file mode 100644 index e23d71a00..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/add_member_lvalue_reference.hpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_ADD_MEMBER_LVALUE_REFERENCE_HPP -#define BOOST_CLBL_TRTS_ADD_MEMBER_LVALUE_REFERENCE_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ add_member_lvalue_reference_hpp -/*` -[section:ref_add_member_lvalue_reference add_member_lvalue_reference] -[heading Header] -``#include `` -[heading Definition] -*/ - -#ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - -template -struct add_member_lvalue_reference_t { - static_assert(std::is_same::value, - "Reference member qualifiers are not supported by this configuration."); -}; - -#else - -template -using add_member_lvalue_reference_t = //see below -//<- -#ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - - detail::sfinae_try< - typename detail::traits::add_member_lvalue_reference, - - detail::fail_when_same::add_member_lvalue_reference, - detail::abominable_functions_not_supported_on_this_compiler, - this_compiler_doesnt_support_abominable_function_types>, - - detail::fail_if_invalid< - typename detail::traits::add_member_lvalue_reference, - member_qualifiers_are_illegal_for_this_type>>; -#else - - detail::try_but_fail_if_invalid< - typename detail::traits::add_member_lvalue_reference, - member_qualifiers_are_illegal_for_this_type>; - -#endif // #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS -#endif // #ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - -namespace detail { - - template - struct add_member_lvalue_reference_impl {}; - - template - struct add_member_lvalue_reference_impl , detail::dummy>::type> - { - using type = add_member_lvalue_reference_t; - }; -} -//-> - -template -struct add_member_lvalue_reference - : detail::add_member_lvalue_reference_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be a function type or a member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Adds a member lvalue reference qualifier (`&`) to `T`, if not already present. -* If an rvalue reference qualifier is present, the lvalue reference qualifier replaces it (in accordance with reference collapsing rules). - -[heading Input/Output Examples] -[table - [[`T`] [`add_member_lvalue_reference_t`]] - [[`int()`] [`int() &`]] - [[`int(foo::*)()`] [`int(foo::*)() &`]] - [[`int(foo::*)() &`] [`int(foo::*)() &`]] - [[`int(foo::*)() &&`] [`int(foo::*)() &`]] - [[`int(foo::*)() const`] [`int(foo::*)() const &`]] - [[`int(foo::*)() transaction_safe`] [`int(foo::*)() & transaction_safe`]] - [[`int`] [(substitution failure)]] - [[`int (&)()`] [(substitution failure)]] - [[`int (*)()`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (foo::* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/add_member_lvalue_reference.cpp] -[add_member_lvalue_reference] -[endsect] -*/ -//] - -#endif - diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/add_member_rvalue_reference.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/add_member_rvalue_reference.hpp deleted file mode 100644 index 84e3c5eaf..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/add_member_rvalue_reference.hpp +++ /dev/null @@ -1,113 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_ADD_MEMBER_RVALUE_REFERENCE_HPP -#define BOOST_CLBL_TRTS_ADD_MEMBER_RVALUE_REFERENCE_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ add_member_rvalue_reference_hpp -/*` -[section:ref_add_member_rvalue_reference add_member_rvalue_reference] -[heading Header] -``#include `` -[heading Definition] -*/ - -#ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - -template -struct add_member_rvalue_reference_t { - static_assert(std::is_same::value, - "Reference member qualifiers are not supported by this configuration."); -}; - -#else - -template -using add_member_rvalue_reference_t = //see below -//<- -#ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - - detail::sfinae_try< - typename detail::traits::add_member_rvalue_reference, - - detail::fail_when_same::add_member_rvalue_reference, - detail::abominable_functions_not_supported_on_this_compiler, - this_compiler_doesnt_support_abominable_function_types>, - - detail::fail_if_invalid::add_member_rvalue_reference, - member_qualifiers_are_illegal_for_this_type>>; -#else - - detail::try_but_fail_if_invalid< - typename detail::traits::add_member_rvalue_reference, - member_qualifiers_are_illegal_for_this_type>; - -#endif // #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS -#endif // #ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - -namespace detail { - - template - struct add_member_rvalue_reference_impl {}; - - template - struct add_member_rvalue_reference_impl , detail::dummy>::type> - { - using type = add_member_rvalue_reference_t; - }; -} -//-> - - -template -struct add_member_rvalue_reference - : detail::add_member_rvalue_reference_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be a function type or a member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Adds a member rvalue reference qualifier (`&&`) to `T`, if not already present. -* If an lvalue reference qualifier is present, the lvalue reference qualifier remains (in accordance with reference collapsing rules). - -[heading Input/Output Examples] -[table - [[`T`] [`add_member_rvalue_reference_t`]] - [[`int()`] [`int() &&`]] - [[`int(foo::*)()`] [`int(foo::*)() &&`]] - [[`int(foo::*)() &`] [`int(foo::*)() &`]] - [[`int(foo::*)() &&`] [`int(foo::*)() &&`]] - [[`int(foo::*)() const`] [`int(foo::*)() const &&`]] - [[`int(foo::*)() transaction_safe`] [`int(foo::*)() && transaction_safe`]] - [[`int`] [(substitution failure)]] - [[`int (&)()`] [(substitution failure)]] - [[`int (*)()`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (foo::* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/add_member_rvalue_reference.cpp] -[add_member_rvalue_reference] -[endsect][/section:ref_add_member_rvalue_reference] -*/ -//] - -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/add_member_volatile.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/add_member_volatile.hpp deleted file mode 100644 index cb0a508a6..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/add_member_volatile.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_ADD_MEMBER_VOLATILE_HPP -#define BOOST_CLBL_TRTS_ADD_MEMBER_VOLATILE_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ add_member_volatile_hpp -/*` -[section:ref_add_member_volatile add_member_volatile] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using add_member_volatile_t = //see below -//<- -#ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - - detail::sfinae_try< - typename detail::traits::add_member_volatile, - - detail::fail_when_same::add_member_volatile, - detail::abominable_functions_not_supported_on_this_compiler, - this_compiler_doesnt_support_abominable_function_types>, - - detail::fail_if_invalid< - typename detail::traits::add_member_volatile, - member_qualifiers_are_illegal_for_this_type>>; -#else - - detail::try_but_fail_if_invalid< - typename detail::traits::add_member_volatile, - member_qualifiers_are_illegal_for_this_type>; - -#endif // #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - -namespace detail { - - template - struct add_member_volatile_impl {}; - - template - struct add_member_volatile_impl , detail::dummy>::type> - { - using type = add_member_volatile_t; - }; -} -//-> - -template -struct add_member_volatile : detail::add_member_volatile_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be a function type or a member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Adds a member volatile qualifier to `T`, if not already present. - -[heading Input/Output Examples] -[table - [[`T`] [`add_member_volatile_t`]] - [[`int()`] [`int() volatile`]] - [[`int(foo::*)()`] [`int(foo::*)() volatile`]] - [[`int(foo::*)() &`] [`int(foo::*)() volatile &`]] - [[`int(foo::*)() &&`] [`int(foo::*)() volatile &&`]] - [[`int(foo::*)() const`] [`int(foo::*)() const volatile`]] - [[`int(foo::*)() transaction_safe`] [`int(foo::*)() volatile transaction_safe`]] - [[`int`] [(substitution failure)]] - [[`int (&)()`] [(substitution failure)]] - [[`int (*)()`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (foo::* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/add_member_volatile.cpp] -[add_member_volatile] -[endsect][/section:ref_add_member_volatile] -*/ -//] - -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/add_noexcept.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/add_noexcept.hpp deleted file mode 100644 index 92b2dc55a..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/add_noexcept.hpp +++ /dev/null @@ -1,108 +0,0 @@ -/* -@file add_noexcept - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_ADD_NOEXCEPT_HPP -#define BOOST_CLBL_TRTS_ADD_NOEXCEPT_HPP - -#include - -namespace boost { namespace callable_traits { - -BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(add_noexcept) -BOOST_CLBL_TRTS_SFINAE_MSG(add_noexcept, cannot_add_noexcept_to_this_type) - -#ifndef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES -template -struct add_noexcept_t { - static_assert(std::is_same::value, - "noexcept types not supported by this configuration."); -}; - -template -struct add_noexcept { - static_assert(std::is_same::value, - "noexcept types not supported by this configuration."); -}; - -#else - -//[ add_noexcept_hpp -/*` -[section:ref_add_noexcept add_noexcept] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using add_noexcept_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits::add_noexcept, - cannot_add_noexcept_to_this_type>; - -namespace detail { - - template - struct add_noexcept_impl {}; - - template - struct add_noexcept_impl , detail::dummy>::type> - { - using type = add_noexcept_t; - }; -} -//-> - -template -struct add_noexcept : detail::add_noexcept_impl {}; - -//<- -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be one of the following: - * function type - * function pointer type - * function reference type - * member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Adds a `noexcept` specifier to `T`, if not already present. - -[heading Input/Output Examples] -[table - [[`T`] [`add_noexcept_t`]] - [[`int()`] [`int() noexcept`]] - [[`int (&)()`] [`int(&)() noexcept`]] - [[`int (*)()`] [`int(*)() noexcept`]] - [[`int(foo::*)()`] [`int(foo::*)() noexcept`]] - [[`int(foo::*)() &`] [`int(foo::*)() & noexcept`]] - [[`int(foo::*)() &&`] [`int(foo::*)() && noexcept`]] - [[`int(foo::*)() const transaction_safe`] [`int(foo::*)() const transaction_safe noexcept`]] - [[`int(foo::*)() noexcept`] [`int(foo::*)() noexcept`]] - [[`int`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (*&)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/add_noexcept.cpp] -[add_noexcept] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_ADD_NOEXCEPT_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/add_transaction_safe.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/add_transaction_safe.hpp deleted file mode 100644 index 2a634ba64..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/add_transaction_safe.hpp +++ /dev/null @@ -1,110 +0,0 @@ -/* -@file add_transaction_safe - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_ADD_TRANSACTION_SAFE_HPP -#define BOOST_CLBL_TRTS_ADD_TRANSACTION_SAFE_HPP - -#include - -namespace boost { namespace callable_traits { - -BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(add_transaction_safe) -BOOST_CLBL_TRTS_SFINAE_MSG(add_transaction_safe, cannot_add_transaction_safe_to_this_type) - -#ifndef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE -template -struct add_transaction_safe_t { - static_assert(std::is_same::value, - "transaction_safe not supported by this configuration."); -}; - -template -struct add_transaction_safe { - static_assert(std::is_same::value, - "transaction_safe not supported by this configuration."); -}; - -#else - -//[ add_transaction_safe_hpp -/*` -[section:ref_add_transaction_safe add_transaction_safe] -[heading Header] -``#include `` -[heading Definition] -*/ - - -template -using add_transaction_safe_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits::add_transaction_safe, - cannot_add_transaction_safe_to_this_type>; - -namespace detail { - - template - struct add_transaction_safe_impl {}; - - template - struct add_transaction_safe_impl , detail::dummy>::type> - { - using type = add_transaction_safe_t; - }; -} -//-> - -template -struct add_transaction_safe - : detail::add_transaction_safe_impl {}; - -//<- -#endif // #ifndef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be one of the following: - * function type - * function pointer type - * function reference type - * member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Adds the `transaction_safe` specifier to `T`, if not already present. - -[heading Input/Output Examples] -[table - [[`T`] [`add_transaction_safe_t`]] - [[`int()`] [`int() transaction_safe`]] - [[`int (&)()`] [`int(&)() transaction_safe`]] - [[`int (*)()`] [`int(*)() transaction_safe`]] - [[`int(foo::*)()`] [`int(foo::*)() transaction_safe`]] - [[`int(foo::*)() &`] [`int(foo::*)() & transaction_safe`]] - [[`int(foo::*)() &&`] [`int(foo::*)() && transaction_safe`]] - [[`int(foo::*)() const`] [`int(foo::*)() const transaction_safe`]] - [[`int(foo::*)() transaction_safe`] [`int(foo::*)() transaction_safe`]] - [[`int`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (*&)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/add_transaction_safe.cpp] -[add_transaction_safe] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_ADD_TRANSACTION_SAFE_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/add_varargs.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/add_varargs.hpp deleted file mode 100644 index 9357e38ba..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/add_varargs.hpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_ADD_VARARGS_HPP -#define BOOST_CLBL_TRTS_ADD_VARARGS_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ add_varargs_hpp -/*` -[section:ref_add_varargs add_varargs] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using add_varargs_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits::add_varargs, - varargs_are_illegal_for_this_type>; - -namespace detail { - - template - struct add_varargs_impl {}; - - template - struct add_varargs_impl , detail::dummy>::type> - { - using type = add_varargs_t; - }; -} -//-> - -template -struct add_varargs : detail::add_varargs_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be one of the following: - * function type - * function pointer type - * function reference type - * member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Adds C-style variadics (`...`) to the signature of `T`, if not already present. - -[heading Input/Output Examples] -[table - [[`T`] [`add_varargs_t`]] - [[`int()`] [`int(...)`]] - [[`int(int)`] [`int(int, ...)`]] - [[`int (&)()`] [`int(&)(...)`]] - [[`int (*)()`] [`int(*)(...)`]] - [[`int (*)(...)`] [`int(*)(...)`]] - [[`int(foo::*)()`] [`int(foo::*)(...)`]] - [[`int(foo::*)() &`] [`int(foo::*)(...) &`]] - [[`int(foo::*)() &&`] [`int(foo::*)(...) &&`]] - [[`int(foo::*)() const`] [`int(foo::*)(...) const`]] - [[`int(foo::*)() transaction_safe`] [`int(foo::*)(...) transaction_safe`]] - [[`int`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (*&)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/add_varargs.cpp] -[add_varargs] -[endsect] -*/ -//] - -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/apply_member_pointer.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/apply_member_pointer.hpp deleted file mode 100644 index efd3f9575..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/apply_member_pointer.hpp +++ /dev/null @@ -1,123 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_APPLY_MEMBER_POINTER_HPP -#define BOOST_CLBL_TRTS_APPLY_MEMBER_POINTER_HPP - -#include - -namespace boost { namespace callable_traits { - -BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(apply_member_pointer) -BOOST_CLBL_TRTS_SFINAE_MSG(apply_member_pointer, members_cannot_have_a_type_of_void) -BOOST_CLBL_TRTS_SFINAE_MSG(apply_member_pointer, second_template_argument_must_be_a_class_or_struct) - -namespace detail { - - template::value> - struct make_member_pointer; - - template - struct make_member_pointer { - using type = typename std::remove_reference::type C::*; - }; - - template - struct make_member_pointer { - using type = invalid_type; - }; - - template - struct make_member_pointer { - using type = error_type; - }; - - template - using make_member_pointer_t = typename make_member_pointer::type; -} - -//[ apply_member_pointer_hpp -/*` -[section:ref_apply_member_pointer apply_member_pointer] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using apply_member_pointer_t = //see below -//<- - detail::sfinae_try< - detail::fallback_if_invalid< - typename detail::traits::template apply_member_pointer, - typename detail::make_member_pointer::type>, - - detail::fail_when_same, - - detail::fail_if::value, - second_template_argument_must_be_a_class_or_struct> >; - -namespace detail { - - template - struct apply_member_pointer_impl {}; - - template - struct apply_member_pointer_impl , detail::dummy>::type> - { - using type = apply_member_pointer_t; - }; -} - -//-> - -template -struct apply_member_pointer : detail::apply_member_pointer_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` may be any type except `void` -* `C` must be a user-defined type - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* When `T` is a function, function pointer (unqualified), or function reference, then the aliased type is a member function pointer of `C` with the same parameters and return type. -* When `T` is a member function pointer (unqualified) of any type, the aliased type is a member function pointer of `C` with the same parameters and return type. -* Otherwise, the aliased type is a member data pointer equivalent to `std::remove_reference_t C::*`. - -[heading Input/Output Examples] -[table - [[`T`] [`apply_member_pointer_t`]] - [[`int()`] [`int(foo::*)()`]] - [[`int (&)()`] [`int(foo::*)()`]] - [[`int (*)()`] [`int(foo::*)()`]] - [[`int(bar::*)()`] [`int(foo::*)()`]] - [[`int(bar::*)() &`] [`int(foo::*)() &`]] - [[`int(bar::*)() &&`] [`int(foo::*)() &&`]] - [[`int(bar::*)() const`] [`int(foo::*)() const`]] - [[`int(bar::*)() transaction_safe`] [`int(foo::*)() transaction_safe`]] - [[`int bar::*`] [`int foo::*`]] - [[`int`] [`int foo::*`]] - [[`int &`] [`int foo::*`]] - [[`const int &`] [`const int foo::*`]] - [[`int (*const)()`] [`int (*const foo::*)()`]] - [[`void`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/apply_member_pointer.cpp] -[apply_member_pointer] -[endsect] -*/ -//] -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/apply_return.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/apply_return.hpp deleted file mode 100644 index 6ed5ab74e..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/apply_return.hpp +++ /dev/null @@ -1,109 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_APPLY_RETURN_HPP -#define BOOST_CLBL_TRTS_APPLY_RETURN_HPP - -#include - -namespace boost { namespace callable_traits { - -BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(apply_return) -BOOST_CLBL_TRTS_SFINAE_MSG(apply_return, invalid_types_for_apply_return) - -namespace detail { - - template - struct apply_return_helper { - using type = typename detail::traits::template apply_return; - }; - - //special case - template - struct apply_return_helper, R> { - using type = R(Args...); - }; -} - -//[ apply_return_hpp -/*` -[section:ref_apply_return apply_return] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using apply_return_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::apply_return_helper::type, - invalid_types_for_apply_return>; - -namespace detail { - - template - struct apply_return_impl {}; - - template - struct apply_return_impl , detail::dummy>::type> - { - using type = apply_return_t; - }; -} - //-> - -template -struct apply_return : detail::apply_return_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must one of the following: - * `std::tuple` template instantiation - * function - * function pointer - * function reference - * member function pointer - * member data pointer -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* When `T` is `std::tuple`, the aliased type is `R(Args...)`. -* When `T` is a function, function pointer, function reference, or member function pointer, the aliased type's return type is `R`, but is otherwise identical to `T`. -* When `T` is a member data pointer of class `foo` to a `U` type (such that `T` is `U foo::*`), the aliased type is `R foo::*`. - -[heading Input/Output Examples] -[table - [[`T`] [`apply_return_t`]] - [[`std::tuple`] [`float(int, int)`]] - [[`int()`] [`float()`]] - [[`int (&)()`] [`float(&)()`]] - [[`int (*)()`] [`float(*)()`]] - [[`int (*)(...)`] [`float(*)()`]] - [[`int(foo::*)()`] [`float(foo::*)()`]] - [[`int(foo::*)() &`] [`float(foo::*)() &`]] - [[`int(foo::*)() &&`] [`float(foo::*)() &&`]] - [[`int(foo::*)() const`] [`float(foo::*)() const`]] - [[`int(foo::*)() transaction_safe`] [`float(foo::*)() transaction_safe`]] - [[`int foo::*`] [`float foo::*`]] - [[`int`] [(substitution failure)]] - [[`int (*const)()`] [(substitution failure)]] -] - -[heading Example Program] -[/import ../example/apply_return.cpp] -[apply_return] -[endsect] -*/ -//] -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/args.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/args.hpp deleted file mode 100644 index 6dcaaccc1..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/args.hpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_ARGS_HPP -#define BOOST_CLBL_TRTS_ARGS_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ args_hpp -/*`[section:ref_args args] -[heading Header] -``#include `` -[heading Definition] -*/ - -template class Container = std::tuple> -using args_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits< - detail::shallow_decay>::template expand_args, - cannot_expand_the_parameter_list_of_first_template_argument>; - -namespace detail { - - template class Container, - typename = std::false_type> - struct args_impl {}; - - template class Container> - struct args_impl , detail::dummy>::type> - { - using type = args_t; - }; -} - -//-> - -template class Container = std::tuple> -struct args : detail::args_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be one of the following: - * function - * function pointer - * function reference - * member function pointer - * member data pointer - * user-defined type with a non-overloaded `operator()` - * type of a non-generic lambda - -[heading Behavior] -* When the constraints are violated, a substitution failure occurs. -* When `T` is a function, function pointer, or function reference, the aliased type is `Container` instantiated with the function's parameter types. -* When `T` is a function object, the aliased type is `Container` instantiated with the `T::operator()` parameter types. -* When `T` is a member function pointer, the aliased type is a `Container` instantiation, where the first type argument is a reference to the parent class of `T`, qualified according to the member qualifiers on `T`, such that the first type is equivalent to `boost::callable_traits::qualified_class_of_t`. The subsequent type arguments, if any, are the parameter types of the member function. -* When `T` is a member data pointer, the aliased type is `Container` with a single element, which is a `const` reference to the parent class of `T`. - -[heading Input/Output Examples] -[table - [[`T`] [`args_t`]] - [[`void(float, char, int)`] [`std::tuple`]] - [[`void(*)(float, char, int)`] [`std::tuple`]] - [[`void(*)()`] [`std::tuple<>`]] - [[`void(foo::* const &)(float, char, int)`] [`std::tuple`]] - [[`int(foo::*)(int) const`] [`std::tuple`]] - [[`void(foo::*)() volatile &&`] [`std::tuple`]] - [[`int foo::*`] [`std::tuple`]] - [[`const int foo::*`] [`std::tuple`]] - [[`int`] [(substitution failure)]] - [[`int (*const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/args.cpp] -[args] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_ARGS_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/class_of.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/class_of.hpp deleted file mode 100644 index a9eee7970..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/class_of.hpp +++ /dev/null @@ -1,75 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_class_of_HPP -#define BOOST_CLBL_TRTS_class_of_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ class_of_hpp -/*` -[section:ref_class_of class_of] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using class_of_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits>::class_type, - type_is_not_a_member_pointer>; - -namespace detail { - - template - struct class_of_impl {}; - - template - struct class_of_impl , detail::dummy>::type> - { - using type = class_of_t; - }; -} - -//-> - -template -struct class_of : detail::class_of_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be a member pointer - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* The aliased type is the parent class of the member. In other words, if `T` is expanded to `U C::*`, the aliased type is `C`. - -[heading Input/Output Examples] -[table - [[`T`] [`class_of_t`]] - [[`int foo::*`] [`foo`]] - [[`void(foo::* const &)() const`] [`foo`]] -] - -[heading Example Program] -[import ../example/class_of.cpp] -[class_of] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_class_of_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/config.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/config.hpp deleted file mode 100644 index 946458187..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/config.hpp +++ /dev/null @@ -1,109 +0,0 @@ -/* -@Copyright Barrett Adair 2016-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP -#define BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP - -#include -#include -#include -#include - -#define BOOST_CLBL_TRTS_EMPTY_ -#define BOOST_CLBL_TRTS_EMPTY BOOST_CLBL_TRTS_EMPTY_ - -#ifdef __cpp_transactional_memory -# define BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE -#endif - -#ifdef __cpp_inline_variables -# define BOOST_CLBL_TRAITS_INLINE_VAR inline -#else -# define BOOST_CLBL_TRAITS_INLINE_VAR -#endif - -#ifdef __cpp_noexcept_function_type -# define BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES -#endif - -#ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE -# define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER transaction_safe -#else -# define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER -#endif - -#ifndef __clang__ -# if defined(__GNUC__) -# define BOOST_CLBL_TRTS_GCC -# if __GNUC__ >= 6 -# define BOOST_CLBL_TRTS_GCC_AT_LEAST_6_0_0 -# endif -# if __GNUC__ < 5 -# define BOOST_CLBL_TRTS_GCC_OLDER_THAN_5_0_0 -# endif -# if __GNUC__ >= 5 -# define BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2 -# elif __GNUC__ == 4 && __GNUC_MINOR__ == 9 && __GNUC_PATCHLEVEL__ >= 2 -# define BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2 -# else -# define BOOST_CLBL_TRTS_GCC_OLDER_THAN_4_9_2 -# endif //#if __GNUC__ >= 5 -# endif //#if defined __GNUC__ -#endif // #ifndef __clang__ - -#ifdef _MSC_VER -# ifdef __clang__ -# define BOOST_CLBL_TRTS_CLANG_C2 -# else -# define BOOST_CLBL_TRTS_MSVC -# endif // #ifdef __clang__ -#endif // #ifdef _MSC_VER - -#define BOOST_CLBL_TRTS_IX_SEQ(...) ::std::index_sequence< __VA_ARGS__ > -#define BOOST_CLBL_TRTS_MAKE_IX_SEQ(...) ::std::make_index_sequence< __VA_ARGS__ > -#define BOOST_CLBL_TRTS_DISJUNCTION(...) ::std::disjunction< __VA_ARGS__ > - -#ifndef __cpp_variable_templates -# define BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES -#endif - -#ifndef __cpp_lib_logical_traits -# include -#endif //__cpp_lib_logical_traits - -#ifndef __cpp_lib_integer_sequence -# include -#endif // __cpp_lib_integer_sequence - -#if defined(BOOST_CLBL_TRTS_MSVC) && !defined(BOOST_DISABLE_WIN32) -# define BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC __cdecl -# define BOOST_CLBL_TRTS_PMF_VARGARGS_CDECL_DEFAULT -#else -# define BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC -#endif // #if defined(BOOST_CLBL_TRTS_MSVC) && !defined(BOOST_DISABLE_WIN32)) - -#if (defined(BOOST_CLBL_TRTS_GCC) && !defined(BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2)) || defined(__INTEL_COMPILER) -# define BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS -# define BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS -#endif // #if defined BOOST_CLBL_TRTS_GCC && !defined(BOOST_CLBL_TRTS_GCC_AT_LEAST_4_9_2) - -#ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS -# define BOOST_CLBL_TRTS_ABOMINABLE_CONST BOOST_CLBL_TRTS_EMPTY -# define BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE BOOST_CLBL_TRTS_EMPTY -#else -# define BOOST_CLBL_TRTS_ABOMINABLE_CONST const -# define BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE volatile -#endif // #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - -#ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES -# define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER noexcept -#else -# define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER BOOST_CLBL_TRTS_EMPTY -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES - -#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_CONFIG_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/core.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/core.hpp deleted file mode 100644 index 77560283b..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/core.hpp +++ /dev/null @@ -1,19 +0,0 @@ -/* - -@Copyright Barrett Adair 2016-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_CORE_HPP -#define BOOST_CLBL_TRTS_DETAIL_CORE_HPP - -#include -#include -#include -#include -#include -#include - -#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_CORE_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/default_callable_traits.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/default_callable_traits.hpp deleted file mode 100644 index 84970783a..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/default_callable_traits.hpp +++ /dev/null @@ -1,207 +0,0 @@ -/* -Copyright Barrett Adair 2016-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_DEFAULT_BOOST_CLBL_TRTS_HPP -#define BOOST_CLBL_TRTS_DETAIL_DEFAULT_BOOST_CLBL_TRTS_HPP - -namespace boost { namespace callable_traits { namespace detail { - -template -struct default_callable_traits { - - // value is used by all traits classes to participate - // in the disjunction. - static constexpr bool value = false; - - // used facilitate the disjunction in - // - using traits = default_callable_traits; - - using error_t = error_type; - - // represents the type under consideration - using type = error_t; - - // std::true_type for callables with C-style variadics - using has_varargs = std::false_type; - - using return_type = error_t; - - // arg_types is a std::tuple of argument types for - // callables that are not overloaded/templated function objects. - // arg_types IS defined in terms of INVOKE, which means - // a PMF's arg_types tuple will use a reference to its - // parent class as the first argument, with qualifiers added to - // match the PMF's own qualifiers. - using arg_types = error_t; - - // arg_types without the decltype(*this) parameter for member functions - using non_invoke_arg_types = error_t; - - // An "approximation" of a callable type, in the form - // of a plain function type. Defined in terms of INVOKE. - // An identity alias for qualified/unqualified plain function - // types. - using function_type = error_t; - - // Used to smoothen the edges between PMFs and function objects - using function_object_signature = error_t; - - // An identity alias for qualified/unqualified plain function - // types. Equivalent to remove_member_pointer for PMFs. Same - // as function_type for other callable types. - using qualified_function_type = error_t; - - // Removes C-style variadics from a signature, if present. - // Aliases error_t for function objects and PMDs. - using remove_varargs = error_t; - - // Adds C-style variadics to a signature. Aliases - // error_t for function objects and PMDs. - using add_varargs = error_t; - - // std::true_type when the signature includes noexcept, when - // the feature is available - using is_noexcept = std::false_type; - - // adds noexcept to a signature if the feature is available - using add_noexcept = error_t; - - // removes noexcept from a signature if present - using remove_noexcept = error_t; - - // std::true_type when the signature includes transaction_safe, when - // the feature is available - using is_transaction_safe = std::false_type; - - // adds transaction_safe to a signature if the feature is available - using add_transaction_safe = error_t; - - // removes transaction_safe from a signature if present - using remove_transaction_safe = error_t; - - // The class of a PMD or PMF. error_t for other types - using class_type = error_t; - - // The qualified reference type of class_type. error_t - // for non-member-pointers. - using invoke_type = error_t; - - // Removes reference qualifiers from a signature. - using remove_reference = error_t; - - // Adds an lvalue qualifier to a signature, in arbitrary - // accordance with C++11 reference collapsing rules. - using add_member_lvalue_reference = error_t; - - // Adds an rvalue qualifier to a signature, in arbitrary - // accordance with C++11 reference collapsing rules. - using add_member_rvalue_reference = error_t; - - // Adds a const qualifier to a signature. - using add_member_const = error_t; - - // Adds a volatile qualifier to a signature. - using add_member_volatile = error_t; - - // Adds both const and volatile qualifiers to a signature. - using add_member_cv = error_t; - - // Removes a const qualifier from a signature, if present. - using remove_member_const = error_t; - - // Removes a volatile qualifier from a signature, if present. - using remove_member_volatile = error_t; - - // Removes both const and volatile qualifiers from a - // signature, if any. - using remove_member_cv = error_t; - - // Removes the member pointer from PMDs and PMFs. An identity - // alias for other callable types. - using remove_member_pointer = error_t; - - // Changes the parent class type for PMDs and PMFs. Turns - // function pointers, function references, and - // qualified/unqualified function types into PMFs. Turns - // everything else into member data pointers. - template::type, - typename L = typename std::conditional< - std::is_same::value, error_t, K>::type, - typename Class = typename std::conditional< - std::is_class::value, C, error_t>::type> - using apply_member_pointer = typename std::conditional< - std::is_same::value || std::is_same::value, - error_t, L Class::*>::type; - - // Changes the return type of PMFs, function pointers, function - // references, and qualified/unqualified function types. Changes - // the data type of PMDs. error_t for function objects. - template - using apply_return = error_t; - - // Expands the argument types into a template - template class Container> - using expand_args = error_t; - - template class Container, typename... RightArgs> - using expand_args_left = error_t; - - template class Container, typename... LeftArgs> - using expand_args_right = error_t; - - using clear_args = error_t; - - template - using push_front = error_t; - - template - using push_back = error_t; - - template - using pop_front = error_t; - - template - using pop_back = error_t; - - template - using insert_args = error_t; - - template - using remove_args = error_t; - - template - using replace_args = error_t; - - static constexpr qualifier_flags cv_flags = cv_of::value; - static constexpr qualifier_flags ref_flags = ref_of::value; - static constexpr qualifier_flags q_flags = cv_flags | ref_flags; - - using has_member_qualifiers = std::integral_constant; - using is_const_member = std::integral_constant; - using is_volatile_member = std::integral_constant; - using is_cv_member = std::integral_constant; - -#ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - using is_reference_member = std::false_type; - using is_lvalue_reference_member = std::false_type; - using is_rvalue_reference_member = std::false_type; -#else - using is_reference_member = std::integral_constant; - using is_lvalue_reference_member = std::integral_constant; - using is_rvalue_reference_member = std::integral_constant; -#endif //#ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - -}; - -}}} // namespace boost::callable_traits::detail - -#endif // BOOST_CLBL_TRTS_DETAIL_DEFAULT_BOOST_CLBL_TRTS_HPP - diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/forward_declarations.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/forward_declarations.hpp deleted file mode 100644 index 9327759f6..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/forward_declarations.hpp +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef BOOST_CLBL_TRTS_DETAIL_FORWARD_DECLARATIONS -#define BOOST_CLBL_TRTS_DETAIL_FORWARD_DECLARATIONS -#include -#include - -namespace boost { namespace callable_traits { namespace detail { - -template -struct function; - -template -struct has_normal_call_operator -{ - template - struct check { check(std::nullptr_t) {} }; - - template - static std::int8_t test( - check); - - template - static std::int16_t test(...); - - static constexpr bool value = - sizeof(test(nullptr)) == sizeof(std::int8_t); -}; - -struct callable_dummy { - void operator()() {} -}; - -template -using default_to_function_object = typename std::conditional< - has_normal_call_operator::value, - T, callable_dummy>::type; - -template -struct pmf; - -template -struct pmd; - -template::type> -using function_object_base = typename std::conditional< - has_normal_call_operator::value, - pmf::operator())>, - default_callable_traits>::type; - -template> -struct function_object; - -}}} // namespace boost::callable_traits::detail - -#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_FORWARD_DECLARATIONS diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/function.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/function.hpp deleted file mode 100644 index 624c704d2..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/function.hpp +++ /dev/null @@ -1,192 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_FUNCTION_HPP -#define BOOST_CLBL_TRTS_DETAIL_FUNCTION_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace callable_traits { namespace detail { - -template -struct function : default_callable_traits {}; - -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#ifndef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - -#endif // #ifndef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS -#endif // #ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - -// function pointers - -#define BOOST_CLBL_TRTS_CC_TAG dummy -#define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC -#define BOOST_CLBL_TRTS_CC -#define BOOST_CLBL_TRTS_ST -#include -#include -#undef BOOST_CLBL_TRTS_ST -#undef BOOST_CLBL_TRTS_CC -#undef BOOST_CLBL_TRTS_CC_TAG -#undef BOOST_CLBL_TRTS_VARARGS_CC - -/* ? -#ifdef BOOST_CLBL_TRTS_ENABLE_CDECL -#define BOOST_CLBL_TRTS_CC_TAG cdecl_tag -#define BOOST_CLBL_TRTS_VARARGS_CC __cdecl -#define BOOST_CLBL_TRTS_CC __cdecl -#define BOOST_CLBL_TRTS_ST -#include -#undef BOOST_CLBL_TRTS_ST -#undef BOOST_CLBL_TRTS_CC -#undef BOOST_CLBL_TRTS_CC_TAG -#undef BOOST_CLBL_TRTS_VARARGS_CC -#endif*/ - -#ifdef BOOST_CLBL_TRTS_ENABLE_STDCALL -#define BOOST_CLBL_TRTS_CC_TAG stdcall_tag -#define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC -#define BOOST_CLBL_TRTS_CC __stdcall -#define BOOST_CLBL_TRTS_ST -#include -#undef BOOST_CLBL_TRTS_ST -#undef BOOST_CLBL_TRTS_CC -#undef BOOST_CLBL_TRTS_CC_TAG -#undef BOOST_CLBL_TRTS_VARARGS_CC -#endif - -#ifdef BOOST_CLBL_TRTS_ENABLE_FASTCALL -#define BOOST_CLBL_TRTS_CC_TAG fastcall_tag -#define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC -#define BOOST_CLBL_TRTS_CC __fastcall -#define BOOST_CLBL_TRTS_ST -#include -#undef BOOST_CLBL_TRTS_CC -#undef BOOST_CLBL_TRTS_ST -#undef BOOST_CLBL_TRTS_CC_TAG -#undef BOOST_CLBL_TRTS_VARARGS_CC -#endif - -#ifdef BOOST_CLBL_TRTS_ENABLE_PASCAL -#define BOOST_CLBL_TRTS_CC_TAG pascal_tag -#define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC -#define BOOST_CLBL_TRTS_CC -#define BOOST_CLBL_TRTS_ST pascal -#include -#undef BOOST_CLBL_TRTS_CC -#undef BOOST_CLBL_TRTS_ST -#undef BOOST_CLBL_TRTS_CC_TAG -#undef BOOST_CLBL_TRTS_VARARGS_CC -#endif - -template -struct function : std::conditional::value, - function, default_callable_traits>::type { - - static constexpr const bool value = !std::is_pointer::value; - - using traits = function; - using base = function; - using type = T&; - using remove_varargs = typename base::remove_varargs&; - using add_varargs = typename base::add_varargs&; - - using remove_member_reference = reference_error; - using add_member_lvalue_reference = reference_error; - using add_member_rvalue_reference = reference_error; - using add_member_const = reference_error; - using add_member_volatile = reference_error; - using add_member_cv = reference_error; - using remove_member_const = reference_error; - using remove_member_volatile = reference_error; - using remove_member_cv = reference_error; - - template - using apply_return = typename base::template apply_return&; - - using clear_args = typename base::clear_args&; - - template - using push_front = typename base::template push_front&; - - template - using push_back = typename base::template push_back&; - - template - using pop_back = typename base::template pop_back&; - - template - using pop_front = typename base::template pop_front&; - - template - using insert_args = typename base::template insert_args&; - - template - using remove_args = typename base::template remove_args&; - - template - using replace_args = typename base::template replace_args&; -}; - -}}} // namespace boost::callable_traits::detail - -#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_FUNCTION_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/function_object.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/function_object.hpp deleted file mode 100644 index d12fc00e6..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/function_object.hpp +++ /dev/null @@ -1,107 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_FUNCTION_OBJECT_HPP -#define BOOST_CLBL_TRTS_DETAIL_FUNCTION_OBJECT_HPP - -#include -#include -#include -#include - -namespace boost { namespace callable_traits { namespace detail { - -template -struct function_object : Base { - - using type = T; - using error_t = error_type; - using function_type = typename Base::function_object_signature; - using arg_types = typename Base::non_invoke_arg_types; - using non_invoke_arg_types = arg_types; - - static constexpr const bool value = std::is_class< - typename std::remove_reference::type>::value; - - using traits = function_object; - using class_type = error_t; - using invoke_type = error_t; - using remove_varargs = error_t; - using add_varargs = error_t; - using is_noexcept = typename Base::is_noexcept; - using add_noexcept = error_t; - using remove_noexcept = error_t; - using is_transaction_safe = typename Base::is_transaction_safe; - using add_transaction_safe = error_t; - using remove_transaction_safe = error_t; - using clear_args = error_t; - - template class Container> - using expand_args = typename function::template - expand_args; - - template class Container, typename... RightArgs> - using expand_args_left = typename function::template - expand_args_left; - - template class Container, typename... LeftArgs> - using expand_args_right = typename function::template - expand_args_right; - - template - using apply_member_pointer = - typename std::remove_reference::type C::*; - - template - using apply_return = error_t; - - template - using push_front = error_t; - - template - using push_back = error_t; - - template - using pop_args_front = error_t; - - template - using pop_args_back = error_t; - - template - using insert_args = error_t; - - template - using remove_args = error_t; - - template - using replace_args = error_t; - - template - using pop_front = error_t; - - template - using pop_back = error_t; - - using remove_member_reference = error_t; - using add_member_lvalue_reference = error_t; - using add_member_rvalue_reference = error_t; - using add_member_const = error_t; - using add_member_volatile = error_t; - using add_member_cv = error_t; - using remove_member_const = error_t; - using remove_member_volatile = error_t; - using remove_member_cv = error_t; -}; - -template -struct function_object - : default_callable_traits<> {}; - -}}} // namespace boost::callable_traits::detail - -#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_FUNCTION_OBJECT_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/is_invocable_impl.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/is_invocable_impl.hpp deleted file mode 100644 index 323886572..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/is_invocable_impl.hpp +++ /dev/null @@ -1,148 +0,0 @@ - /*! -@file - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_IS_INVOCABLE_IMPL_HPP -#define BOOST_CLBL_TRTS_IS_INVOCABLE_IMPL_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace callable_traits { namespace detail { - - template - struct can_dereference_t - { - template - struct check {}; - - template - static std::int8_t test( - check())>::type>* - ); - - template - static std::int16_t test(...); - - static constexpr const bool value = - sizeof(test(nullptr)) == sizeof(std::int8_t); - }; - - //returns std::true_type for pointers and smart pointers - template - using can_dereference = std::integral_constant::value>; - - - template - struct generalize_t { - using type = T; - }; - - template - struct generalize_t::value && !is_reference_wrapper::value - >>{ - using type = decltype(*std::declval()); - }; - - template - struct generalize_t> { - using type = decltype(std::declval().get()); - }; - - // When T is a pointer, generalize is the resulting type of the - // pointer dereferenced. When T is an std::reference_wrapper, generalize - // is the underlying reference type. Otherwise, generalize is T. - template - using generalize = typename generalize_t::type; - - // handles the member pointer rules of INVOKE - template>, - typename IsSame = std::is_same>> - using generalize_if_dissimilar = typename std::conditional< - IsBaseOf::value || IsSame::value, T, generalize>::type; - - template - struct test_invoke { - - template - auto operator()(Rgs&&... rgs) const -> - success()(static_cast(rgs)...))>; - - auto operator()(...) const -> substitution_failure; - }; - - template - struct test_invoke, true /*abominable*/> { - auto operator()(...) const -> substitution_failure; - }; - - template - struct test_invoke, Ignored> { - - using class_t = typename pmf::class_type; - - template> - auto operator()(U&& u, Rgs&&... rgs) const -> - success().*std::declval())(static_cast(rgs)...))>; - - auto operator()(...) const -> substitution_failure; - }; - - template - struct test_invoke, Ignored> { - - using class_t = typename pmd::class_type; - - template> - auto operator()(U&& u) const -> - success().*std::declval())>; - - auto operator()(...) const -> substitution_failure; - }; - - template - struct is_invocable_impl { - using traits = detail::traits; - using test = detail::test_invoke; - using result = decltype(test{}(::std::declval()...)); - using type = std::integral_constant; - }; - - template - struct is_invocable_impl { - using type = std::false_type; - }; - - template - struct is_invocable_r_impl { - using traits = detail::traits; - using test = detail::test_invoke; - using result = decltype(test{}(::std::declval()...)); - using type = typename std::is_convertible::type; - }; - - template - struct is_invocable_r_impl { - using type = std::false_type; - }; - -}}} // namespace boost::callable_traits::detail - -#endif // #ifndef BOOST_CLBL_TRTS_IS_INVOCABLE_IMPL_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/parameter_index_helper.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/parameter_index_helper.hpp deleted file mode 100644 index 430217591..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/parameter_index_helper.hpp +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef BOOST_CLBL_TRTS_PARAMETER_INDEX_HELPER_HPP -#define BOOST_CLBL_TRTS_PARAMETER_INDEX_HELPER_HPP - -#include - -namespace boost { namespace callable_traits { namespace detail { - -template -struct parameter_index_helper { - - using error_t = error_type; - - using args_tuple = typename std::conditional::non_invoke_arg_types, - typename detail::traits::arg_types>::type; - - static constexpr bool has_parameter_list = - !std::is_same::value - && !std::is_same::value; - - using temp_tuple = typename std::conditional>::type; - - static constexpr std::size_t parameter_list_size = - std::tuple_size::value; - - static constexpr bool is_out_of_range = has_parameter_list && - I >= parameter_list_size + static_cast(AllowPlus1); - - static constexpr bool is_count_out_of_range = has_parameter_list && - I + Count > parameter_list_size + static_cast(AllowPlus1); - - static constexpr std::size_t index = - has_parameter_list && !is_out_of_range ? I : 0; - - static constexpr std::size_t count = - has_parameter_list && !is_count_out_of_range ? Count : 0; - - using permissive_tuple = typename std::conditional< - has_parameter_list && !is_out_of_range, - args_tuple, std::tuple>::type; - - using permissive_function = typename std::conditional< - has_parameter_list && !is_out_of_range, - T, error_t(error_t)>::type; -}; - -}}} // namespace boost::callable_traits::detail - -#endif // #ifndef BOOST_CLBL_TRTS_PARAMETER_INDEX_HELPER_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/pmd.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/pmd.hpp deleted file mode 100644 index 13a2c4463..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/pmd.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_PMD_HPP -#define BOOST_CLBL_TRTS_DETAIL_PMD_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace callable_traits { namespace detail { - -template -struct pmd : default_callable_traits {}; - -template -struct pmd : default_callable_traits<> { - - static constexpr bool value = true; - - using traits = pmd; - using class_type = T; - using invoke_type = T const &; - using type = D T::*; - using function_type = typename std::add_lvalue_reference::type(invoke_type); - using qualified_function_type = D(invoke_type); - using arg_types = std::tuple; - using non_invoke_arg_types = std::tuple<>; - - using return_type = typename std::add_lvalue_reference::type; - - template - using apply_member_pointer = D C::*; - - template - using apply_return = R T::*; - - template class Container> - using expand_args = Container; - - using is_member_pointer = std::true_type; -}; - -}}} // namespace boost::callable_traits::detail - -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/pmf.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/pmf.hpp deleted file mode 100644 index 5284e0d59..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/pmf.hpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_PMF_HPP -#define BOOST_CLBL_TRTS_DETAIL_PMF_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace callable_traits { namespace detail { - -template -struct set_member_function_qualifiers_t; - -template -struct set_varargs_member_function_qualifiers_t; - -template -using set_member_function_qualifiers = - typename set_member_function_qualifiers_t::type; - -template -using set_varargs_member_function_qualifiers = - typename set_varargs_member_function_qualifiers_t::type; - -template -struct pmf : default_callable_traits {}; - -#define BOOST_CLBL_TRTS_CC_TAG dummy -#define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC -#define BOOST_CLBL_TRTS_CC -#include -#undef BOOST_CLBL_TRTS_CC -#undef BOOST_CLBL_TRTS_CC_TAG -#undef BOOST_CLBL_TRTS_VARARGS_CC - -#define BOOST_CLBL_TRTS_CC_TAG dummy -#define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC -#define BOOST_CLBL_TRTS_CC -#include -#undef BOOST_CLBL_TRTS_CC -#undef BOOST_CLBL_TRTS_CC_TAG -#undef BOOST_CLBL_TRTS_VARARGS_CC - -#ifdef BOOST_CLBL_TRTS_ENABLE_CDECL -#define BOOST_CLBL_TRTS_CC_TAG cdecl_tag -#define BOOST_CLBL_TRTS_VARARGS_CC __cdecl -#define BOOST_CLBL_TRTS_CC __cdecl -#include -#undef BOOST_CLBL_TRTS_CC -#undef BOOST_CLBL_TRTS_CC_TAG -#undef BOOST_CLBL_TRTS_VARARGS_CC -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_CDECL - -// Defining this macro enables undocumented features, likely broken. -// Too much work to maintain, but knock yourself out -#ifdef BOOST_CLBL_TRTS_ENABLE_STDCALL -#define BOOST_CLBL_TRTS_CC_TAG stdcall_tag -#define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC -#define BOOST_CLBL_TRTS_CC __stdcall -#include -#undef BOOST_CLBL_TRTS_CC -#undef BOOST_CLBL_TRTS_CC_TAG -#undef BOOST_CLBL_TRTS_VARARGS_CC -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_STDCALL - -// Defining this macro enables undocumented features, likely broken. -// Too much work to officially maintain, but knock yourself out -#ifdef BOOST_CLBL_TRTS_ENABLE_FASTCALL -#define BOOST_CLBL_TRTS_CC_TAG fastcall_tag -#define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC -#define BOOST_CLBL_TRTS_CC __fastcall -#include -#undef BOOST_CLBL_TRTS_CC -#undef BOOST_CLBL_TRTS_CC_TAG -#undef BOOST_CLBL_TRTS_VARARGS_CC -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_FASTCALL - -}}} // namespace boost::callable_traits::detail - -#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_PMF_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/polyfills/disjunction.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/polyfills/disjunction.hpp deleted file mode 100644 index dc4f65c7c..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/polyfills/disjunction.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright Barrett Adair 2015-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_POLYFILLS_DISJUNCTION_HPP -#define BOOST_CLBL_TRTS_DETAIL_POLYFILLS_DISJUNCTION_HPP - -#undef BOOST_CLBL_TRTS_DISJUNCTION -#define BOOST_CLBL_TRTS_DISJUNCTION(...) \ - ::boost::callable_traits::detail::disjunction<__VA_ARGS__> - -namespace boost { namespace callable_traits { namespace detail { - -//polyfill for C++17 std::disjunction -template -struct disjunction : std::false_type {}; - -template -struct disjunction : T {}; - -template -struct disjunction - : std::conditional>::type {}; - -}}} // namespace boost::callable_traits::detail - -#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_POLYFILLS_DISJUNCTION_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/polyfills/make_index_sequence.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/polyfills/make_index_sequence.hpp deleted file mode 100644 index a4a6e820c..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/polyfills/make_index_sequence.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/* -Copyright Barrett Adair 2016-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_POLYFILLS_MAKE_INDEX_SEQUENCE_HPP -#define BOOST_CLBL_TRTS_DETAIL_POLYFILLS_MAKE_INDEX_SEQUENCE_HPP - -#undef BOOST_CLBL_TRTS_IX_SEQ -#define BOOST_CLBL_TRTS_IX_SEQ(...) \ - ::boost::callable_traits::detail::index_sequence<__VA_ARGS__> - -#undef BOOST_CLBL_TRTS_MAKE_IX_SEQ -#define BOOST_CLBL_TRTS_MAKE_IX_SEQ(...) \ - ::boost::callable_traits::detail::make_index_sequence<__VA_ARGS__> - -namespace boost { namespace callable_traits { namespace detail { - -template -struct index_sequence { using type = index_sequence; }; - -template -struct concat; - -template -struct concat, index_sequence> - : index_sequence {}; - -template - struct make_index_sequence_t; - -template -struct make_index_sequence_t : concat< - typename make_index_sequence_t::type, - typename make_index_sequence_t::type >::type {}; - -template<> -struct make_index_sequence_t<0> : index_sequence<> {}; - -template<> -struct make_index_sequence_t<1> : index_sequence<0> {}; - -template -using make_index_sequence = typename make_index_sequence_t::type; - -}}} // namespace boost::callable_traits::detail - -#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_POLYFILLS_MAKE_INDEX_SEQUENCE_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/qualifier_flags.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/qualifier_flags.hpp deleted file mode 100644 index f69d246c4..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/qualifier_flags.hpp +++ /dev/null @@ -1,123 +0,0 @@ -/* -Defines `qualifier_flags` - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_QUALIFIER_FLAGS_HPP -#define BOOST_CLBL_TRTS_QUALIFIER_FLAGS_HPP - -#include - -namespace boost { namespace callable_traits { namespace detail { - -//bit qualifier_flags used to signify cv/ref qualifiers -using qualifier_flags = std::uint32_t; - -/* - | && & V C | --------------------------------------------- -0 | 0 0 0 0 | default -1 | 0 0 0 1 | const -2 | 0 0 1 0 | volatile -3 | 0 0 1 1 | const volatile --------------------------------------------- -4 | 0 1 0 0 | & -5 | 0 1 0 1 | const & -6 | 0 1 1 0 | volatile & -7 | 0 1 1 1 | const volatile & --------------------------------------------- -8 | 1 0 0 0 | && -9 | 1 0 0 1 | const && -10 | 1 0 1 0 | volatile && -11 | 1 0 1 1 | const volatile && - -*/ - -// Flag representing the default qualifiers on a type -// or member function overload. -constexpr qualifier_flags default_ = 0; - -// Flag representing a const qualifier on a type or -// member function overload. -constexpr qualifier_flags const_ = 1; - -// Flag representing a volatile qualifier on a type -// or member function overload. -constexpr qualifier_flags volatile_ = 2; - -#ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - -constexpr qualifier_flags lref_ = default_; -constexpr qualifier_flags rref_ = default_; -#else - -// Flag representing an lvalue reference type, or -// an lvalue-reference-qualified member function -// overload. -constexpr qualifier_flags lref_ = 4; - -// Flag representing an lvalue reference type, or -// an rvalue-reference-qualified member function -// overload. -constexpr qualifier_flags rref_ = 8; - -#endif //#ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - -constexpr qualifier_flags cv_ = 3; - -template -using remove_const_flag = std::integral_constant< - qualifier_flags, Flags & ~const_>; - -template -using is_const = std::integral_constant; - -template -using remove_volatile_flag = std::integral_constant< - qualifier_flags, Flags & ~volatile_>; - -template::type> -using cv_of = std::integral_constant::value ? const_ : default_) - | (std::is_volatile::value ? volatile_ : default_)>; - -template -using ref_of = std::integral_constant::value ? rref_ - : (std::is_lvalue_reference::value ? lref_ - : default_)>; - -//bit-flag implementation of C++11 reference collapsing rules -template -using collapse_flags = std::integral_constant; - -template struct flag_map { static constexpr qualifier_flags value = default_; }; -template struct flag_map { static constexpr qualifier_flags value = lref_; }; -template struct flag_map { static constexpr qualifier_flags value = rref_; }; -template struct flag_map { static constexpr qualifier_flags value = const_; }; -template struct flag_map { static constexpr qualifier_flags value = const_ | lref_; }; -template struct flag_map { static constexpr qualifier_flags value = const_ | rref_; }; -template struct flag_map { static constexpr qualifier_flags value = volatile_; }; -template struct flag_map { static constexpr qualifier_flags value = volatile_ | lref_; }; -template struct flag_map { static constexpr qualifier_flags value = volatile_ | rref_; }; -template struct flag_map { static constexpr qualifier_flags value = const_ | volatile_; }; -template struct flag_map { static constexpr qualifier_flags value = const_ | volatile_ | lref_; }; -template struct flag_map { static constexpr qualifier_flags value = const_ | volatile_ | rref_; }; - -}}} // namespace boost::callable_traits::detail - -#endif // #ifndef BOOST_CLBL_TRTS_QUALIFIER_FLAGS_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/set_function_qualifiers.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/set_function_qualifiers.hpp deleted file mode 100644 index 9dc7f405a..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/set_function_qualifiers.hpp +++ /dev/null @@ -1,120 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_SET_FUNCTION_QUALIFIERS_HPP -#define BOOST_CLBL_TRTS_DETAIL_SET_FUNCTION_QUALIFIERS_HPP - -#include - -#define BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(QUAL) \ -template \ -struct set_function_qualifiers_t < \ - flag_map::value, false, false, Return, Args...> { \ - using type = Return(Args...) QUAL; \ -}; \ - \ -template \ -struct set_function_qualifiers_t < \ - flag_map::value, true, false, Return, Args...> { \ - using type = Return(Args...) QUAL \ - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER; \ -}; \ - \ -template \ -struct set_function_qualifiers_t < \ - flag_map::value, false, true, Return, Args...> { \ - using type = Return(Args...) QUAL \ - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; \ -}; \ - \ -template \ -struct set_function_qualifiers_t < \ - flag_map::value, true, true, Return, Args...> { \ - using type = Return(Args...) QUAL \ - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER \ - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; \ -}; \ - \ -template \ -struct set_varargs_function_qualifiers_t < \ - flag_map::value, false, false, Return, Args...> { \ - using type = Return(Args..., ...) QUAL; \ -}; \ - \ -template \ -struct set_varargs_function_qualifiers_t < \ - flag_map::value, true, false, Return, Args...> { \ - using type = Return(Args..., ...) QUAL \ - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER; \ -}; \ - \ -template \ -struct set_varargs_function_qualifiers_t < \ - flag_map::value, false, true, Return, Args...> { \ - using type = Return(Args..., ...) QUAL \ - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; \ -}; \ - \ -template \ -struct set_varargs_function_qualifiers_t < \ - flag_map::value, true, true, Return, Args...> { \ - using type = Return(Args..., ...) QUAL \ - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER \ - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; \ -} \ -/**/ - -namespace boost { namespace callable_traits { namespace detail { - - template - struct set_function_qualifiers_t { - using type = Return(Args...); - }; - - template - struct set_varargs_function_qualifiers_t { - using type = Return(Args..., ...); - }; - -#ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - - BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(const); - BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(volatile); - BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(const volatile); - -#ifndef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - - BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(&); - BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(&&); - BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(const &); - BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(const &&); - BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(volatile &); - BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(volatile &&); - BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(const volatile &); - BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(const volatile &&); - -#endif // #ifndef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS -#endif // #ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - - template - using set_function_qualifiers = - typename set_function_qualifiers_t::type; - - template - using set_varargs_function_qualifiers = - typename set_varargs_function_qualifiers_t::type; - -}}} // namespace boost::callable_traits::detail - -#endif //BOOST_CLBL_TRTS_DETAIL_SET_FUNCTION_QUALIFIERS_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/sfinae_errors.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/sfinae_errors.hpp deleted file mode 100644 index 485d17259..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/sfinae_errors.hpp +++ /dev/null @@ -1,89 +0,0 @@ -/* -@Copyright Barrett Adair 2016-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_SFINAE_ERRORS_HPP -#define BOOST_CLBL_TRTS_SFINAE_ERRORS_HPP - -#include - -namespace boost { namespace callable_traits { namespace detail { - - struct sfinae_error{}; - - template - struct success { - static constexpr bool value = true; - struct _ { using type = T; }; - }; - - template - struct fail_if : T { - static_assert(std::is_base_of::value, - "incorrect usage of fail_if"); - - static constexpr bool value = B; - }; - - template - using sfinae_try = typename BOOST_CLBL_TRTS_DISJUNCTION( - FailIfs..., success)::_::type; - - template - struct fail { - using type = typename std::conditional::value, - FailMsg, FailMsg>::type::_::type; - }; - -}}} // namespace boost::callable_traits::detail - -#define BOOST_CLBL_TRTS_PP_CAT_(x, y) x ## y -#define BOOST_CLBL_TRTS_PP_CAT(x, y) BOOST_CLBL_TRTS_PP_CAT_(x, y) - -#define BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(origin) \ -namespace error { \ - template \ - struct origin : \ - ::boost::callable_traits::detail::sfinae_error \ - { struct _ {}; }; \ -} \ -/**/ - -#define BOOST_CLBL_TRTS_SFINAE_MSG(origin, name) \ -struct BOOST_CLBL_TRTS_PP_CAT(name, _ ){}; \ -struct name : error::origin< \ - BOOST_CLBL_TRTS_PP_CAT(name, _ )>{}; \ -/**/ - -namespace boost { namespace callable_traits { - - BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(parameters) - BOOST_CLBL_TRTS_SFINAE_MSG(parameters, index_out_of_range_for_parameter_list) - BOOST_CLBL_TRTS_SFINAE_MSG(parameters, cannot_determine_parameters_for_this_type) - - BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(varargs) - BOOST_CLBL_TRTS_SFINAE_MSG(varargs, varargs_are_illegal_for_this_type) - - BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(member_qualifiers) - BOOST_CLBL_TRTS_SFINAE_MSG(member_qualifiers, member_qualifiers_are_illegal_for_this_type) - BOOST_CLBL_TRTS_SFINAE_MSG(member_qualifiers, this_compiler_doesnt_support_abominable_function_types) - - BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(transaction_safe_) - BOOST_CLBL_TRTS_SFINAE_MSG(transaction_safe_, transaction_safe_is_not_supported_by_this_configuration) - - BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(expand_args) - BOOST_CLBL_TRTS_SFINAE_MSG(expand_args, cannot_expand_the_parameter_list_of_first_template_argument) - - BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(member_pointer_required) - BOOST_CLBL_TRTS_SFINAE_MSG(member_pointer_required, type_is_not_a_member_pointer) - - BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(reference_error) - BOOST_CLBL_TRTS_SFINAE_MSG(reference_error, reference_type_not_supported_by_this_metafunction) - -}} // namespace boost::callable_traits - -#endif // #ifndef BOOST_CLBL_TRTS_SFINAE_ERRORS_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/traits.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/traits.hpp deleted file mode 100644 index e5a587f0b..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/traits.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_TRAITS_HPP -#define BOOST_CLBL_TRTS_DETAIL_TRAITS_HPP - -#include -#include - -namespace boost { namespace callable_traits { namespace detail { - - // Here is where the magic happens - template - using traits = typename BOOST_CLBL_TRTS_DISJUNCTION( - function_object>, - function, - pmf, - pmd, - default_callable_traits - )::traits; - -}}} // namespace boost::callable_traits::detail - -#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_TRAITS_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function.hpp deleted file mode 100644 index a1d32e90a..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY -*/ - -#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::false_type -#include -#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - -#ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE -#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::true_type -#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE transaction_safe -#include -#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE \ No newline at end of file diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_2.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_2.hpp deleted file mode 100644 index 562b4e933..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_2.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY -*/ - -#define BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#define BOOST_CLBL_TRTS_IS_NOEXCEPT std::false_type -#include -#undef BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#undef BOOST_CLBL_TRTS_IS_NOEXCEPT - -#ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES -#define BOOST_CLBL_TRTS_NOEXCEPT_SPEC noexcept -#define BOOST_CLBL_TRTS_IS_NOEXCEPT std::true_type -#include -#undef BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#undef BOOST_CLBL_TRTS_IS_NOEXCEPT -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES \ No newline at end of file diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_3.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_3.hpp deleted file mode 100644 index 2c329c411..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_3.hpp +++ /dev/null @@ -1,260 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY - -macros used: - -BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - the function-level qualifiers for the - current inclusion (combinations of `const` `volatile` `&` `&&`, or nothing) - -BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - the transaction_safe specifier for - the current include (`transaction_safe` or nothing) - -BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - `std::true_type` or `std::false_type`, - tied on whether BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE is `transaction_safe` - -BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - `transaction_safe` when - BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE is enabled, otherwise nothing - -BOOST_CLBL_TRTS_NOEXCEPT_SPEC - the noexcept specifier for - the current include (`noexcept` or nothing) - -BOOST_CLBL_TRTS_IS_NOEXCEPT - `std::true_type` or `std::false_type`, - tied on whether BOOST_CLBL_TRTS_NOEXCEPT_SPEC is `noexcept` - -BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER - `noexcept` if - BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES is defined, otherwise nothing - -*/ - -template -struct function - : default_callable_traits { - - static constexpr bool value = true; - - using traits = function; - - using return_type = Return; - - using arg_types = std::tuple; - using non_invoke_arg_types = arg_types; - - using type = Return(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using function_type = Return(Args...); - - using qualified_function_type = Return(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using remove_varargs = type; - - using add_varargs = Return (Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using is_noexcept = BOOST_CLBL_TRTS_IS_NOEXCEPT; - - using remove_noexcept = Return(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE; - - using add_noexcept = Return(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; - - using is_transaction_safe = BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE; - - using remove_transaction_safe = Return(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using add_transaction_safe = Return(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using qualifiers = default_callable_traits; - - template - using set_qualifiers = set_function_qualifiers; - - #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - - using add_member_lvalue_reference = abominable_functions_not_supported_on_this_compiler; - using add_member_rvalue_reference = abominable_functions_not_supported_on_this_compiler; - using add_member_const = abominable_functions_not_supported_on_this_compiler; - using add_member_volatile = abominable_functions_not_supported_on_this_compiler; - using add_member_cv = abominable_functions_not_supported_on_this_compiler; - - #else - - using add_member_lvalue_reference = set_qualifiers< - collapse_flags::value>; - - using add_member_rvalue_reference = set_qualifiers< - collapse_flags::value>; - - using add_member_const = set_qualifiers; - - using add_member_volatile = set_qualifiers; - - using add_member_cv = set_qualifiers; - - #endif // #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - - using remove_member_reference = set_qualifiers; - - using remove_member_const = set_qualifiers< - qualifiers::ref_flags | remove_const_flag::value>; - - using remove_member_volatile = set_qualifiers< - qualifiers::ref_flags | remove_volatile_flag::value>; - - using remove_member_cv = set_qualifiers; - - template - using apply_member_pointer = add_member_pointer; - - template - using apply_return = NewReturn(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template class Container> - using expand_args = Container; - - using is_member_pointer = std::false_type; -}; - - -template -struct function - : default_callable_traits { - - static constexpr bool value = true; - - using has_varargs = std::true_type; - using traits = function; - using return_type = Return; - using arg_types = std::tuple; - - using type = Return (Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using function_type = Return(Args..., ...); - - using qualified_function_type = Return(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using remove_varargs = Return (Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using add_varargs = type; - - using is_noexcept = BOOST_CLBL_TRTS_IS_NOEXCEPT; - - using remove_noexcept = Return(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE; - - using add_noexcept = Return(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; - - using is_transaction_safe = BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE; - - using remove_transaction_safe = Return(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using add_transaction_safe = Return(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using qualifiers = default_callable_traits; - - template - using set_qualifiers = set_varargs_function_qualifiers; - - #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - - using add_member_lvalue_reference = abominable_functions_not_supported_on_this_compiler; - using add_member_rvalue_reference = abominable_functions_not_supported_on_this_compiler; - using add_member_const = abominable_functions_not_supported_on_this_compiler; - using add_member_volatile = abominable_functions_not_supported_on_this_compiler; - using add_member_cv = abominable_functions_not_supported_on_this_compiler; - - #else - - using add_member_lvalue_reference = set_qualifiers< - collapse_flags::value>; - - using add_member_rvalue_reference = set_qualifiers< - collapse_flags::value>; - - using add_member_const = set_qualifiers; - - using add_member_volatile = set_qualifiers; - - using add_member_cv = set_qualifiers; - - #endif // #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS - - using remove_member_reference = set_qualifiers; - - using remove_member_const = set_qualifiers< - qualifiers::ref_flags | remove_const_flag::value>; - - using remove_member_volatile = set_qualifiers< - qualifiers::ref_flags | remove_volatile_flag::value>; - - using remove_member_cv = set_qualifiers; - - template - using apply_member_pointer = - Return( BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC U::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template - using apply_return = NewReturn(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template class Container> - using expand_args = Container; - - using is_member_pointer = std::false_type; -}; diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr.hpp deleted file mode 100644 index 4aa8ad593..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr.hpp +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright (c) 2016 Modified Work Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY -*/ - -#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::false_type -#include - -#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - -#ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE -#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::true_type -#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE transaction_safe -#include -#endif - -#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_2.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_2.hpp deleted file mode 100644 index b54f2ed80..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_2.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY -*/ - -#define BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#define BOOST_CLBL_TRTS_IS_NOEXCEPT std::false_type -#include -#undef BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#undef BOOST_CLBL_TRTS_IS_NOEXCEPT - -#ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES -#define BOOST_CLBL_TRTS_NOEXCEPT_SPEC noexcept -#define BOOST_CLBL_TRTS_IS_NOEXCEPT std::true_type -#include -#undef BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#undef BOOST_CLBL_TRTS_IS_NOEXCEPT -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES \ No newline at end of file diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_3.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_3.hpp deleted file mode 100644 index e657b57ef..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_3.hpp +++ /dev/null @@ -1,94 +0,0 @@ -/* -Copyright (c) 2016 Modified Work Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY - -macros used: - -BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - the transaction_safe specifier for - the current include (`transaction_safe` or nothing) - -BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - `std::true_type` or `std::false_type`, - tied on whether BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE is `transaction_safe` - -BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - `transaction_safe` when - BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE is enabled, otherwise nothing - -BOOST_CLBL_TRTS_NOEXCEPT_SPEC - the noexcept specifier for - the current include (`noexcept` or nothing) - -BOOST_CLBL_TRTS_IS_NOEXCEPT - `std::true_type` or `std::false_type`, - tied on whether BOOST_CLBL_TRTS_NOEXCEPT_SPEC is `noexcept` - -BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER - `noexcept` if - BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES is defined, otherwise nothing -*/ - -template -struct function< - BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC> - : default_callable_traits<> { - - static constexpr bool value = true; - - using traits = function; - - using return_type = Return; - - using arg_types = std::tuple; - using non_invoke_arg_types = arg_types; - - using type = BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE; - - using function_type = Return(Args...); - using qualified_function_type = function_type; - using remove_varargs = type; - - using add_varargs = - BOOST_CLBL_TRTS_ST Return (BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using is_noexcept = BOOST_CLBL_TRTS_IS_NOEXCEPT; - - using remove_noexcept = Return(BOOST_CLBL_TRTS_CC *)(Args...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE; - - using add_noexcept = Return(BOOST_CLBL_TRTS_CC *)(Args...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; - - using is_transaction_safe = BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE; - - using remove_transaction_safe = Return(BOOST_CLBL_TRTS_CC *)(Args...) - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using add_transaction_safe = Return(BOOST_CLBL_TRTS_CC *)(Args...) - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template - using apply_member_pointer = - BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC U::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template - using apply_return = - BOOST_CLBL_TRTS_ST NewReturn(BOOST_CLBL_TRTS_CC *)(Args...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template class Container> - using expand_args = Container; - - using is_member_pointer = std::false_type; -}; - diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_varargs.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_varargs.hpp deleted file mode 100644 index 625f0d62e..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_varargs.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright (c) 2016 Modified Work Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY -*/ - -#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::false_type -#include -#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - -#ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE -#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::true_type -#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE transaction_safe -#include -#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE \ No newline at end of file diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_varargs_2.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_varargs_2.hpp deleted file mode 100644 index 9ed68fc13..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_varargs_2.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY -*/ - -#define BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#define BOOST_CLBL_TRTS_IS_NOEXCEPT std::false_type -#include -#undef BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#undef BOOST_CLBL_TRTS_IS_NOEXCEPT - -#ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES -#define BOOST_CLBL_TRTS_NOEXCEPT_SPEC noexcept -#define BOOST_CLBL_TRTS_IS_NOEXCEPT std::true_type -#include -#undef BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#undef BOOST_CLBL_TRTS_IS_NOEXCEPT -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES \ No newline at end of file diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_varargs_3.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_varargs_3.hpp deleted file mode 100644 index 42e22931a..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/function_ptr_varargs_3.hpp +++ /dev/null @@ -1,98 +0,0 @@ -/* -Copyright (c) 2016 Modified Work Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY - -macros used: - -BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - the transaction_safe specifier for - the current include (`transaction_safe` or nothing) - -BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - `std::true_type` or `std::false_type`, - tied on whether BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE is `transaction_safe` - -BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - `transaction_safe` when - BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE is enabled, otherwise nothing - -BOOST_CLBL_TRTS_NOEXCEPT_SPEC - the noexcept specifier for - the current include (`noexcept` or nothing) - -BOOST_CLBL_TRTS_IS_NOEXCEPT - `std::true_type` or `std::false_type`, - tied on whether BOOST_CLBL_TRTS_NOEXCEPT_SPEC is `noexcept` - -BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER - `noexcept` if - BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES is defined, otherwise nothing -*/ - -template -struct function - : default_callable_traits<> { - - static constexpr bool value = true; - - using has_varargs = std::true_type; - - using traits = function; - - using return_type = Return; - - using arg_types = std::tuple; - using non_invoke_arg_types = arg_types; - - using type = - BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using function_type = Return(Args..., ...); - - using qualified_function_type = function_type; - - using remove_varargs = - BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE; - - using add_varargs = type; - - using is_noexcept = BOOST_CLBL_TRTS_IS_NOEXCEPT; - - using remove_noexcept = BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE; - - using add_noexcept = BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_CC *)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; - - using is_transaction_safe = BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE; - - using remove_transaction_safe = Return(BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...) - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using add_transaction_safe = Return(BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...) - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template - using apply_member_pointer = - BOOST_CLBL_TRTS_ST Return(BOOST_CLBL_TRTS_VARARGS_CC U::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template - using apply_return = - BOOST_CLBL_TRTS_ST NewReturn(BOOST_CLBL_TRTS_VARARGS_CC *)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template class Container> - using expand_args = Container; - - using is_member_pointer = std::false_type; -}; - diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf.hpp deleted file mode 100644 index de9e7a34a..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf.hpp +++ /dev/null @@ -1,94 +0,0 @@ -/* -Copyright (c) 2001 Peter Dimov and Multi Media Ltd. -Copyright (c) 2016 Modified Work Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY - -*/ - -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS \ - BOOST_CLBL_TRTS_ABOMINABLE_CONST -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS \ - BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS \ - BOOST_CLBL_TRTS_ABOMINABLE_CONST BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#ifndef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS & -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS && -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const & -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS const & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile & -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS volatile & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile & -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS const volatile & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const && -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS const && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile && -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS volatile && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile && -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS const volatile && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#endif // #ifndef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_2.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_2.hpp deleted file mode 100644 index e3568fb14..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_2.hpp +++ /dev/null @@ -1,74 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY - -*/ - -template -struct set_member_function_qualifiers_t< - flag_map::value, - false, // IsTransactionSafe - false, // IsNoexcept - BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> { - - using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS; -}; - -template -struct set_member_function_qualifiers_t< - flag_map::value, - false, - true, - BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> { - - using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; -}; - -template -struct set_member_function_qualifiers_t< - flag_map::value, - true, - false, - BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> { - - using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER; -}; - -template -struct set_member_function_qualifiers_t< - flag_map::value, - true, - true, - BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> { - - using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; -}; - -#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::false_type -#include -#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - -#ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE - -#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::true_type -#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE transaction_safe -#include -#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_3.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_3.hpp deleted file mode 100644 index 62b34f2bc..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_3.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY -*/ - -#define BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#define BOOST_CLBL_TRTS_IS_NOEXCEPT std::false_type -#include -#undef BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#undef BOOST_CLBL_TRTS_IS_NOEXCEPT - -#ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES -#define BOOST_CLBL_TRTS_NOEXCEPT_SPEC noexcept -#define BOOST_CLBL_TRTS_IS_NOEXCEPT std::true_type -#include -#undef BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#undef BOOST_CLBL_TRTS_IS_NOEXCEPT -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES \ No newline at end of file diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_4.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_4.hpp deleted file mode 100644 index 5a1f48ce2..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_4.hpp +++ /dev/null @@ -1,147 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY - -BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - the function-level qualifiers for the - current inclusion (combinations of `const` `volatile` `&` `&&`, or nothing) - -BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - the transaction_safe specifier for - the current include (`transaction_safe` or nothing) - -BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - `std::true_type` or `std::false_type`, - tied on whether BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE is `transaction_safe` - -BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - `transaction_safe` when - BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE is defined, otherwise nothing - -BOOST_CLBL_TRTS_NOEXCEPT_SPEC - the noexcept specifier for - the current include (`noexcept` or nothing) - -BOOST_CLBL_TRTS_IS_NOEXCEPT - `std::true_type` or `std::false_type`, - tied on whether BOOST_CLBL_TRTS_NOEXCEPT_SPEC is `noexcept` - -BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER - `noexcept` if - BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES is defined, otherwise nothing -*/ - -template -struct pmf - : default_callable_traits { - - static constexpr bool value = true; - - using traits = pmf; - - using return_type = Return; - - using type = Return(BOOST_CLBL_TRTS_CC T::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using invoke_type = typename std::conditional< - std::is_rvalue_reference::value, - T BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS, - typename std::add_lvalue_reference::type - >::type; - - using arg_types = std::tuple; - using non_invoke_arg_types = std::tuple; - - using function_object_signature = Return(Args...); - - using function_type = Return(invoke_type, Args...); - - using qualified_function_type = Return(Args...) - BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using remove_varargs = type; - - using add_varargs = - Return(BOOST_CLBL_TRTS_VARARGS_CC T::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using is_noexcept = BOOST_CLBL_TRTS_IS_NOEXCEPT; - - using remove_noexcept = Return(BOOST_CLBL_TRTS_CC T::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE; - - using add_noexcept = Return(BOOST_CLBL_TRTS_CC T::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; - - using is_transaction_safe = BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE; - - using remove_transaction_safe = Return(BOOST_CLBL_TRTS_CC T::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using add_transaction_safe = Return(BOOST_CLBL_TRTS_CC T::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using class_type = T; - - using qualifiers = default_callable_traits; - - template - using set_qualifiers = set_member_function_qualifiers< - Flags, is_transaction_safe::value, is_noexcept::value, - BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...>; - - using remove_member_reference = set_qualifiers; - - using add_member_lvalue_reference = set_qualifiers< - collapse_flags::value>; - - using add_member_rvalue_reference = set_qualifiers< - collapse_flags::value>; - - using add_member_const = set_qualifiers; - - using add_member_volatile = set_qualifiers; - - using add_member_cv = set_qualifiers; - - using remove_member_const = set_qualifiers< - qualifiers::ref_flags | remove_const_flag::value>; - - using remove_member_volatile = set_qualifiers< - qualifiers::ref_flags | remove_volatile_flag::value>; - - using remove_member_cv = set_qualifiers; - - template - using apply_member_pointer = - Return(BOOST_CLBL_TRTS_CC U::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template - using apply_return = - NewReturn(BOOST_CLBL_TRTS_CC T::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template class Container> - using expand_args = Container; - - using is_member_pointer = std::true_type; -}; diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs.hpp deleted file mode 100644 index bd40f2bdf..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs.hpp +++ /dev/null @@ -1,89 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY - -*/ - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS \ - BOOST_CLBL_TRTS_ABOMINABLE_CONST -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS \ - BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS \ - BOOST_CLBL_TRTS_ABOMINABLE_CONST BOOST_CLBL_TRTS_ABOMINABLE_VOLATILE -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#ifndef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS & -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS && -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const & -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS const & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile & -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS volatile & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile & -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS const volatile & -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const && -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS const && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile && -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS volatile && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile && -#define BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS const volatile && -#include -#undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS -#undef BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - -#endif // #ifndef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS \ No newline at end of file diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs_2.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs_2.hpp deleted file mode 100644 index 5de066819..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs_2.hpp +++ /dev/null @@ -1,78 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY - -*/ - -template -struct set_varargs_member_function_qualifiers_t < - flag_map::value, - false, // IsTransactionSafe - false, // IsNoexcept - BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> { - - using type = - Return(BOOST_CLBL_TRTS_VARARGS_CC T::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS; -}; - -template -struct set_varargs_member_function_qualifiers_t < - flag_map::value, - false, - true, - BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> { - - using type = - Return(BOOST_CLBL_TRTS_VARARGS_CC T::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; -}; - -template -struct set_varargs_member_function_qualifiers_t < - flag_map::value, - true, - false, - BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> { - - using type = - Return(BOOST_CLBL_TRTS_VARARGS_CC T::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER; -}; - -template -struct set_varargs_member_function_qualifiers_t < - flag_map::value, - true, - true, - BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...> { - - using type = - Return(BOOST_CLBL_TRTS_VARARGS_CC T::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; -}; - -#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::false_type -#include - -#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - -#ifdef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE - -#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE std::true_type -#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE transaction_safe -#include -#endif - -#undef BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE -#undef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs_3.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs_3.hpp deleted file mode 100644 index 905a5a6d9..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs_3.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY -*/ - -#define BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#define BOOST_CLBL_TRTS_IS_NOEXCEPT std::false_type -#include -#undef BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#undef BOOST_CLBL_TRTS_IS_NOEXCEPT - -#ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES -#define BOOST_CLBL_TRTS_NOEXCEPT_SPEC noexcept -#define BOOST_CLBL_TRTS_IS_NOEXCEPT std::true_type -#include -#undef BOOST_CLBL_TRTS_NOEXCEPT_SPEC -#undef BOOST_CLBL_TRTS_IS_NOEXCEPT -#endif // #ifdef BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES \ No newline at end of file diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs_4.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs_4.hpp deleted file mode 100644 index ca33ebf96..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/unguarded/pmf_varargs_4.hpp +++ /dev/null @@ -1,149 +0,0 @@ -/* -Copyright (c) 2016 Barrett Adair - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -HEADER GUARDS INTENTIONALLY OMITTED -DO NOT INCLUDE THIS HEADER DIRECTLY - -BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - the function-level qualifiers for the - current inclusion (combinations of `const` `volatile` `&` `&&`, or nothing) - -BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - the transaction_safe specifier for - the current include (`transaction_safe` or nothing) - -BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE - `std::true_type` or `std::false_type`, - tied on whether BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE is `transaction_safe` - -BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - `transaction_safe` when - BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE is enabled, otherwise nothing - -BOOST_CLBL_TRTS_NOEXCEPT_SPEC - the noexcept specifier for - the current include (`noexcept` or nothing) - -BOOST_CLBL_TRTS_IS_NOEXCEPT - `std::true_type` or `std::false_type`, - tied on whether BOOST_CLBL_TRTS_NOEXCEPT_SPEC is `noexcept` - -BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER - `noexcept` if - BOOST_CLBL_TRTS_ENABLE_NOEXCEPT_TYPES is defined, otherwise nothing -*/ - -template -struct pmf - : default_callable_traits { - - static constexpr bool value = true; - - using has_varargs = std::true_type; - - using traits = pmf; - - using return_type = Return; - - using type = Return(BOOST_CLBL_TRTS_VARARGS_CC T::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using invoke_type = typename std::conditional< - std::is_rvalue_reference::value, - T BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS, - typename std::add_lvalue_reference::type - >::type; - - using arg_types = std::tuple; - using non_invoke_arg_types = std::tuple; - - using function_object_signature = Return(Args..., ...); - - using function_type = Return(invoke_type, Args..., ...); - - using qualified_function_type = Return(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_ABOMINABLE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using remove_varargs = - Return(BOOST_CLBL_TRTS_CC T::*)(Args...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using add_varargs = type; - - using is_noexcept = BOOST_CLBL_TRTS_IS_NOEXCEPT; - - using remove_noexcept = Return(BOOST_CLBL_TRTS_CC T::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE; - - using add_noexcept = Return(BOOST_CLBL_TRTS_CC T::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER; - - using is_transaction_safe = BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE; - - using remove_transaction_safe = Return(BOOST_CLBL_TRTS_VARARGS_CC T::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using add_transaction_safe = Return(BOOST_CLBL_TRTS_VARARGS_CC T::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - using class_type = T; - - using qualifiers = default_callable_traits; - - template - using set_qualifiers = set_varargs_member_function_qualifiers< - Flags, is_transaction_safe::value, is_noexcept::value, - BOOST_CLBL_TRTS_CC_TAG, T, Return, Args...>; - - using remove_member_reference = set_qualifiers; - - using add_member_lvalue_reference = set_qualifiers< - collapse_flags::value>; - - using add_member_rvalue_reference = set_qualifiers< - collapse_flags::value>; - - using add_member_const = set_qualifiers; - - using add_member_volatile = set_qualifiers; - - using add_member_cv = set_qualifiers; - - using remove_member_const = set_qualifiers< - qualifiers::ref_flags | remove_const_flag::value>; - - using remove_member_volatile = set_qualifiers< - qualifiers::ref_flags | remove_volatile_flag::value>; - - using remove_member_cv = set_qualifiers; - - template - using apply_member_pointer = - Return(BOOST_CLBL_TRTS_VARARGS_CC U::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template - using apply_return = - NewReturn(BOOST_CLBL_TRTS_VARARGS_CC T::*)(Args..., ...) - BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS - BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE - BOOST_CLBL_TRTS_NOEXCEPT_SPEC; - - template class Container> - using expand_args = Container; - - using is_member_pointer = std::true_type; -}; diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/detail/utility.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/detail/utility.hpp deleted file mode 100644 index d5a28cc3c..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/detail/utility.hpp +++ /dev/null @@ -1,111 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_DETAIL_UTILITY_HPP -#define BOOST_CLBL_TRTS_DETAIL_UTILITY_HPP - -#include -#include -#include - -namespace boost { namespace callable_traits { namespace detail { - -struct cdecl_tag{}; -struct stdcall_tag{}; -struct fastcall_tag{}; -struct pascal_tag{}; - -struct invalid_type { invalid_type() = delete; }; -struct reference_error { reference_error() = delete; }; - -template -using error_type = typename std::conditional< - std::is_reference::value, reference_error, invalid_type>::type; - -#ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS -struct abominable_functions_not_supported_on_this_compiler{}; -#endif - -// used to convey "this type doesn't matter" in code -struct dummy {}; - -// used as return type in failed SFINAE tests -struct substitution_failure : std::false_type{}; - -template -using bool_type = std::integral_constant; - -// shorthand for std::tuple_element -template -using at = typename std::tuple_element::type; - -template -using add_member_pointer = T Class::*; - -template - using fail_when_same = fail_if::value, ErrorType>; - -template::type> -using try_but_fail_if_invalid = sfinae_try, - fail_when_same>; - -template::type, - bool is_reference_error = std::is_same::value> -using fail_if_invalid = fail_if< - std::is_same::value || is_reference_error, - typename std::conditional::type>; - -template -using fallback_if_invalid = typename std::conditional< - std::is_same::value, Fallback, T>::type; - -template class Alias, typename U = Alias> -struct force_sfinae { - using type = U; -}; - -template -using shallow_decay = typename std::remove_cv< - typename std::remove_reference::type>::type; - -template -struct is_reference_wrapper_t { - using type = std::false_type; -}; - -template -struct is_reference_wrapper_t> { - using type = std::true_type; -}; - -template -using is_reference_wrapper = - typename is_reference_wrapper_t>::type; - -template -struct unwrap_reference_t { - using type = T; -}; - -template -struct unwrap_reference_t> { - using type = decltype(std::declval().get()); -}; - -// removes std::reference_wrapper -template -using unwrap_reference = typename unwrap_reference_t::type; - -}}} // namespace boost::callable_traits::detail - -#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_UTILITY_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/function_type.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/function_type.hpp deleted file mode 100644 index a3305f7bf..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/function_type.hpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_FUNCTION_TYPE_HPP -#define BOOST_CLBL_TRTS_FUNCTION_TYPE_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ function_type_hpp -/*`[section:ref_function_type function_type] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using function_type_t = //see below -//<- - detail::try_but_fail_if_invalid>::function_type, - cannot_determine_parameters_for_this_type>; - -namespace detail { - - template - struct function_type_impl {}; - - template - struct function_type_impl , detail::dummy>::type> - { - using type = function_type_t; - }; -} - -//-> - -template -struct function_type : detail::function_type_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be one of the following: - * function - * function pointer - * function reference - * member function pointer - * member data pointer - * user-defined type with a non-overloaded `operator()` - * type of a non-generic lambda - -[heading Behavior] -* When the constraints are violated, a substitution failure occurs. -* When `T` is a function, the aliased type is identical to `T`, except that the aliased function type will not have member qualifiers or the `transaction_safe` specifier. -* When `T` is a function pointer, the aliased type is equivalent to `std::remove_pointer_t`. -* When `T` is a function reference, the aliased type is equivalent to `std::remove_reference_t`. -* When `T` is a function object, the aliased type is a function type with the same return type and parameter list as `T`'s `operator()`. -* When `T` is a member function pointer, the aliased type is a function type with the same return type as `T`, and the first parameter is a reference to the parent class of `T`, qualified according to the member qualifiers on `T`. The subsequent parameters, if any, are the parameter types of `T`. -* When `T` is a member data pointer, the aliased type is a function type returning the underlying member type of `T`, taking a single parameter, which is a `const` reference to the parent type of `T`. -* In all cases, the aliased function type will not have member qualifiers, and will not have the `transaction_safe` specifier. - -[heading Input/Output Examples] -[table - [[`T`] [`function_type_t`]] - [[`void(int)`] [`void(int)`]] - [[`void(int) const`] [`void(int)`]] - [[`void(int) transaction_safe`] [`void(int)`]] - [[`void(*const &)(int)`] [`void(int)`]] - [[`void(&)(int)`] [`void(int)`]] - [[`void(* volatile)()`] [`void()`]] - [[`int(foo::*)(int)`] [`int(foo&, int)`]] - [[`int(foo::*)(int) const`] [`int(const foo&, int)`]] - [[`void(foo::*)() volatile &&`] [`void(volatile foo&&)`]] - [[`int foo::*`] [`int(const foo&)`]] - [[`const int foo::*`] [`int(const foo&)`]] - [[`int`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/function_type.cpp] -[function_type] -[endsect] -*/ -//] - -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/has_member_qualifiers.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/has_member_qualifiers.hpp deleted file mode 100644 index 3ab44d3b0..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/has_member_qualifiers.hpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_HAS_MEMBER_QUALIFIERS_HPP -#define BOOST_CLBL_TRTS_HAS_MEMBER_QUALIFIERS_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ has_member_qualifiers_hpp -/*`[section:ref_has_member_qualifiers has_member_qualifiers] -[heading Header] -``#include `` -[heading Definition] -*/ - -// inherits from either std::true_type or std::false_type -template -struct has_member_qualifiers; - -//<- -template -struct has_member_qualifiers : detail::traits< - detail::shallow_decay>::has_member_qualifiers { - - using type = typename detail::traits< - detail::shallow_decay>::has_member_qualifiers; -}; - -// older compilers don't support variable templates -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct has_member_qualifiers_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool has_member_qualifiers_v = //see below -//<- - detail::traits>::has_member_qualifiers::value; - -#endif - -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* none - -[heading Behavior] -* `std::false_type` is inherited by `has_member_qualifiers` and is aliased by `typename has_member_qualifiers::type`, except when one of the following criteria is met, in which case `std::true_type` would be similarly inherited and aliased: - * `T` is a function with member qualifiers - * `T` is a member function pointer with member qualifiers - * `T` is a function object with a member-qualified `operator()` -* On compilers that support variable templates, `has_member_qualifiers_v` is equivalent to `has_member_qualifiers::value`. - -[heading Input/Output Examples] -[table - [[`T`] [`has_member_qualifiers_v`]] - [[`void() const`] [`true`]] - [[`void() const transaction_safe`] [`true`]] - [[`void() volatile &&`] [`true`]] - [[`int(foo::*)() &`] [`true`]] - [[`void(foo::*)() const`] [`true`]] - [[`void(foo::*&)() const`] [`true`]] - [[`void(foo::* const)() const`] [`true`]] - [[`void()`] [`false`]] - [[`void() transaction_safe`] [`false`]] - [[`void(*)()`] [`false`]] - [[`void(*&)()`] [`false`]] - [[`int`] [`false`]] - [[`const int`] [`false`]] - [[`int foo::*`] [`false`]] - [[`const int foo::*`] [`false`]] -] - -[heading Example Program] -[import ../example/has_member_qualifiers.cpp] -[has_member_qualifiers] -[endsect] -*/ -//] - -#endif //BOOST_CLBL_TRTS_HAS_MEMBER_QUALIFIERS_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/has_varargs.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/has_varargs.hpp deleted file mode 100644 index 7f7982417..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/has_varargs.hpp +++ /dev/null @@ -1,94 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_HAS_VARARGS_HPP -#define BOOST_CLBL_TRTS_HAS_VARARGS_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ has_varargs_hpp -/*`[section:ref_has_varargs has_varargs] -[heading Header] -``#include `` -[heading Definition] -*/ - - -// inherits from either std::true_type or std::false_type -template -struct has_varargs; - -//<- -template -struct has_varargs : detail::traits< - detail::shallow_decay>::has_varargs { - - using type = typename detail::traits< - detail::shallow_decay>::has_varargs; -}; - -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct has_varargs_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool has_varargs_v = //see below -//<- - detail::traits>::has_varargs::value; - -#endif - -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* none - -[heading Behavior] -* `std::false_type` is inherited by `has_varargs` and is aliased by `typename has_varargs::type`, except when one of the following criteria is met, in which case `std::true_type` would be similarly inherited and aliased: - * `T` is a function, function pointer, or function reference where the function's parameter list includes C-style variadics. - * `T` is a pointer to a member function with C-style variadics in the parameter list. - * `T` is a function object with a non-overloaded `operator()`, which has C-style variadics in the parameter list of its `operator()`. -* On compilers that support variable templates, `has_varargs_v` is equivalent to `has_varargs::value`. - -[heading Input/Output Examples] -[table - [[`T`] [`has_varargs_v`]] - [[`void(...)`] [`true`]] - [[`void(int, ...) const`] [`true`]] - [[`void(* volatile)(...)`] [`true`]] - [[`void(&)(...)`] [`true`]] - [[`void(foo::*)(...) const`] [`true`]] - [[`void(*)()`] [`false`]] - [[`void(*&)()`] [`false`]] - [[`int`] [`false`]] - [[`const int`] [`false`]] - [[`int foo::*`] [`false`]] -] - -[heading Example Program] -[import ../example/has_varargs.cpp] -[has_varargs] -[endsect] -*/ -//] - -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/has_void_return.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/has_void_return.hpp deleted file mode 100644 index 06f80f3dd..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/has_void_return.hpp +++ /dev/null @@ -1,93 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_HAS_VOID_RETURN_HPP -#define BOOST_CLBL_TRTS_HAS_VOID_RETURN_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ has_void_return_hpp -/*`[section:ref_has_void_return has_void_return] -[heading Header] -``#include `` -[heading Definition] -*/ - -// inherits from either std::true_type or std::false_type -template -struct has_void_return; - -//<- -template -struct has_void_return - : std::is_same>::return_type, void> {}; - -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct has_void_return_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> - -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool has_void_return_v = //see below -//<- - std::is_same>::return_type, void>::value; - -#endif - -}} // namespace boost::callable_traits -//-> - - -/*` -[heading Constraints] -* none - -[heading Behavior] -* `std::false_type` is inherited by `has_void_return` and is aliased by `typename has_void_return::type`, except when one of the following criteria is met, in which case `std::true_type` would be similarly inherited and aliased: - * `T` is a function, function pointer, or function reference where the function's return type is `void`. - * `T` is a pointer to a member function whose return type is `void`. - * `T` is a function object with a non-overloaded `operator()`, where the `operator()` function returns `void`. -* On compilers that support variable templates, `has_void_return_v` is equivalent to `has_void_return::value`. - -[heading Input/Output Examples] -[table - [[`T`] [`has_void_return_v`]] - [[`void()`] [`true`]] - [[`void(int) const`] [`true`]] - [[`void(* const &)()`] [`true`]] - [[`void(&)()`] [`true`]] - [[`void(foo::*)() const`] [`true`]] - [[`int(*)()`] [`false`]] - [[`int(*&)()`] [`false`]] - [[`int`] [`false`]] - [[`int foo::*`] [`false`]] - [[`void* foo::*`] [`false`]] -] - -[heading Example Program] -[import ../example/has_void_return.cpp] -[has_void_return] -[endsect] -*/ -//] - -#endif diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/is_const_member.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/is_const_member.hpp deleted file mode 100644 index f0a7ad252..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/is_const_member.hpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_IS_CONST_MEMBER_HPP -#define BOOST_CLBL_TRTS_IS_CONST_MEMBER_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ is_const_member_hpp -/*`[section:ref_is_const_member is_const_member] -[heading Header] -``#include `` -[heading Definition] -*/ - -// inherits from either std::true_type or std::false_type -template -struct is_const_member; - -//<- -template -struct is_const_member - : detail::traits>::is_const_member { - using type = typename detail::traits< - detail::shallow_decay>::is_const_member; -}; - -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct is_const_member_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool is_const_member_v = //see below -//<- - detail::traits>::is_const_member::value; - -#endif - -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* none - -[heading Behavior] -* `is_const_member::value` is `true` when either: - * `T` is a function type with a `const` member qualifier - * `T` is a pointer to a member function with a `const` member qualifier - * `T` is a function object with a non-overloaded `operator()`, where the `operator()` has a `const` member qualifier -* On compilers that support variable templates, `is_const_member_v` is equivalent to `is_const_member::value`. - -[heading Input/Output Examples] -[table - [[`T`] [`is_const_member_v`]] - [[`int() const`] [`true`]] - [[`int() const volatile`] [`true`]] - [[`int() const & transaction_safe`] [`true`]] - [[`int() const &&`] [`true`]] - [[`int(foo::*&)() const`] [`true`]] - [[`int(foo::*)() const volatile`] [`true`]] - [[`int(foo::*)() const volatile &&`][`true`]] - [[`int(foo::* const)() const`] [`true`]] - [[`int()`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int() &&`] [`false`]] - [[`int(*)()`] [`false`]] - [[`int`] [`false`]] - [[`int foo::*`] [`false`]] - [[`const int foo::*`] [`false`]] -] - -[heading Example Program] -[import ../example/is_const_member.cpp] -[is_const_member] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_IS_CONST_MEMBER_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/is_cv_member.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/is_cv_member.hpp deleted file mode 100644 index 6e95545ee..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/is_cv_member.hpp +++ /dev/null @@ -1,95 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_IS_CV_MEMBER_HPP -#define BOOST_CLBL_TRTS_IS_CV_MEMBER_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ is_cv_member_hpp -/*`[section:ref_is_cv_member is_cv_member] -[heading Header] -``#include `` -[heading Definition] -*/ - -// inherits from either std::true_type or std::false_type -template -struct is_cv_member; - -//<- -template -struct is_cv_member - : detail::traits>::is_cv_member { - using type = typename detail::traits< - detail::shallow_decay>::is_cv_member; -}; - -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct is_cv_member_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool is_cv_member_v = //see below -//<- - detail::traits>::is_cv_member::value; - -#endif - -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* none - -[heading Behavior] -* `is_cv_member::value` is `true` when either: - * `T` is a function type with both `const` and `volatile` member qualifiers - * `T` is a pointer to a member function with both `const` and `volatile` member qualifiers - * `T` is a function object with a non-overloaded `operator()`, where the `operator()` has both `const` and `volatile` member qualifiers -* On compilers that support variable templates, `is_cv_member_v` is equivalent to `is_cv_member::value`. - -[heading Input/Output Examples] -[table - [[`T`] [`is_cv_member_v`]] - [[`int() const volatile`] [`true`]] - [[`int() const volatile &`] [`true`]] - [[`int(foo::* const &)() const volatile`] [`true`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int(foo::*)() const`] [`false`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int() &&`] [`false`]] - [[`int(*)()`] [`false`]] - [[`int`] [`false`]] - [[`int foo::*`] [`false`]] - [[`const int foo::*`] [`false`]] -] - -[heading Example Program] -[import ../example/is_cv_member.cpp] -[is_cv_member] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_IS_CV_MEMBER_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/is_invocable.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/is_invocable.hpp deleted file mode 100644 index 892d8fb71..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/is_invocable.hpp +++ /dev/null @@ -1,103 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_IS_INVOCABLE_HPP -#define BOOST_CLBL_TRTS_IS_INVOCABLE_HPP - -#include -#include - -namespace boost { namespace callable_traits { - -//[ is_invocable_hpp -/*`[section:ref_is_invocable is_invocable] -[heading Header] -``#include `` -[heading Definition] -*/ - -// inherits from either std::true_type or std::false_type -template -struct is_invocable; - -// inherits from either std::true_type or std::false_type -template -struct is_invocable_r; - -//<- -template -struct is_invocable : detail::is_invocable_impl::type { - using type = typename detail::is_invocable_impl::type; -}; - -template -struct is_invocable_r - : detail::is_invocable_r_impl< - typename detail::is_invocable_impl::type, Ret, T, Args...>::type -{ - using type = typename detail::is_invocable_r_impl< - typename detail::is_invocable_impl::type, Ret, T, Args...>::type; -}; - -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct is_invocable_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -template -struct is_invocable_r_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool is_invocable_v = //see below -//<- - detail::is_invocable_impl, Args...>::type::value; -//-> - -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool is_invocable_r_v = //see below -//<- - detail::is_invocable_r_impl< - typename detail::is_invocable_impl::type, - Ret, T, Args...>::type::value; -#endif - -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* none - -[heading Behavior] -* standalone c++11 implementation of c++17 `std::is_invocable`, `std::is_invocable_r` -[note ref-qualified overloads of `operator()` with different signatures are not handled correctly yet.] - -[heading Example Program] -[import ../example/is_invocable.cpp] -[is_invocable] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_IS_INVOCABLE_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/is_lvalue_reference_member.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/is_lvalue_reference_member.hpp deleted file mode 100644 index 89500cb93..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/is_lvalue_reference_member.hpp +++ /dev/null @@ -1,95 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_IS_LVALUE_REFERENCE_MEMBER_HPP -#define BOOST_CLBL_TRTS_IS_LVALUE_REFERENCE_MEMBER_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ is_lvalue_reference_member_hpp -/*`[section:ref_is_lvalue_reference_member is_lvalue_reference_member] -[heading Header] -``#include `` -[heading Definition] -*/ - - -// inherits from either std::true_type or std::false_type -template -struct is_lvalue_reference_member; - -//<- -template -struct is_lvalue_reference_member - : detail::traits>::is_lvalue_reference_member { - using type = typename detail::traits< - detail::shallow_decay>::is_lvalue_reference_member; -}; - -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct is_lvalue_reference_member_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool is_lvalue_reference_member_v = //see below -//<- - detail::traits>::is_lvalue_reference_member::value; - -#endif - -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* none - -[heading Behavior] -* `is_lvalue_reference_member::value` is `true` when either: - * `T` is a function type with a '&' member qualifier - * `T` is a pointer to a member function with a '&' member qualifiers - * `T` is a function object with a non-overloaded `operator()`, where the `operator()` has a '&' member qualifier -* On compilers that support variable templates, `is_lvalue_reference_member_v` is equivalent to `is_lvalue_reference_member::value`. - -[heading Input/Output Examples] -[table - [[`T`] [`is_lvalue_reference_member_v`]] - [[`int() &`] [`true`]] - [[`int(foo::* const)() const &`] [`true`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int(foo::*)() const`] [`false`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int() &&`] [`false`]] - [[`int(*)()`] [`false`]] - [[`int`] [`false`]] - [[`int foo::*`] [`false`]] - [[`const int foo::*`] [`false`]] -] - -[heading Example Program] -[import ../example/is_lvalue_reference_member.cpp] -[is_lvalue_reference_member] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_IS_LVALUE_REFERENCE_MEMBER_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/is_noexcept.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/is_noexcept.hpp deleted file mode 100644 index 36320f689..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/is_noexcept.hpp +++ /dev/null @@ -1,95 +0,0 @@ -/* -@file is_noexcept - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_IS_NOEXCEPT_HPP -#define BOOST_CLBL_TRTS_IS_NOEXCEPT_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ is_noexcept_hpp -/*`[section:ref_is_noexcept is_noexcept] -[heading Header] -``#include `` -[heading Definition] -*/ - -// inherits from either std::true_type or std::false_type -template -struct is_noexcept; - -//<- -template -struct is_noexcept : detail::traits>::is_noexcept { - using type = typename detail::traits< - detail::shallow_decay>::is_noexcept; -}; - -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct is_noexcept_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool is_noexcept_v = //see below -//<- - detail::traits>::is_noexcept::value; - -#endif - -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* none -* -[heading Behavior] -* `is_noexcept::value` is `true` when either: - * `T` is a function type, function pointer type, function reference type, or member function pointer type where the function has a `noexcept` specifier - * `T` is a function object with a non-overloaded `operator()`, where the `operator()` has a `noexcept` specifier -* On compilers that support variable templates, `is_noexcept_v` is equivalent to `is_noexcept::value`. - -[heading Input/Output Examples] -[table - [[`T`] [`is_noexcept_v`]] - [[`int() const noexcept`] [`true`]] - [[`int(* const &)() noexcept`] [`true`]] - [[`int(&)() noexcept`] [`true`]] - [[`int(foo::*)() noexcept`] [`true`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int(foo::*)() const`] [`false`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int() &`] [`false`]] - [[`int(*)()`] [`false`]] - [[`int`] [`false`]] - [[`int foo::*`] [`false`]] - [[`const int foo::*`] [`false`]] -] - -[heading Example Program] -[import ../example/is_noexcept.cpp] -[is_noexcept] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_IS_NOEXCEPT_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/is_reference_member.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/is_reference_member.hpp deleted file mode 100644 index ef893a04d..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/is_reference_member.hpp +++ /dev/null @@ -1,98 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_IS_REFERENCE_MEMBER_HPP -#define BOOST_CLBL_TRTS_IS_REFERENCE_MEMBER_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ is_reference_member_hpp -/*`[section:ref_is_reference_member is_reference_member] -[heading Header] -``#include `` -[heading Definition] -*/ - - -// inherits from either std::true_type or std::false_type -template -struct is_reference_member; - -//<- -template -struct is_reference_member : detail::traits< - detail::shallow_decay>::is_reference_member { - - using type = typename detail::traits< - detail::shallow_decay>::is_reference_member; -}; - -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct is_reference_member_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool is_reference_member_v = //see below -//<- - detail::traits>::is_reference_member::value; - -#endif - -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* none - -[heading Behavior] -* `is_reference_member::value` is `true` when either: - * `T` is a function type with a '&' or '&&' member qualifier - * `T` is a pointer to a member function with a '&' or '&&' member qualifiers - * `T` is a function object with a non-overloaded `operator()`, where the `operator()` has a '&' or '&&' member qualifier -* On compilers that support variable templates, `is_reference_member_v` is equivalent to `is_reference_member::value`. - -[heading Input/Output Examples] -[table - [[`T`] [`is_reference_member_v`]] - [[`int() &`] [`true`]] - [[`int() const &&`] [`true`]] - [[`int(foo::* const)() &&`] [`true`]] - [[`int(foo::*)(...) volatile &`] [`true`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int(foo::*)() const`] [`false`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int(*)()`] [`false`]] - [[`int`] [`false`]] - [[`int foo::*`] [`false`]] - [[`const int foo::*`] [`false`]] -] - -[heading Example Program] -[import ../example/is_reference_member.cpp] -[is_reference_member] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_IS_REFERENCE_MEMBER_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/is_rvalue_reference_member.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/is_rvalue_reference_member.hpp deleted file mode 100644 index a852ce6e1..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/is_rvalue_reference_member.hpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_IS_RVALUE_REFERENCE_MEMBER_HPP -#define BOOST_CLBL_TRTS_IS_RVALUE_REFERENCE_MEMBER_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ is_rvalue_reference_member_hpp -/*`[section:ref_is_rvalue_reference_member is_rvalue_reference_member] -[heading Header] -``#include `` -[heading Definition] -*/ - - -// inherits from either std::true_type or std::false_type -template -struct is_rvalue_reference_member; - -//<- -template -struct is_rvalue_reference_member : detail::traits< - detail::shallow_decay>::is_rvalue_reference_member { - - using type = typename detail::traits< - detail::shallow_decay>::is_rvalue_reference_member; -}; - -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct is_rvalue_reference_member_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool is_rvalue_reference_member_v = //see below -//<- - detail::traits>::is_rvalue_reference_member::value; - -#endif - -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* none - -[heading Behavior] -* `is_rvalue_reference_member::value` is `true` when either: - * `T` is a function type with a '&&' member qualifier - * `T` is a pointer to a member function with a '&&' member qualifiers - * `T` is a function object with a non-overloaded `operator()`, where the `operator()` has a '&&' member qualifier -* On compilers that support variable templates, `is_rvalue_reference_member_v` is equivalent to `is_rvalue_reference_member::value`. - -[heading Input/Output Examples] -[table - [[`T`] [`is_rvalue_reference_member_v`]] - [[`int() const &&`] [`true`]] - [[`int(foo::*)() &&`] [`true`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int(foo::* volatile)() const`] [`false`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int() &`] [`false`]] - [[`int(*)()`] [`false`]] - [[`int`] [`false`]] - [[`int foo::*`] [`false`]] - [[`const int foo::*`] [`false`]] -] - -[heading Example Program] -[import ../example/is_rvalue_reference_member.cpp] -[is_rvalue_reference_member] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_IS_RVALUE_REFERENCE_MEMBER_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/is_transaction_safe.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/is_transaction_safe.hpp deleted file mode 100644 index 51c98c53e..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/is_transaction_safe.hpp +++ /dev/null @@ -1,98 +0,0 @@ -/* -@file is_transaction_safe - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE_HPP -#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ is_transaction_safe_hpp -/*`[section:ref_is_transaction_safe is_transaction_safe] -[heading Header] -``#include `` -[heading Definition] -*/ - - -// inherits from either std::true_type or std::false_type -template -struct is_transaction_safe; - -//<- -template -struct is_transaction_safe : detail::traits< - detail::shallow_decay>::is_transaction_safe { - - using type = typename detail::traits< - detail::shallow_decay>::is_transaction_safe; -}; - -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct is_transaction_safe_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool is_transaction_safe_v = //see below -//<- - detail::traits>::is_transaction_safe::value; - -#endif - -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* none -* -[heading Behavior] -* `is_transaction_safe::value` is `true` when either: - * `T` is a function type, function pointer type, function reference type, or member function pointer type where the function has a `transaction_safe` specifier - * `T` is a function object with a non-overloaded `operator()`, where the `operator()` has a `transaction_safe` specifier -* On compilers that support variable templates, `is_transaction_safe_v` is equivalent to `is_transaction_safe::value`. - -[heading Input/Output Examples] -[table - [[`T`] [`is_transaction_safe_v`]] - [[`int() const transaction_safe`] [`true`]] - [[`int(*)() transaction_safe`] [`true`]] - [[`int(&)() transaction_safe`] [`true`]] - [[`int(foo::* const)() transaction_safe`] [`true`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int(foo::*)() const`] [`false`]] - [[`int() const`] [`false`]] - [[`int() volatile`] [`false`]] - [[`int() &`] [`false`]] - [[`int(*)()`] [`false`]] - [[`int`] [`false`]] - [[`int foo::*`] [`false`]] - [[`const int foo::*`] [`false`]] -] - -[heading Example Program] -[import ../example/is_transaction_safe.cpp] -[is_transaction_safe] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/is_volatile_member.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/is_volatile_member.hpp deleted file mode 100644 index 2309eec62..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/is_volatile_member.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * -@Copyright Barrett Adair 2015-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_IS_VOLATILE_MEMBER_HPP -#define BOOST_CLBL_TRTS_IS_VOLATILE_MEMBER_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ is_volatile_member_hpp -/*`[section:ref_is_volatile_member is_volatile_member] -[heading Header] -``#include `` -[heading Definition] -*/ - - -// inherits from either std::true_type or std::false_type -template -struct is_volatile_member; - -//<- -template -struct is_volatile_member : detail::traits< - detail::shallow_decay>::is_volatile_member { - - using type = typename detail::traits< - detail::shallow_decay>::is_volatile_member; -}; - -#ifdef BOOST_CLBL_TRTS_DISABLE_VARIABLE_TEMPLATES - -template -struct is_volatile_member_v { - static_assert(std::is_same::value, - "Variable templates not supported on this compiler."); -}; - -#else -//-> -// only available when variable templates are supported -template -//<- -BOOST_CLBL_TRAITS_INLINE_VAR -//-> -constexpr bool is_volatile_member_v = //see below -//<- - detail::traits>::is_volatile_member::value; - -#endif - -}} // namespace boost::callable_traits -//-> - - -/*` -[heading Constraints] -* none - -[heading Behavior] -* `is_volatile_member::value` is `true` when either: - * `T` is a function type with a `volatile` member qualifier - * `T` is a pointer to a member function with a `volatile` member qualifier - * `T` is a function object with a non-overloaded `operator()`, where the `operator()` has a `volatile` member qualifier -* On compilers that support variable templates, `is_volatile_member_v` is equivalent to `is_volatile_member::value`. - -[heading Input/Output Examples] -[table - [[`T`] [`is_volatile_member_v`]] - [[`int() volatile`] [`true`]] - [[`int() const volatile`] [`true`]] - [[`int() volatile &&`] [`true`]] - [[`int(foo::*)() volatile`] [`true`]] - [[`int(foo::* const)() volatile`] [`true`]] - [[`int(foo::*)() const volatile`] [`true`]] - [[`int(foo::*)() const volatile &&`][`true`]] - [[`int()`] [`false`]] - [[`int() const`] [`false`]] - [[`int() &&`] [`false`]] - [[`int(*)()`] [`false`]] - [[`int`] [`false`]] - [[`int foo::*`] [`false`]] - [[`volatile int foo::*`] [`false`]] -] - -[heading Example Program] -[import ../example/is_volatile_member.cpp] -[is_volatile_member] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_IS_VOLATILE_MEMBER_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/qualified_class_of.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/qualified_class_of.hpp deleted file mode 100644 index 9f9e58117..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/qualified_class_of.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_QUALIFIED_class_of_HPP -#define BOOST_CLBL_TRTS_QUALIFIED_class_of_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ qualified_class_of_hpp -/*` -[section:ref_qualified_class_of qualified_class_of] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using qualified_class_of_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits>::invoke_type, - type_is_not_a_member_pointer>; - -namespace detail { - - template - struct qualified_class_of_impl {}; - - template - struct qualified_class_of_impl , detail::dummy>::type> - { - using type = qualified_class_of_t; - }; -} - -//-> - -template -struct qualified_class_of : detail::qualified_class_of_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be a member pointer - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* If `T` is a member function pointer, the aliased type is the parent class of the member, qualified according to the member qualifiers on `T`. If `T` does not have a member reference qualifier, then the aliased type will be an lvalue reference. -* If `T` is a member data pointer, the aliased type is equivalent to `ct::class_of const &`. - -[heading Input/Output Examples] -[table - [[`T`] [`qualified_class_of_t`]] - [[`void(foo::*)()`] [`foo &`]] - [[`void(foo::* volatile)() const`] [`foo const &`]] - [[`void(foo::*)() &&`] [`foo &&`]] - [[`void(foo::*&)() volatile &&`] [`foo volatile &&`]] - [[`int foo::*`] [`foo const &`]] - [[`const int foo::*`] [`foo const &`]] -] - -[heading Example Program] -[import ../example/qualified_class_of.cpp] -[qualified_class_of] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_QUALIFIED_class_of_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_const.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_const.hpp deleted file mode 100644 index 132680082..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_const.hpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_REMOVE_MEMBER_CONST_HPP -#define BOOST_CLBL_TRTS_REMOVE_MEMBER_CONST_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ remove_member_const_hpp -/*` -[section:ref_remove_member_const remove_member_const] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using remove_member_const_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits::remove_member_const, - member_qualifiers_are_illegal_for_this_type>; - -namespace detail { - - template - struct remove_member_const_impl {}; - - template - struct remove_member_const_impl , detail::dummy>::type> - { - using type = remove_member_const_t; - }; -} - -//-> - -template -struct remove_member_const : detail::remove_member_const_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be a function type or a member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Removes the member `const` qualifier from `T`, if present. - -[heading Input/Output Examples] -[table - [[`T`] [`remove_member_const_t`]] - [[`int() const`] [`int()`]] - [[`int(foo::*)() const`] [`int(foo::*)()`]] - [[`int(foo::*)() const &`] [`int(foo::*)() &`]] - [[`int(foo::*)() const &&`] [`int(foo::*)() &&`]] - [[`int(foo::*)() const`] [`int(foo::*)()`]] - [[`int(foo::*)() const volatile`] [`int(foo::*)() volatile`]] - [[`int`] [(substitution failure)]] - [[`int (&)()`] [(substitution failure)]] - [[`int (*)()`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (foo::* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/remove_member_const.cpp] -[remove_member_const] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_REMOVE_MEMBER_CONST_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_cv.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_cv.hpp deleted file mode 100644 index 30d99a082..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_cv.hpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_REMOVE_MEMBER_CV_HPP -#define BOOST_CLBL_TRTS_REMOVE_MEMBER_CV_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ remove_member_cv_hpp -/*` -[section:ref_remove_member_cv remove_member_cv] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using remove_member_cv_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits::remove_member_cv, - member_qualifiers_are_illegal_for_this_type>; - -namespace detail { - - template - struct remove_member_cv_impl {}; - - template - struct remove_member_cv_impl , detail::dummy>::type> - { - using type = remove_member_cv_t; - }; -} - -//-> - -template -struct remove_member_cv : detail::remove_member_cv_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be a function type or a member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Removes member `const` and/or `volatile` qualifiers from `T`, if present. - -[heading Input/Output Examples] -[table - [[`T`] [`remove_member_cv_t`]] - [[`int() const volatile`] [`int()`]] - [[`int(foo::*)() const volatile`] [`int(foo::*)()`]] - [[`int(foo::*)() volatile`] [`int(foo::*)()`]] - [[`int(foo::*)() const`] [`int(foo::*)()`]] - [[`int(foo::*)() const &`] [`int(foo::*)() &`]] - [[`int(foo::*)() const &&`] [`int(foo::*)() &&`]] - [[`int(foo::*)() const`] [`int(foo::*)()`]] - [[`int`] [(substitution failure)]] - [[`int (&)()`] [(substitution failure)]] - [[`int (*)()`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (foo::* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/remove_member_cv.cpp] -[remove_member_cv] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_REMOVE_MEMBER_CV_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_reference.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_reference.hpp deleted file mode 100644 index d4e4b62ce..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_reference.hpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_REMOVE_MEMBER_REFERENCE_HPP -#define BOOST_CLBL_TRTS_REMOVE_MEMBER_REFERENCE_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ remove_member_reference_hpp -/*` -[section:ref_remove_member_reference remove_member_reference] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using remove_member_reference_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits::remove_member_reference, - member_qualifiers_are_illegal_for_this_type>; - -namespace detail { - - template - struct remove_member_reference_impl {}; - - template - struct remove_member_reference_impl , detail::dummy>::type> - { - using type = remove_member_reference_t; - }; -} - -//-> - -template -struct remove_member_reference - : detail::remove_member_reference_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be a function type or a member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occuers if the constraints are violated. -* Removes member `&` or `&&` qualifiers from `T`, if present. - -[heading Input/Output Examples] -[table - [[`T`] [`remove_member_const_t`]] - [[`int() &`] [`int()`]] - [[`int(foo::*)() &`] [`int(foo::*)()`]] - [[`int(foo::*)() const &`] [`int(foo::*)() const`]] - [[`int(foo::*)() const &&`] [`int(foo::*)() const`]] - [[`int(foo::*)()`] [`int(foo::*)()`]] - [[`int`] [(substitution failure)]] - [[`int (&)()`] [(substitution failure)]] - [[`int (*)()`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (foo::* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/remove_member_reference.cpp] -[remove_member_reference] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_REMOVE_MEMBER_REFERENCE_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_volatile.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_volatile.hpp deleted file mode 100644 index d20c79684..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/remove_member_volatile.hpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_REMOVE_MEMBER_VOLATILE_HPP -#define BOOST_CLBL_TRTS_REMOVE_MEMBER_VOLATILE_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ remove_member_volatile_hpp -/*` -[section:ref_remove_member_volatile remove_member_volatile] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using remove_member_volatile_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits::remove_member_volatile, - member_qualifiers_are_illegal_for_this_type>; - -namespace detail { - - template - struct remove_member_volatile_impl {}; - - template - struct remove_member_volatile_impl , detail::dummy>::type> - { - using type = remove_member_volatile_t; - }; -} - -//-> - -template -struct remove_member_volatile : detail::remove_member_volatile_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be a function type or a member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Removes the member `volatile` qualifier from `T`, if present. - -[heading Input/Output Examples] -[table - [[`T`] [`remove_member_volatile_t`]] - [[`int() volatile`] [`int()`]] - [[`int(foo::*)() volatile`] [`int(foo::*)()`]] - [[`int(foo::*)() volatile &`] [`int(foo::*)() &`]] - [[`int(foo::*)() volatile &&`] [`int(foo::*)() &&`]] - [[`int(foo::*)() volatile`] [`int(foo::*)()`]] - [[`int(foo::*)() const volatile`] [`int(foo::*)() const`]] - [[`int`] [(substitution failure)]] - [[`int (&)()`] [(substitution failure)]] - [[`int (*)()`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (foo::* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/remove_member_volatile.cpp] -[remove_member_volatile] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_REMOVE_MEMBER_VOLATILE_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/remove_noexcept.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/remove_noexcept.hpp deleted file mode 100644 index 7b1fcb347..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/remove_noexcept.hpp +++ /dev/null @@ -1,93 +0,0 @@ -/* -@file remove_noexcept - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_REMOVE_NOEXCEPT_HPP -#define BOOST_CLBL_TRTS_REMOVE_NOEXCEPT_HPP - -#include - -namespace boost { namespace callable_traits { - -BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(remove_noexcept) -BOOST_CLBL_TRTS_SFINAE_MSG(remove_noexcept, cannot_remove_noexcept_from_this_type) - -//[ remove_noexcept_hpp -/*` -[section:ref_remove_noexcept remove_noexcept] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using remove_noexcept_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits::remove_noexcept, - cannot_remove_noexcept_from_this_type>; - -namespace detail { - - template - struct remove_noexcept_impl {}; - - template - struct remove_noexcept_impl , detail::dummy>::type> - { - using type = remove_noexcept_t; - }; -} - -//-> - -template -struct remove_noexcept : detail::remove_noexcept_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` - -[heading Constraints] -* `T` must be one of the following: - * function type - * function pointer type - * function reference type - * member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Removes the `noexcept` specifier from `T`, if present. - -[heading Input/Output Examples] -[table - [[`T`] [`remove_noexcept_t`]] - [[`int() const noexcept`] [`int() const`]] - [[`int(*)() noexcept`] [`int(*)()`]] - [[`int(&)() noexcept`] [`int(&)()`]] - [[`int(foo::*)() noexcept`] [`int(foo::*)()`]] - [[`int() const`] [`int() const`]] - [[`int(*)()`] [`int(*)()`]] - [[`int(&)()`] [`int(&)()`]] - [[`int`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (foo::* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/remove_noexcept.cpp] -[remove_noexcept] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_REMOVE_NOEXCEPT_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/remove_transaction_safe.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/remove_transaction_safe.hpp deleted file mode 100644 index 4e37a3666..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/remove_transaction_safe.hpp +++ /dev/null @@ -1,93 +0,0 @@ -/* -@file remove_transaction_safe - -@Copyright Barrett Adair 2015-2017 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_REMOVE_TRANSACTION_SAFE_HPP -#define BOOST_CLBL_TRTS_REMOVE_TRANSACTION_SAFE_HPP - -#include - -namespace boost { namespace callable_traits { - -BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(remove_transaction_safe) -BOOST_CLBL_TRTS_SFINAE_MSG(remove_transaction_safe, cannot_remove_transaction_safe_from_this_type) - -//[ remove_transaction_safe_hpp -/*` -[section:ref_remove_transaction_safe remove_transaction_safe] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using remove_transaction_safe_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits::remove_transaction_safe, - cannot_remove_transaction_safe_from_this_type>; - -namespace detail { - - template - struct remove_transaction_safe_impl {}; - - template - struct remove_transaction_safe_impl , detail::dummy>::type> - { - using type = remove_transaction_safe_t; - }; -} - -//-> - -template -struct remove_transaction_safe : detail::remove_transaction_safe_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` - -[heading Constraints] -* `T` must be one of the following: - * function type - * function pointer type - * function reference type - * member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Removes the member `transaction_safe` specifier from `T`, if present. - -[heading Input/Output Examples] -[table - [[`T`] [`remove_transaction_safe_t`]] - [[`int() const transaction_safe`] [`int() const`]] - [[`int(*)() transaction_safe`] [`int(*)()`]] - [[`int(&)() transaction_safe`] [`int(&)()`]] - [[`int(foo::*)() transaction_safe`] [`int(foo::*)()`]] - [[`int() const`] [`int() const`]] - [[`int(*)()`] [`int(*)()`]] - [[`int(&)()`] [`int(&)()`]] - [[`int`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (foo::* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/remove_transaction_safe.cpp] -[remove_transaction_safe] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_REMOVE_TRANSACTION_SAFE_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/remove_varargs.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/remove_varargs.hpp deleted file mode 100644 index 874651c60..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/remove_varargs.hpp +++ /dev/null @@ -1,91 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_REMOVE_VARARGS_HPP -#define BOOST_CLBL_TRTS_REMOVE_VARARGS_HPP - -#include - -namespace boost { namespace callable_traits { - -//[ remove_varargs_hpp -/*` -[section:ref_remove_varargs remove_varargs] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using remove_varargs_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits::remove_varargs, - varargs_are_illegal_for_this_type>; - -namespace detail { - - template - struct remove_varargs_impl {}; - - template - struct remove_varargs_impl , detail::dummy>::type> - { - using type = remove_varargs_t; - }; -} - -//-> - -template -struct remove_varargs : detail::remove_varargs_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be one of the following: - * function type - * function pointer type - * function reference type - * member function pointer type -* If `T` is a pointer, it may not be cv/ref qualified - -[heading Behavior] -* A substitution failure occurs if the constraints are violated. -* Removes C-style variadics (`...`) from the signature of `T`, if present. - -[heading Input/Output Examples] -[table - [[`T`] [`remove_varargs_t`]] - [[`int(...)`] [`int()`]] - [[`int(int, ...)`] [`int(int)`]] - [[`int (&)(...)`] [`int(&)()`]] - [[`int (*)()`] [`int(*)()`]] - [[`int(foo::*)(...)`] [`int(foo::*)()`]] - [[`int(foo::*)(...) &`] [`int(foo::*)() &`]] - [[`int(foo::*)(...) &&`] [`int(foo::*)() &&`]] - [[`int(foo::*)(...) const`] [`int(foo::*)() const`]] - [[`int(foo::*)(...) transaction_safe`] [`int(foo::*)() transaction_safe`]] - [[`int`] [(substitution failure)]] - [[`int foo::*`] [(substitution failure)]] - [[`int (* const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/remove_varargs.cpp] -[remove_varargs] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_REMOVE_VARARGS_HPP diff --git a/stratosphere/libstratosphere/include/boost/callable_traits/return_type.hpp b/stratosphere/libstratosphere/include/boost/callable_traits/return_type.hpp deleted file mode 100644 index 586b0d249..000000000 --- a/stratosphere/libstratosphere/include/boost/callable_traits/return_type.hpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - -@Copyright Barrett Adair 2015-2017 - -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) - -*/ - -#ifndef BOOST_CLBL_TRTS_RESULT_OF_HPP -#define BOOST_CLBL_TRTS_RESULT_OF_HPP - -#include - -namespace boost { namespace callable_traits { - -BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(return_type) -BOOST_CLBL_TRTS_SFINAE_MSG(return_type, unable_to_determine_return_type) - -//[ return_type_hpp -/*` -[section:ref_return_type return_type] -[heading Header] -``#include `` -[heading Definition] -*/ - -template -using return_type_t = //see below -//<- - detail::try_but_fail_if_invalid< - typename detail::traits>::return_type, - unable_to_determine_return_type>; - -namespace detail { - - template - struct return_type_impl {}; - - template - struct return_type_impl , detail::dummy>::type> - { - using type = return_type_t; - }; -} - -//-> - -template -struct return_type : detail::return_type_impl {}; - -//<- -}} // namespace boost::callable_traits -//-> - -/*` -[heading Constraints] -* `T` must be one of the following: - * function - * function pointer - * function reference - * member function pointer - * member data pointer - * user-defined type with a non-overloaded `operator()` - * type of a non-generic lambda - -[heading Behavior] -* When the constraints are violated, a substitution failure occurs. -* The aliased type is the return type of `T`. - -[heading Input/Output Examples] -[table - [[`T`] [`return_type_t`]] - [[`void()`] [`void`]] - [[`float(*)()`] [`float`]] - [[`const char*(&)()`] [`const char *`]] - [[`int(foo::*)() const`] [`int`]] - [[`int`] [(substitution failure)]] - [[`int (*const)()`] [(substitution failure)]] -] - -[heading Example Program] -[import ../example/return_type.cpp] -[return_type] -[endsect] -*/ -//] - -#endif // #ifndef BOOST_CLBL_TRTS_RESULT_OF_HPP diff --git a/stratosphere/libstratosphere/include/stratosphere/ipc/ipc_serialization.hpp b/stratosphere/libstratosphere/include/stratosphere/ipc/ipc_serialization.hpp index 41a669547..1e4e77afa 100644 --- a/stratosphere/libstratosphere/include/stratosphere/ipc/ipc_serialization.hpp +++ b/stratosphere/libstratosphere/include/stratosphere/ipc/ipc_serialization.hpp @@ -13,13 +13,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - + #pragma once #include #include #include #include -#include "../../boost/callable_traits.hpp" +#include #include #include @@ -31,7 +31,7 @@ #include "ipc_response_context.hpp" -#pragma GCC diagnostic push +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-but-set-variable" template @@ -192,12 +192,12 @@ struct RawDataComputer> { } } while (left < right); } - + static constexpr void StableSort(std::array &map, std::array &values) { /* First, quicksort a copy of the map. */ std::array map_unstable(map); QuickSort(map_unstable, values, 0, sizeof...(Ts)-1); - + /* Now, create stable sorted map from unstably quicksorted indices (via repeated insertion sort on element runs). */ for (size_t i = 0; i < sizeof...(Ts); i++) { map[i] = map_unstable[i]; @@ -208,7 +208,7 @@ struct RawDataComputer> { } } } - + static constexpr std::array GetOffsets() { std::array offsets = {}; offsets[0] = 0; @@ -216,12 +216,12 @@ struct RawDataComputer> { /* Get size, alignment for each type. */ std::array sizes = { RawDataHelper::size... }; std::array aligns = { RawDataHelper::align... }; - + /* We want to sort...by alignment. */ std::array map = {}; for (size_t i = 0; i < sizeof...(Ts); i++) { map[i] = i; } StableSort(map, aligns); - + /* Iterate over sorted types. */ size_t cur_offset = 0; for (size_t i = 0; i < sizeof...(Ts); i++) { @@ -236,7 +236,7 @@ struct RawDataComputer> { } return offsets; } - + static constexpr std::array offsets = GetOffsets(); }; @@ -247,10 +247,10 @@ template struct CommandMetaInfo, _ReturnType> { using Args = std::tuple<_Args...>; using ReturnType = _ReturnType; - + static constexpr bool ReturnsResult = std::is_same_v; static constexpr bool ReturnsVoid = std::is_same_v; - + using InDatas = FilteredTypes; using OutDatas = FilteredTypes::type, _Args...>; using InHandles = FilteredTypes::type, _Args...>; @@ -258,14 +258,14 @@ struct CommandMetaInfo, _ReturnType> { using InSessions = FilteredTypes::type, _Args...>; using OutSessions = FilteredTypes::type, _Args...>; using PidDescs = FilteredTypes::type, _Args...>; - + using InBuffers = FilteredTypes::type, _Args...>; using OutBuffers = FilteredTypes::type, _Args...>; using InPointers = FilteredTypes::type, _Args...>; using ClientSizeOutPointers = FilteredTypes::type, _Args...>; using ServerSizeOutPointers = FilteredTypes::type, _Args...>; using Buffers = FilteredTypes; - + static constexpr size_t NumInDatas = std::tuple_size_v; static constexpr size_t NumOutDatas = std::tuple_size_v; static constexpr size_t NumInHandles = std::tuple_size_v; @@ -273,24 +273,24 @@ struct CommandMetaInfo, _ReturnType> { static constexpr size_t NumInSessions = std::tuple_size_v; static constexpr size_t NumOutSessions = std::tuple_size_v; static constexpr size_t NumPidDescs = std::tuple_size_v; - + static constexpr size_t NumInBuffers = std::tuple_size_v; static constexpr size_t NumOutBuffers = std::tuple_size_v; static constexpr size_t NumInPointers = std::tuple_size_v; static constexpr size_t NumClientSizeOutPointers = std::tuple_size_v; static constexpr size_t NumServerSizeOutPointers = std::tuple_size_v; static constexpr size_t NumBuffers = std::tuple_size_v; - + static_assert(NumInSessions == 0, "InSessions not yet supported!"); static_assert(NumPidDescs == 0 || NumPidDescs == 1, "Methods can only take in 0 or 1 PIDs!"); static_assert(NumBuffers <= 8, "Methods can only take in <= 8 Buffers!"); static_assert(NumInHandles <= 8, "Methods can take in <= 8 Handles!"); static_assert(NumOutHandles + NumOutSessions <= 8, "Methods can only return <= 8 Handles+Sessions!"); - + static constexpr std::array InDataOffsets = RawDataComputer::offsets; static constexpr size_t InRawArgSize = InDataOffsets[NumInDatas]; static constexpr size_t InRawArgSizeWithOutPointers = ((InRawArgSize + NumClientSizeOutPointers * sizeof(u16)) + 3) & ~3; - + static constexpr std::array OutDataOffsets = RawDataComputer::offsets; static constexpr size_t OutRawArgSize = OutDataOffsets[NumOutDatas]; }; @@ -301,7 +301,7 @@ struct CommandMetaInfo, _ReturnType> { /* Validator. */ struct Validator { - + template static constexpr bool ValidateCommandArgument(IpcResponseContext *ctx, size_t& a_index, size_t& b_index, size_t& x_index, size_t& h_index, size_t& cur_c_size_offset, size_t& total_c_size) { constexpr ArgType argT = GetArgType(); @@ -327,27 +327,27 @@ struct Validator { return true; } } - + template struct ValidateCommandTuple; - + template struct ValidateCommandTuple> { static constexpr bool IsValid(IpcResponseContext *ctx, size_t& a_index, size_t& b_index, size_t& x_index, size_t& h_index, size_t& cur_c_size_offset, size_t& total_c_size) { return (ValidateCommandArgument(ctx, a_index, b_index, x_index, h_index, cur_c_size_offset, total_c_size) && ...); } }; - + template static constexpr Result Validate(IpcResponseContext *ctx) { if (ctx->request.RawSize < MetaInfo::InRawArgSizeWithOutPointers) { return 0xF601; } - + if (ctx->request.NumBuffers != MetaInfo::NumInBuffers + MetaInfo::NumOutBuffers) { return 0xF601; } - + if (ctx->request.NumStatics != MetaInfo::NumInPointers) { return 0xF601; } @@ -355,28 +355,28 @@ struct Validator { if (ctx->request.NumStaticsOut != MetaInfo::NumClientSizeOutPointers + MetaInfo::NumServerSizeOutPointers) { return 0xF601; } - + if (ctx->request.NumHandles != MetaInfo::NumInHandles) { return 0xF601; } - - + + if ((ctx->request.HasPid && MetaInfo::NumPidDescs == 0) || (!ctx->request.HasPid && MetaInfo::NumPidDescs != 0)) { return 0xF601; } - + if (((u32 *)ctx->request.Raw)[0] != SFCI_MAGIC) { return 0xF601; } - + size_t a_index = 0, b_index = MetaInfo::NumInBuffers, x_index = 0, h_index = 0; size_t cur_c_size_offset = MetaInfo::InRawArgSize + (0x10 - ((uintptr_t)ctx->request.Raw - (uintptr_t)ctx->request.RawWithoutPadding)); size_t total_c_size = 0; - + if (!ValidateCommandTuple::IsValid(ctx, a_index, b_index, x_index, h_index, cur_c_size_offset, total_c_size)) { return 0xF601; } - + if (total_c_size > ctx->pb_size) { return 0xF601; } @@ -390,7 +390,7 @@ struct Validator { /* Decoder. */ template struct Decoder { - + template static constexpr T DecodeCommandArgument(IpcResponseContext *ctx, size_t& a_index, size_t& b_index, size_t& x_index, size_t& c_index, size_t& in_h_index, size_t& out_h_index, size_t& out_obj_index, size_t& in_data_index, size_t& out_data_index, size_t& pb_offset, size_t& c_sz_offset) { constexpr ArgType argT = GetArgType(); @@ -448,10 +448,10 @@ struct Decoder { } } } - + template struct DecodeTuple; - + template struct DecodeTuple> { static constexpr std::tuple GetArgs(IpcResponseContext *ctx, size_t& a_index, size_t& b_index, size_t& x_index, size_t& c_index, size_t& in_h_index, size_t& out_h_index, size_t& out_obj_index, size_t& in_data_index, size_t& out_data_index, size_t& pb_offset, size_t& c_sz_offset) { @@ -462,7 +462,7 @@ struct Decoder { } }; - + static constexpr typename MetaInfo::Args Decode(IpcResponseContext *ctx) { size_t a_index = 0, b_index = MetaInfo::NumInBuffers, x_index = 0, c_index = 0, in_h_index = 0, out_h_index = 0, out_obj_index = 0; size_t in_data_index = 0x0, out_data_index = 0, pb_offset = 0; @@ -497,7 +497,7 @@ struct Encoder; template struct Encoder> { - + static constexpr void EncodeFailure(IpcResponseContext *ctx, Result rc) { memset(armGetTls(), 0, 0x100); ipcInitialize(&ctx->reply); @@ -505,7 +505,7 @@ struct Encoder> { u64 magic; u64 result; } *raw; - + if (IsDomainObject(ctx->obj_holder)) { raw = (decltype(raw))ipcPrepareHeaderForDomain(&ctx->reply, sizeof(*raw), 0); auto resp_header = (DomainResponseHeader *)((uintptr_t)raw - sizeof(DomainResponseHeader)); @@ -516,22 +516,22 @@ struct Encoder> { raw->magic = SFCO_MAGIC; raw->result = rc; } - - - - static constexpr void EncodeSuccess(IpcResponseContext *ctx, Args... args) { + + + + static constexpr void EncodeSuccess(IpcResponseContext *ctx, Args... args) { size_t out_obj_index = 0; - + ((EncodeArgument(ctx, out_obj_index, args)), ...); - + const bool is_domain = IsDomainObject(ctx->obj_holder); - + if (!is_domain) { for (unsigned int i = 0; i < MetaInfo::NumOutSessions; i++) { ipcSendHandleMove(&ctx->reply, ctx->out_handles[MetaInfo::NumOutHandles + i].handle); } } - + struct { u64 magic; u64 result; @@ -544,10 +544,10 @@ struct Encoder> { } else { raw = (decltype(raw))ipcPrepareHeader(&ctx->reply, sizeof(*raw)+ MetaInfo::OutRawArgSize); } - + raw->magic = SFCO_MAGIC; raw->result = 0; - + memcpy((void *)((uintptr_t)raw + sizeof(*raw)), ctx->out_data, MetaInfo::OutRawArgSize); if (is_domain) { memcpy((void *)((uintptr_t)raw + sizeof(*raw) + MetaInfo::OutRawArgSize), ctx->out_object_ids, sizeof(*ctx->out_object_ids) * MetaInfo::NumOutSessions); @@ -563,20 +563,20 @@ constexpr Result WrapIpcCommandImpl(IpcResponseContext *ctx) { using InArgs = typename PopFront>::type; using OutArgs = typename boost::callable_traits::return_type_t; using ClassType = typename boost::callable_traits::class_of_t; - + using CommandMetaData = CommandMetaInfo; - + static_assert(CommandMetaData::ReturnsResult || CommandMetaData::ReturnsVoid, "IpcCommandImpls must return Result or void"); - + ipcInitialize(&ctx->reply); memset(ctx->out_data, 0, CommandMetaData::OutRawArgSize); Result rc = Validator::Validate(ctx); - + if (R_FAILED(rc)) { return 0xAAEE; } - + ClassType *this_ptr = nullptr; if (IsDomainObject(ctx->obj_holder)) { this_ptr = ctx->obj_holder->GetServiceObject()->GetObject(ctx->request.InThisObjectId)->GetServiceObject(); @@ -586,9 +586,9 @@ constexpr Result WrapIpcCommandImpl(IpcResponseContext *ctx) { if (this_ptr == nullptr) { return 0xBBEE; } - + std::shared_ptr out_objects[CommandMetaData::NumOutSessions]; - + /* Allocate out object IDs. */ size_t num_out_objects; if (IsDomainObject(ctx->obj_holder)) { @@ -609,7 +609,7 @@ constexpr Result WrapIpcCommandImpl(IpcResponseContext *ctx) { ctx->out_objs[num_out_objects] = &out_objects[num_out_objects]; } } - + ON_SCOPE_EXIT { /* Clean up objects as necessary. */ if (IsDomainObject(ctx->obj_holder) && R_FAILED(rc)) { @@ -622,21 +622,21 @@ constexpr Result WrapIpcCommandImpl(IpcResponseContext *ctx) { svcCloseHandle(ctx->out_handles[CommandMetaData::NumOutHandles + i].handle); } } - + for (unsigned int i = 0; i < num_out_objects; i++) { ctx->out_objs[i] = nullptr; } }; - + if (R_SUCCEEDED(rc)) { auto args = Decoder::Decode(ctx); - + if constexpr (CommandMetaData::ReturnsResult) { rc = std::apply( [=](auto&&... args) { return (this_ptr->*IpcCommandImpl)(args...); }, args); } else { std::apply( [=](auto&&... args) { (this_ptr->*IpcCommandImpl)(args...); }, args); } - + if (R_SUCCEEDED(rc)) { std::apply(Encoder::EncodeSuccess, std::tuple_cat(std::make_tuple(ctx), args)); } else { @@ -645,7 +645,7 @@ constexpr Result WrapIpcCommandImpl(IpcResponseContext *ctx) { } else { std::apply(Encoder::EncodeFailure, std::tuple_cat(std::make_tuple(ctx), std::make_tuple(rc))); } - + return rc; } @@ -661,4 +661,4 @@ inline static constexpr ServiceCommandMeta MakeServiceCommandMeta() { }; -#pragma GCC diagnostic pop \ No newline at end of file +#pragma GCC diagnostic pop diff --git a/stratosphere/libstratosphere/include/stratosphere/ipc/ipc_templating_old.hpp b/stratosphere/libstratosphere/include/stratosphere/ipc/ipc_templating_old.hpp index 68e80a347..3b9c4960d 100644 --- a/stratosphere/libstratosphere/include/stratosphere/ipc/ipc_templating_old.hpp +++ b/stratosphere/libstratosphere/include/stratosphere/ipc/ipc_templating_old.hpp @@ -13,18 +13,18 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - + #pragma once #include #include #include #include -#include "../boost/callable_traits.hpp" +#include #include #include "domainowner.hpp" -#pragma GCC diagnostic push +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-but-set-variable" /* Base for In/Out Buffers. */ @@ -39,7 +39,7 @@ struct InBuffer : InBufferBase { size_t num_elements; BufferType type; static const BufferType expected_type = e_t; - + InBuffer(void *b, size_t n, BufferType t) : buffer((T *)b), num_elements(n/sizeof(T)), type(t) { } }; @@ -52,7 +52,7 @@ struct OutBuffer : OutBufferBase { size_t num_elements; BufferType type; static const BufferType expected_type = e_t; - + OutBuffer(void *b, size_t n, BufferType t) : buffer((T *)b), num_elements(n/sizeof(T)), type(t) { } }; @@ -61,18 +61,18 @@ template struct InPointer : IpcBufferBase { T *pointer; size_t num_elements; - + InPointer(void *p, size_t n) : pointer((T *)p), num_elements(n/sizeof(T)) { } }; /* Represents a C descriptor. */ struct OutPointerWithServerSizeBase : IpcBufferBase {}; - + template struct OutPointerWithServerSize : OutPointerWithServerSizeBase { T *pointer; static const size_t num_elements = n; - + OutPointerWithServerSize(void *p) : pointer((T *)p) { } }; @@ -81,28 +81,28 @@ template struct OutPointerWithClientSize : IpcBufferBase { T *pointer; size_t num_elements; - + OutPointerWithClientSize(void *p, size_t n) : pointer((T *)p), num_elements(n/sizeof(T)) { } }; /* Represents an input PID. */ struct PidDescriptor { u64 pid; - + PidDescriptor(u64 p) : pid(p) { } }; /* Represents a moved handle. */ struct MovedHandle { Handle handle; - + MovedHandle(Handle h) : handle(h) { } }; /* Represents a copied handle. */ struct CopiedHandle { Handle handle; - + CopiedHandle(Handle h) : handle(h) { } }; @@ -117,7 +117,7 @@ template struct OutSession : OutSessionBase { ISession *session; u32 domain_id; - + OutSession(ISession *s) : session(s), domain_id(DOMAIN_ID_MAX) { } }; @@ -306,16 +306,16 @@ template struct Validator> { IpcParsedCommand &r; size_t pointer_buffer_size; - + Result operator()() { if (r.RawSize < size_in_raw_data_with_out_pointers_for_arguments::value) { return 0xF601; } - + if (r.NumBuffers != num_inoutbuffers_in_arguments::value) { return 0xF601; } - + if (r.NumStatics != num_inpointers_in_arguments::value) { return 0xF601; } @@ -323,32 +323,32 @@ struct Validator> { if (r.NumStaticsOut != num_outpointers_in_arguments::value) { return 0xF601; } - + if (r.NumHandles != num_handles_in_arguments::value) { return 0xF601; } - + constexpr size_t num_pids = num_pids_in_arguments::value; - + static_assert(num_pids <= 1, "Number of PID descriptors in IpcCommandImpl cannot be > 1"); - + if ((r.HasPid && num_pids == 0) || (!r.HasPid && num_pids)) { return 0xF601; } - + if (((u32 *)r.Raw)[0] != SFCI_MAGIC) { return 0xF601; } - + size_t a_index = 0, b_index = num_inbuffers_in_arguments::value, x_index = 0, c_index = 0, h_index = 0; size_t cur_rawdata_index = 4; size_t cur_c_size_offset = 0x10 + size_in_raw_data_for_arguments::value + (0x10 - ((uintptr_t)r.Raw - (uintptr_t)r.RawWithoutPadding)); size_t total_c_size = 0; - + if (!(ValidateIpcParsedCommandArgument(r, cur_rawdata_index, cur_c_size_offset, a_index, b_index, x_index, c_index, h_index, total_c_size) && ...)) { return 0xF601; } - + if (total_c_size > pointer_buffer_size) { return 0xF601; } @@ -383,7 +383,7 @@ struct Encoder; template constexpr size_t GetAndUpdateOffsetIntoRawData(DomainOwner *domain_owner, size_t& offset) { auto old = offset; - + if (old == 0) { offset += sizeof(u64); } else { @@ -392,8 +392,8 @@ constexpr size_t GetAndUpdateOffsetIntoRawData(DomainOwner *domain_owner, size_t offset += sizeof(u32); } } else { - offset += size_in_raw_data::value; - } + offset += size_in_raw_data::value; + } } return old; @@ -439,17 +439,17 @@ void EncodeValueIntoIpcMessageAfterPrepare(DomainOwner *domain_owner, u8 *cur_ou template struct Encoder> { IpcCommand &out_command; - + auto operator()(DomainOwner *domain_owner, Args... args) { static_assert(sizeof...(Args) > 0, "IpcCommandImpls must return std::tuple"); size_t offset = 0; - + u8 *tls = (u8 *)armGetTls(); - + std::fill(tls, tls + 0x100, 0x00); - + ((EncodeValueIntoIpcMessageBeforePrepare(domain_owner, &out_command, args)), ...); - + /* Remove the extra space resulting from first Result type. */ struct { u64 magic; @@ -463,16 +463,16 @@ struct Encoder> { *resp_header = {0}; resp_header->NumObjectIds = num_out_sessions_in_arguments::value; } - - + + raw->magic = SFCO_MAGIC; - + u8 *raw_data = (u8 *)&raw->result; - + ((EncodeValueIntoIpcMessageAfterPrepare(domain_owner, raw_data + GetAndUpdateOffsetIntoRawData(domain_owner, offset), args)), ...); - + Result rc = raw->result; - + if (R_FAILED(rc)) { std::fill(tls, tls + 0x100, 0x00); ipcInitialize(&out_command); @@ -486,7 +486,7 @@ struct Encoder> { raw->magic = SFCO_MAGIC; raw->result = rc; } - + return rc; } }; @@ -497,20 +497,20 @@ Result WrapDeferredIpcCommandImpl(Class *this_ptr, Args... args) { using InArgs = typename boost::callable_traits::args_t; using InArgsWithoutThis = typename pop_front::type; using OutArgs = typename boost::callable_traits::return_type_t; - + static_assert(is_specialization_of::value, "IpcCommandImpls must return std::tuple"); static_assert(std::is_same_v, Result>, "IpcCommandImpls must return std::tuple"); static_assert(std::is_same_v>, "Invalid Deferred Wrapped IpcCommandImpl arguments!"); - + IpcCommand out_command; - + ipcInitialize(&out_command); auto tuple_args = std::make_tuple(args...); auto result = std::apply( [=](auto&&... a) { return (this_ptr->*IpcCommandImpl)(a...); }, tuple_args); - + DomainOwner *down = NULL; - + return std::apply(Encoder{out_command}, std::tuple_cat(std::make_tuple(down), result)); } @@ -519,25 +519,25 @@ Result WrapIpcCommandImpl(Class *this_ptr, IpcParsedCommand& r, IpcCommand &out_ using InArgs = typename boost::callable_traits::args_t; using InArgsWithoutThis = typename pop_front::type; using OutArgs = typename boost::callable_traits::return_type_t; - + static_assert(is_specialization_of::value, "IpcCommandImpls must return std::tuple"); static_assert(std::is_same_v, Result>, "IpcCommandImpls must return std::tuple"); - + ipcInitialize(&out_command); Result rc = Validator{r, pointer_buffer_size}(); - + if (R_FAILED(rc)) { return 0xF601; } - auto args = Decoder::Decode(r, out_command, pointer_buffer); + auto args = Decoder::Decode(r, out_command, pointer_buffer); auto result = std::apply( [=](auto&&... args) { return (this_ptr->*IpcCommandImpl)(args...); }, args); DomainOwner *down = NULL; if (r.IsDomainRequest) { down = this_ptr->get_owner(); } - + return std::apply(Encoder{out_command}, std::tuple_cat(std::make_tuple(down), result)); } @@ -545,22 +545,22 @@ template Result WrapStaticIpcCommandImpl(IpcParsedCommand& r, IpcCommand &out_command, u8 *pointer_buffer, size_t pointer_buffer_size) { using InArgs = typename boost::callable_traits::args_t; using OutArgs = typename boost::callable_traits::return_type_t; - + static_assert(is_specialization_of::value, "IpcCommandImpls must return std::tuple"); static_assert(std::is_same_v, Result>, "IpcCommandImpls must return std::tuple"); - + ipcInitialize(&out_command); Result rc = Validator{r, pointer_buffer_size}(); - + if (R_FAILED(rc)) { return 0xF601; } - auto args = Decoder::Decode(r, out_command, pointer_buffer); + auto args = Decoder::Decode(r, out_command, pointer_buffer); auto result = std::apply(IpcCommandImpl, args); DomainOwner *down = NULL; - + return std::apply(Encoder{out_command}, std::tuple_cat(std::make_tuple(down), result)); }