jaulib v1.3.0
Jau Support Library (C++, Java, ..)
|
#include <cstring>
#include <string>
#include <memory>
#include <cstdint>
#include <type_traits>
#include <functional>
#include <jau/basic_types.hpp>
#include <jau/cpp_lang_util.hpp>
#include <jau/debug.hpp>
Go to the source code of this file.
Classes | |
class | jau::func::capref_target_t< R, I, A > |
func::capref_target_t implementation for functions using a reference to a captured value, identifiable as func::target_type::capref via jau::function<R(A...)>::type(). More... | |
class | jau::func::capval_target_t< R, I, A > |
func::capval_target_t implementation for functions using a copy of a captured value, identifiable as func::target_type::capval via jau::function<R(A...)>::type(). More... | |
class | jau::func::delegate_t< R, A > |
Delegated target function object, providing a fast path target function invocation. More... | |
class | jau::func::free_target_t< R, A > |
func::free_target_t implementation for free functions, identifiable as func::target_type::free via jau::function<R(A...)>::type(). More... | |
class | jau::function< R(A...)> |
Class template jau::function is a general-purpose static-polymorphic function wrapper. More... | |
class | jau::func::lambda_target_t< R, L, A > |
func::lambda_target_t implementation for lambda closures, identifiable as func::target_type::lambda via jau::function<R(A...)>::type(). More... | |
class | jau::func::member_target_t< R, C0, C1, A > |
func::member_target_t implementation for class member functions, identifiable as func::target_type::member via jau::function<R(A...)>::type(). More... | |
class | jau::func::null_target_t< R, A > |
func::null_target_t implementation for no function. More... | |
class | jau::func::std_target_t< R, A > |
func::std_target_t implementation for std::function instances, identifiable as func::target_type::std via jau::function<R(A...)>::type(). More... | |
class | jau::func::ylambda_target_t< R, L, A > |
func::ylambda_target_t is a Y combinator and deducing this implementation for lambda closures usable for recursive algorithms. More... | |
Namespaces | |
namespace | jau |
__pack(...): Produces MSVC, clang and gcc compatible lead-in and -out macros. | |
namespace | jau::func |
Enumerations | |
enum class | jau::func::target_type : uint32_t { jau::func::target_type::null = 0 , jau::func::target_type::member = 1 , jau::func::target_type::free = 2 , jau::func::target_type::lambda = 3 , jau::func::target_type::ylambda = 4 , jau::func::target_type::capval = 5 , jau::func::target_type::capref = 6 , jau::func::target_type::std = 7 } |
func::target_type identifier for the target function delegate_t<R, A...> object, exposed by jau::function<R(A...)>::type(). More... | |
Functions | |
template<typename R , typename I , typename... A> | |
jau::function< R(A...)> | jau::bind_capref (I *data_ptr, R(*func)(I *, A...)) noexcept |
Bind given data by passing the captured reference (pointer) to the value and non-void function to an anonymous function using func::capref_target_t. More... | |
template<typename I , typename... A> | |
jau::function< void(A...)> | jau::bind_capref (I *data_ptr, void(*func)(I *, A...)) noexcept |
Bind given data by passing the captured reference (pointer) to the value and void function to an anonymous function using func::capref_target_t. More... | |
template<typename R , typename I , typename... A> | |
jau::function< R(A...)> | jau::bind_capval (const I &data, R(*func)(I &, A...)) noexcept |
Bind given data by copying the captured value and the given non-void function to an anonymous function using func::capval_target_t. More... | |
template<typename I , typename... A> | |
jau::function< void(A...)> | jau::bind_capval (const I &data, void(*func)(I &, A...)) noexcept |
Bind given data by copying the captured value and the given void function to an anonymous function using func::capval_target_t. More... | |
template<typename R , typename I , typename... A> | |
jau::function< R(A...)> | jau::bind_capval (I &&data, R(*func)(I &, A...)) noexcept |
Bind given data by moving the captured value and copying the given non-void function to an anonymous function using func::capval_target_t. More... | |
template<typename I , typename... A> | |
jau::function< void(A...)> | jau::bind_capval (I &&data, void(*func)(I &, A...)) noexcept |
Bind given data by moving the captured value and copying the given void function to an anonymous function using func::capval_target_t. More... | |
template<typename R , typename... A> | |
jau::function< R(A...)> | jau::bind_free (R(*func)(A...)) noexcept |
Bind given non-void free-function to an anonymous function using func::free_target_t. More... | |
template<typename... A> | |
jau::function< void(A...)> | jau::bind_free (void(*func)(A...)) noexcept |
Bind given void free-function to an anonymous function using func::free_target_t. More... | |
template<typename R , typename C , typename... A> | |
jau::function< R(A...)> | jau::bind_member (C *base, R(C::*mfunc)(A...)) noexcept |
Bind given class instance and non-void member function to an anonymous function using func_member_targer_t. More... | |
template<typename C , typename... A> | |
jau::function< void(A...)> | jau::bind_member (C *base, void(C::*mfunc)(A...)) noexcept |
Bind given class instance and void member function to an anonymous function using func_member_targer_t. More... | |
template<typename R , typename C0 , typename C1 , typename... A> | |
jau::function< R(A...)> | jau::bind_member (C1 *base, R(C0::*mfunc)(A...)) noexcept |
Bind given class instance and non-void member function to an anonymous function using func_member_targer_t. More... | |
template<typename C0 , typename C1 , typename... A> | |
jau::function< void(A...)> | jau::bind_member (C1 *base, void(C0::*mfunc)(A...)) noexcept |
Bind given class instance and void member function to an anonymous function using func_member_targer_t. More... | |
template<typename R , typename... A> | |
jau::function< R(A...)> | jau::bind_std (uint64_t id, std::function< R(A...)> func) noexcept |
Bind given non-void std::function to an anonymous function using func::std_target_t. More... | |
template<typename... A> | |
jau::function< void(A...)> | jau::bind_std (uint64_t id, std::function< void(A...)> func) noexcept |
Bind given void std::function to an anonymous function using func::std_target_t. More... | |
constexpr uint32_t | jau::number (const func::target_type rhs) noexcept |
template<class R , class... A> | |
bool | jau::operator!= (const function< R(A...)> &lhs, std::nullptr_t) noexcept |
Unequal operator of jau::function<R(A...)> with a right-hand-side nullptr. More... | |
template<typename Rl , typename... Al, template< typename... > typename Fl = function, typename Rr , typename... Ar, template< typename... > typename Fr = function> | |
bool | jau::operator!= (const function< Rl(Al...)> &lhs, const function< Rr(Ar...)> &rhs) noexcept |
Unequal operator using two jau::function<R(A...)> types for both arguments. More... | |
template<class R , class... A> | |
bool | jau::operator!= (std::nullptr_t, const function< R(A...)> &rhs) noexcept |
Unequal operator of jau::function<R(A...)> with a left-hand-side nullptr. More... | |
template<class R , class... A> | |
bool | jau::operator== (const function< R(A...)> &lhs, std::nullptr_t) noexcept |
Equal operator of jau::function<R(A...)> with a right-hand-side nullptr. More... | |
template<typename Rl , typename... Al, template< typename... > class Fl = function, typename Rr , typename... Ar, template< typename... > class Fr = function, std::enable_if_t< !std::is_same_v< Fl< Rl(Al...)>, Fr< Rr(Ar...)> >, bool > = true> | |
bool | jau::operator== (const function< Rl(Al...)> &lhs, const function< Rr(Ar...)> &rhs) noexcept |
Equal operator using different jau::function<R(A...)> return and argument types for both arguments, always returns false. More... | |
template<class R , class... A> | |
bool | jau::operator== (std::nullptr_t, const function< R(A...)> &rhs) noexcept |
Equal operator of jau::function<R(A...)> with a left-hand-side nullptr. More... | |
std::string | jau::to_string (const func::target_type v) noexcept |