c++-gtk-utils
|
This namespace provides classes for type erasure. More...
Classes | |
class | CallbackArg |
The callback interface class. More... | |
class | FunctorArg |
Functor class holding a Callback::CallbackArg object. More... | |
class | SafeFunctorArg |
Functor class holding a Callback::CallbackArg object, with thread-safe reference count. More... | |
class | Callback0 |
class | Callback1 |
class | Callback2 |
class | Callback3 |
class | Callback4 |
class | Callback5 |
class | Callback0_const |
class | Callback1_const |
class | Callback2_const |
class | Callback3_const |
class | Callback4_const |
class | Callback5_const |
class | Callback0_static |
class | Callback1_static |
class | Callback2_static |
class | Callback3_static |
class | Callback4_static |
class | Callback5_static |
class | Callback_lambda |
Typedefs | |
typedef CallbackArg | Callback |
typedef FunctorArg | Functor |
typedef SafeFunctorArg | SafeFunctor |
Functions | |
template<class... T> | |
bool | operator== (const FunctorArg< T...> &f1, const FunctorArg< T...> &f2) noexcept |
template<class... T> | |
bool | operator!= (const FunctorArg< T...> &f1, const FunctorArg< T...> &f2) noexcept |
template<class... T> | |
bool | operator< (const FunctorArg< T...> &f1, const FunctorArg< T...> &f2) |
template<class... T> | |
bool | operator== (const SafeFunctorArg< T...> &f1, const SafeFunctorArg< T...> &f2) noexcept |
template<class... T> | |
bool | operator!= (const SafeFunctorArg< T...> &f1, const SafeFunctorArg< T...> &f2) noexcept |
template<class... T> | |
bool | operator< (const SafeFunctorArg< T...> &f1, const SafeFunctorArg< T...> &f2) |
template<class T , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (T &t, void(T::*func)(FreeArgs...)) |
template<class T , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (T &t, void(T::*func)(FreeArgs...)) |
template<class T , class BoundArg , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (T &t, void(T::*func)(BoundArg, FreeArgs...), BoundArg arg) |
template<class T , class BoundArg , class Arg , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (T &t, void(T::*func)(BoundArg, FreeArgs...), Arg &&arg) |
template<class T , class BoundArg1 , class BoundArg2 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (T &t, void(T::*func)(BoundArg1, BoundArg2, FreeArgs...), BoundArg1 arg1, BoundArg2 arg2) |
template<class T , class BoundArg1 , class BoundArg2 , class Arg1 , class Arg2 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (T &t, void(T::*func)(BoundArg1, BoundArg2, FreeArgs...), Arg1 &&arg1, Arg2 &&arg2) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...), BoundArg1 arg1, BoundArg2 arg2, BoundArg3 arg3) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class Arg1 , class Arg2 , class Arg3 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...), Arg1 &&arg1, Arg2 &&arg2, Arg3 &&arg3) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...), BoundArg1 arg1, BoundArg2 arg2, BoundArg3 arg3, BoundArg4 arg4) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...), Arg1 &&arg1, Arg2 &&arg2, Arg3 &&arg3, Arg4 &&arg4) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class BoundArg5 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...), BoundArg1 arg1, BoundArg2 arg2, BoundArg3 arg3, BoundArg4 arg4, BoundArg5 arg5) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class BoundArg5 , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...), Arg1 &&arg1, Arg2 &&arg2, Arg3 &&arg3, Arg4 &&arg4, Arg5 &&arg5) |
template<class T , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (const T &t, void(T::*func)(FreeArgs...) const) |
template<class T , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (const T &t, void(T::*func)(FreeArgs...) const) |
template<class T , class BoundArg , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (const T &t, void(T::*func)(BoundArg, FreeArgs...) const, BoundArg arg) |
template<class T , class BoundArg , class Arg , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (const T &t, void(T::*func)(BoundArg, FreeArgs...) const, Arg &&arg) |
template<class T , class BoundArg1 , class BoundArg2 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (const T &t, void(T::*func)(BoundArg1, BoundArg2, FreeArgs...) const, BoundArg1 arg1, BoundArg2 arg2) |
template<class T , class BoundArg1 , class BoundArg2 , class Arg1 , class Arg2 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (const T &t, void(T::*func)(BoundArg1, BoundArg2, FreeArgs...) const, Arg1 &&arg1, Arg2 &&arg2) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (const T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...) const, BoundArg1 arg1, BoundArg2 arg2, BoundArg3 arg3) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class Arg1 , class Arg2 , class Arg3 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (const T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...) const, Arg1 &&arg1, Arg2 &&arg2, Arg3 &&arg3) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (const T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...) const, BoundArg1 arg1, BoundArg2 arg2, BoundArg3 arg3, BoundArg4 arg4) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (const T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...) const, Arg1 &&arg1, Arg2 &&arg2, Arg3 &&arg3, Arg4 &&arg4) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class BoundArg5 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (const T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...) const, BoundArg1 arg1, BoundArg2 arg2, BoundArg3 arg3, BoundArg4 arg4, BoundArg5 arg5) |
template<class T , class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class BoundArg5 , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (const T &t, void(T::*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...) const, Arg1 &&arg1, Arg2 &&arg2, Arg3 &&arg3, Arg4 &&arg4, Arg5 &&arg5) |
template<class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (void(*func)(FreeArgs...)) |
template<class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (void(*func)(FreeArgs...)) |
template<class BoundArg , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (void(*func)(BoundArg, FreeArgs...), BoundArg arg) |
template<class BoundArg , class Arg , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (void(*func)(BoundArg, FreeArgs...), Arg &&arg) |
template<class BoundArg1 , class BoundArg2 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (void(*func)(BoundArg1, BoundArg2, FreeArgs...), BoundArg1 arg1, BoundArg2 arg2) |
template<class BoundArg1 , class BoundArg2 , class Arg1 , class Arg2 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (void(*func)(BoundArg1, BoundArg2, FreeArgs...), Arg1 &&arg1, Arg2 &&arg2) |
template<class BoundArg1 , class BoundArg2 , class BoundArg3 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (void(*func)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...), BoundArg1 arg1, BoundArg2 arg2, BoundArg3 arg3) |
template<class BoundArg1 , class BoundArg2 , class BoundArg3 , class Arg1 , class Arg2 , class Arg3 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (void(*func)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...), Arg1 &&arg1, Arg2 &&arg2, Arg3 &&arg3) |
template<class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (void(*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...), BoundArg1 arg1, BoundArg2 arg2, BoundArg3 arg3, BoundArg4 arg4) |
template<class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (void(*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...), Arg1 &&arg1, Arg2 &&arg2, Arg3 &&arg3, Arg4 &&arg4) |
template<class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class BoundArg5 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (void(*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...), BoundArg1 arg1, BoundArg2 arg2, BoundArg3 arg3, BoundArg4 arg4, BoundArg5 arg5) |
template<class BoundArg1 , class BoundArg2 , class BoundArg3 , class BoundArg4 , class BoundArg5 , class Arg1 , class Arg2 , class Arg3 , class Arg4 , class Arg5 , class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (void(*func)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...), Arg1 &&arg1, Arg2 &&arg2, Arg3 &&arg3, Arg4 &&arg4, Arg5 &&arg5) |
template<class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (const std::function< void(FreeArgs...)> &f) |
template<class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (const std::function< void(FreeArgs...)> &f) |
template<class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make (std::function< void(FreeArgs...)> &&f) |
template<class... FreeArgs> | |
CallbackArg< FreeArgs...> * | make_ref (std::function< void(FreeArgs...)> &&f) |
template<class... FreeArgs, class Lambda > | |
CallbackArg< FreeArgs...> * | lambda (Lambda &&l) |
void | post (const Callback *cb, gint priority=G_PRIORITY_DEFAULT_IDLE, GMainContext *context=0) |
void | post (const Callback *cb, Releaser &r, gint priority=G_PRIORITY_DEFAULT_IDLE, GMainContext *context=0) |
template<class F , class = typename std::enable_if<!std::is_convertible<typename std::remove_reference<F>::type, const Callback*>::value>::type> | |
void | post (F &&func, gint priority=G_PRIORITY_DEFAULT_IDLE, GMainContext *context=0) |
template<class F , class = typename std::enable_if<!std::is_convertible<typename std::remove_reference<F>::type, const Callback*>::value>::type> | |
void | post (F &&func, Releaser &r, gint priority=G_PRIORITY_DEFAULT_IDLE, GMainContext *context=0) |
This namespace provides classes for type erasure.
#include <c++-gtk-utils/callback.h>
These classes provide type erasure on callable objects. They comprise a generic callback creation and execution interface for closures. There is a basic Callback::Callback type, which is an entire closure or 'thunk', where all values are bound into the object, and is completely opaque. Callback::CallbackArg<T...> is a class which takes unbound arguments of the template types when the object is dispatched. (The opaque Callback::Callback type is a typedef for Callback::CallbackArg<>: the two types are interchangeable.)
The classes are normally constructed using the Callback::lambda() factory function, which takes any callable object such as a lambda expression or the return value of std::bind and returns a pointer to a Callback or CallbackArg object. When using Callback::lambda(), the unbound arguments (if any) must be passed as explicit template parameters.
Callback/CallbackArg objects can also be constructed using the Callback::make() and Callback::make_ref() factory functions, which can be useful where invoking standalone functions or object methods.
The Callback::make() and Callback::make_ref() functions construct a Callback/CallbackArg object from a function pointer (or an object reference and member function pointer) together with bound arguments. They provide for a maximum of five bound arguments, and the unbound arguments (if any) must be the last (trailing) arguments of the relevant function or method to be called.
Callback::make() does a direct type mapping from the bound arguments of the function or method represented by the callback object to the arguments stored by it and is for use when all bound arguments are simple fundamental types such as pointers (including C strings), integers or floating points.
Callback::make_ref() is for use where bound arguments include class types or one or more of the types of the bound arguments include a const reference. It will accomplish perfect forwarding (by lvalue reference or rvalue reference) when constructing the callback and will also ensure that a copy of any object to be passed by const reference (as well as any taken by value) is kept in order to avoid dangling references. Note however that where a member function is called, the object of which the target function is a member must still be in existence when the Callback/CallbackArg object is dispatched and, unlike Callback::make(), Callback::make_ref() cannot be used with overloaded functions except with explicit disambiguation.
Callback::make() can also construct a Callback/CallbackArg object from a std::function object.
Functor/FunctorArg objects hold a Callback/CallbackArg object by SharedPtr to enable them to be shared by reference counting, and SafeFunctor/SafeFunctorArg objects hold them by SharedLockPtr, which have a thread safe reference count so that they may be shared between different threads. These classes also have an operator()() method so as to be callable with function syntax.
If the library is installed using the --with-glib-memory-slices-no-compat configuration option, any Callback/CallbackArg object will be constructed in glib memory slices rather than in the generic C++ free store.
Using Callback::lambda():
Using Callback::make(), with a class object my_obj of type MyClass, with a method void MyClass::my_method(int, int, const char*):
Using Callback::make_ref(), with a class object my_obj of type MyClass, with a method void MyClass::my_method(int, const Something&):
This namespace also provides a Callback::post() function which will execute a callback in a glib main loop and can be used (amongst other things) to pass an event from a worker thread to the main program thread. In that respect, it provides an alternative to the Notifier class. It is passed either a pointer to a Callback::Callback object created with a call to Callback::lambda() (or Callback::make() or Callback::make_ref()), or it can be passed a callable object and the implementation will call Callback::lambda() for you.
To provide for thread-safe automatic disconnection of the callback if the callback represents or calls into a non-static method of an object which may be destroyed before the callback executes in the main loop, include a Releaser as a public member of that object and pass the Releaser object as the second argument of Callback::post(). Note that for this to be race free, the lifetime of the remote object whose method is to be invoked must be determined by the thread to whose main loop the callback has been attached. When the main loop begins invoking the execution of the callback, the remote object must either wholly exist (in which case the callback will be invoked) or have been destroyed (in which case the callback will be ignored), and not be in some transient half-state governed by another thread.
Advantages as against Notifier:
Disadvantages as against Notifier:
typedef CallbackArg Cgu::Callback::Callback |
typedef FunctorArg Cgu::Callback::Functor |
CallbackArg<FreeArgs...>* Cgu::Callback::lambda | ( | Lambda && | l) |
A convenience function to make Callback::CallbackArg objects from C++11 lambda expressions, or from any other arbitrary callable object. The types of the unbound arguments (if any) must be explicitly specified as template parameters, as they cannot be deduced. From version 2.0.10, this function can be called for lambda expressions which are declared mutable (in version 2.0.9, this function could only be called for non-mutable lambda expressions). From version 2.0.16, this function can be passed callable objects which are lvalues as well as rvalues (prior to version 2.0.16, it could only be passed callable objects which are rvalues).
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of an object captured by the lambda expression throws. |
Since 2.0.9
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | T & | t, |
void(T::*)(FreeArgs...) | func | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case. This exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option (instead glib will terminate the program if it is unable to obtain memory from the operating system). |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | T & | t, |
void(T::*)(BoundArg, FreeArgs...) | func, | ||
BoundArg | arg | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | T & | t, |
void(T::*)(BoundArg1, BoundArg2, FreeArgs...) | func, | ||
BoundArg1 | arg1, | ||
BoundArg2 | arg2 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...) | func, | ||
BoundArg1 | arg1, | ||
BoundArg2 | arg2, | ||
BoundArg3 | arg3 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...) | func, | ||
BoundArg1 | arg1, | ||
BoundArg2 | arg2, | ||
BoundArg3 | arg3, | ||
BoundArg4 | arg4 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...) | func, | ||
BoundArg1 | arg1, | ||
BoundArg2 | arg2, | ||
BoundArg3 | arg3, | ||
BoundArg4 | arg4, | ||
BoundArg5 | arg5 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | const T & | t, |
void(T::*)(FreeArgs...) const | func | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case. This exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option (instead glib will terminate the program if it is unable to obtain memory from the operating system). |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | const T & | t, |
void(T::*)(BoundArg, FreeArgs...) const | func, | ||
BoundArg | arg | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | const T & | t, |
void(T::*)(BoundArg1, BoundArg2, FreeArgs...) const | func, | ||
BoundArg1 | arg1, | ||
BoundArg2 | arg2 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | const T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...) const | func, | ||
BoundArg1 | arg1, | ||
BoundArg2 | arg2, | ||
BoundArg3 | arg3 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | const T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...) const | func, | ||
BoundArg1 | arg1, | ||
BoundArg2 | arg2, | ||
BoundArg3 | arg3, | ||
BoundArg4 | arg4 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | const T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...) const | func, | ||
BoundArg1 | arg1, | ||
BoundArg2 | arg2, | ||
BoundArg3 | arg3, | ||
BoundArg4 | arg4, | ||
BoundArg5 | arg5 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | void(*)(FreeArgs...) | func) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case. This exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option (instead glib will terminate the program if it is unable to obtain memory from the operating system). |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | void(*)(BoundArg, FreeArgs...) | func, |
BoundArg | arg | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | void(*)(BoundArg1, BoundArg2, FreeArgs...) | func, |
BoundArg1 | arg1, | ||
BoundArg2 | arg2 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | void(*)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...) | func, |
BoundArg1 | arg1, | ||
BoundArg2 | arg2, | ||
BoundArg3 | arg3 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | void(*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...) | func, |
BoundArg1 | arg1, | ||
BoundArg2 | arg2, | ||
BoundArg3 | arg3, | ||
BoundArg4 | arg4 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | void(*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...) | func, |
BoundArg1 | arg1, | ||
BoundArg2 | arg2, | ||
BoundArg3 | arg3, | ||
BoundArg4 | arg4, | ||
BoundArg5 | arg5 | ||
) |
A convenience function to make Callback::CallbackArg objects
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | const std::function< void(FreeArgs...)> & | f) |
A convenience function to make Callback::CallbackArg objects from std::function objects.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make | ( | std::function< void(FreeArgs...)> && | f) |
A convenience function to make Callback::CallbackArg objects from std::function objects.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | T & | t, |
void(T::*)(FreeArgs...) | func | ||
) |
Since this function constructs a callback which does not take a bound argument, it is a synonym for make() (the two are identical).
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case. This exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option (instead glib will terminate the program if it is unable to obtain memory from the operating system). |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | T & | t, |
void(T::*)(BoundArg, FreeArgs...) | func, | ||
Arg && | arg | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | T & | t, |
void(T::*)(BoundArg1, BoundArg2, FreeArgs...) | func, | ||
Arg1 && | arg1, | ||
Arg2 && | arg2 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...) | func, | ||
Arg1 && | arg1, | ||
Arg2 && | arg2, | ||
Arg3 && | arg3 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...) | func, | ||
Arg1 && | arg1, | ||
Arg2 && | arg2, | ||
Arg3 && | arg3, | ||
Arg4 && | arg4 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...) | func, | ||
Arg1 && | arg1, | ||
Arg2 && | arg2, | ||
Arg3 && | arg3, | ||
Arg4 && | arg4, | ||
Arg5 && | arg5 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | const T & | t, |
void(T::*)(FreeArgs...) const | func | ||
) |
Since this function constructs a callback which does not take a bound argument, it is a synonym for make() (the two are identical).
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case. This exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option (instead glib will terminate the program if it is unable to obtain memory from the operating system). |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | const T & | t, |
void(T::*)(BoundArg, FreeArgs...) const | func, | ||
Arg && | arg | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | const T & | t, |
void(T::*)(BoundArg1, BoundArg2, FreeArgs...) const | func, | ||
Arg1 && | arg1, | ||
Arg2 && | arg2 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | const T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...) const | func, | ||
Arg1 && | arg1, | ||
Arg2 && | arg2, | ||
Arg3 && | arg3 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | const T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...) const | func, | ||
Arg1 && | arg1, | ||
Arg2 && | arg2, | ||
Arg3 && | arg3, | ||
Arg4 && | arg4 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | const T & | t, |
void(T::*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...) const | func, | ||
Arg1 && | arg1, | ||
Arg2 && | arg2, | ||
Arg3 && | arg3, | ||
Arg4 && | arg4, | ||
Arg5 && | arg5 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | void(*)(FreeArgs...) | func) |
Since this function constructs a callback which does not take a bound argument, it is a synonym for make() (the two are identical).
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case. This exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option (instead glib will terminate the program if it is unable to obtain memory from the operating system). |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | void(*)(BoundArg, FreeArgs...) | func, |
Arg && | arg | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | void(*)(BoundArg1, BoundArg2, FreeArgs...) | func, |
Arg1 && | arg1, | ||
Arg2 && | arg2 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | void(*)(BoundArg1, BoundArg2, BoundArg3, FreeArgs...) | func, |
Arg1 && | arg1, | ||
Arg2 && | arg2, | ||
Arg3 && | arg3 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | void(*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, FreeArgs...) | func, |
Arg1 && | arg1, | ||
Arg2 && | arg2, | ||
Arg3 && | arg3, | ||
Arg4 && | arg4 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | void(*)(BoundArg1, BoundArg2, BoundArg3, BoundArg4, BoundArg5, FreeArgs...) | func, |
Arg1 && | arg1, | ||
Arg2 && | arg2, | ||
Arg3 && | arg3, | ||
Arg4 && | arg4, | ||
Arg5 && | arg5 | ||
) |
An alternative function to make Callback::CallbackArg objects, which is for use where a target function either receives a class type bound argument by value, or receives a bound argument by reference to const in a case where the generated CallbackArg object is to store a copy of that argument instead of just keeping a reference.
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws. |
Since 2.0.0-rc3
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | const std::function< void(FreeArgs...)> & | f) |
A convenience function to make Callback::Callback objects from std::function objects. Since this function takes no bound argument (and bound arguments are bound into the std::function object), it is a synonym for make() (the two are identical).
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy constructor of a bound argument throws and it is not a reference argument. |
CallbackArg<FreeArgs...>* Cgu::Callback::make_ref | ( | std::function< void(FreeArgs...)> && | f) |
A convenience function to make Callback::Callback objects from std::function objects. Since this function takes no bound argument (and bound arguments are bound into the std::function object), it is a synonym for make() (the two are identical).
std::bad_alloc | It might throw std::bad_alloc if memory is exhausted and the system throws in that case (this exception will not be thrown if the library has been installed using the --with-glib-memory-slices-no-compat configuration option: instead glib will terminate the program if it is unable to obtain memory from the operating system). It will also throw if the copy or move constructor of a bound argument throws and it is not a reference argument. |
|
noexcept |
Two FunctorArg objects compare unequal if the addresses of the CallbackArg objects they contain are not the same. This comparison operator does not throw.
|
noexcept |
Two SafeFunctorArg objects compare unequal if the addresses of the CallbackArg objects they contain are not the same. This comparison operator does not throw.
bool Cgu::Callback::operator< | ( | const FunctorArg< T...> & | f1, |
const FunctorArg< T...> & | f2 | ||
) |
One FunctorArg object is less than another if the address of the CallbackArg object contained by the first is regarded by std::less as less than the address of the CallbackArg object contained by the other. This comparison operator does not throw unless std::less applied to pointer types throws (which it would not do with any sane implementation).
bool Cgu::Callback::operator< | ( | const SafeFunctorArg< T...> & | f1, |
const SafeFunctorArg< T...> & | f2 | ||
) |
One SafeFunctorArg object is less than another if the address of the CallbackArg object contained by the first is regarded by std::less as less than the address of the CallbackArg object contained by the other. This comparison operator does not throw unless std::less applied to pointer types throws (which it would not do with any sane implementation).
|
noexcept |
Two FunctorArg objects compare equal if the addresses of the CallbackArg objects they contain are the same. This comparison operator does not throw.
|
noexcept |
Two SafeFunctorArg objects compare equal if the addresses of the CallbackArg objects they contain are the same. This comparison operator does not throw.
void Cgu::Callback::post | ( | const Callback * | cb, |
gint | priority = G_PRIORITY_DEFAULT_IDLE , |
||
GMainContext * | context = 0 |
||
) |
Posts a callback for execution by a glib main loop. It is thread-safe provided that (if glib < 2.32 is used) g_thread_init() has been called. glib >= 2.32 does not require g_thread_init() to be called. This function will not throw.
cb | The callback object. Ownership is taken of this object, and it will be deleted when it has been finished with. |
priority | The priority to be given to the callback in the main loop. In ascending order of priorities, priorities are G_PRIORITY_LOW, G_PRIORITY_DEFAULT_IDLE, G_PRIORITY_HIGH_IDLE, G_PRIORITY_DEFAULT and G_PRIORITY_HIGH. The default is G_PRIORITY_DEFAULT_IDLE. This determines the order in which the callback will appear in the event list in the main loop, not the priority which the OS will adopt |
context | The glib main loop context in which the callback is to be executed (the default of NULL will cause the callback to be executed in the main program loop, and this is usually what is wanted). |
void Cgu::Callback::post | ( | const Callback * | cb, |
Releaser & | r, | ||
gint | priority = G_PRIORITY_DEFAULT_IDLE , |
||
GMainContext * | context = 0 |
||
) |
Posts a callback for execution by a glib main loop. It is thread-safe provided that (if glib < 2.32 is used) g_thread_init() has been called. glib >= 2.32 does not require g_thread_init() to be called. This function will not throw.
cb | The callback object. Ownership is taken of this object, and it will be deleted when it has been finished with. |
r | A Releaser object for automatic disconnection of the callback before it executes in the main loop (mainly relevant if the callback represents a non-static member function of an object which may be destroyed before the callback executes). |
priority | The priority to be given to the callback in the main loop. In ascending order of priorities, priorities are G_PRIORITY_LOW, G_PRIORITY_DEFAULT_IDLE, G_PRIORITY_HIGH_IDLE, G_PRIORITY_DEFAULT and G_PRIORITY_HIGH. The default is G_PRIORITY_DEFAULT_IDLE. This determines the order in which the callback will appear in the event list in the main loop, not the priority which the OS will adopt. |
context | The glib main loop context in which the callback is to be executed (the default of NULL will cause the callback to be executed in the main program loop, and this is usually what is wanted). |
std::bad_alloc | This function might throw std::bad_alloc if memory is exhausted and the system throws in that case. If it does so, the Callback object will be disposed of. |
Cgu::Thread::MutexError | This method might throw Cgu:Thread::MutexError if initialisation of the mutex in a SafeEmitterArg object constructed by this method fails. If it does so, the Callback object will be disposed of. (It is often not worth checking for this exception, as it means either memory is exhausted or pthread has run out of other resources to create new mutexes.) |
void Cgu::Callback::post | ( | F && | func, |
gint | priority = G_PRIORITY_DEFAULT_IDLE , |
||
GMainContext * | context = 0 |
||
) |
Posts a callable object for execution by a glib main loop. It is thread-safe provided that (if glib < 2.32 is used) g_thread_init() has been called. glib >= 2.32 does not require g_thread_init() to be called. This function will not throw unless the copy or move constructor of the callable object throws.
func | A callable object, such as formed by a lambda expression or the result of std::bind. It must be fully bound (that is, its must take no arguments when called). |
priority | The priority to be given to the callable object in the main loop. In ascending order of priorities, priorities are G_PRIORITY_LOW, G_PRIORITY_DEFAULT_IDLE, G_PRIORITY_HIGH_IDLE, G_PRIORITY_DEFAULT and G_PRIORITY_HIGH. The default is G_PRIORITY_DEFAULT_IDLE. This determines the order in which the callback will appear in the event list in the main loop, not the priority which the OS will adopt |
context | The glib main loop context in which the callable object is to be executed (the default of NULL will cause the callback to be executed in the main program loop, and this is usually what is wanted). |
Since 2.1.0
void Cgu::Callback::post | ( | F && | func, |
Releaser & | r, | ||
gint | priority = G_PRIORITY_DEFAULT_IDLE , |
||
GMainContext * | context = 0 |
||
) |
Posts a callable object for execution by a glib main loop. It is thread-safe provided that (if glib < 2.32 is used) g_thread_init() has been called. glib >= 2.32 does not require g_thread_init() to be called.
func | A callable object, such as formed by a lambda expression or the result of std::bind. It must be fully bound (that is, its must take no arguments when called). |
r | A Releaser object for automatic disconnection of the callback before it executes in the main loop (mainly relevant if the callback represents or calls into a non-static member function of an object which may be destroyed before the callback executes). |
priority | The priority to be given to the callback in the main loop. In ascending order of priorities, priorities are G_PRIORITY_LOW, G_PRIORITY_DEFAULT_IDLE, G_PRIORITY_HIGH_IDLE, G_PRIORITY_DEFAULT and G_PRIORITY_HIGH. The default is G_PRIORITY_DEFAULT_IDLE. This determines the order in which the callback will appear in the event list in the main loop, not the priority which the OS will adopt. |
context | The glib main loop context in which the callable object is to be executed (the default of NULL will cause the callback to be executed in the main program loop, and this is usually what is wanted). |
std::bad_alloc | This function might throw std::bad_alloc if memory is exhausted and the system throws in that case. |
Cgu::Thread::MutexError | This method might throw Cgu:Thread::MutexError if initialisation of the mutex in a SafeEmitterArg object constructed by this method fails. (It is often not worth checking for this exception, as it means either memory is exhausted or pthread has run out of other resources to create new mutexes.) |
Since 2.1.0