libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::create_direct< P, InpWk, FnType, FnPtr > Struct Template Reference

This library-internal class just creates a thread_wk_t for the user's closure_base-derived closure. More...

#include <dsel_core_work_creation.hpp>

Public Types

typedef P pool_traits_type
 
typedef pool_traits_type::os_traits os_traits
 
typedef pool_traits_type::cfg_type cfg_type
 
typedef get_process_fn_traits< InpWk, FnType, cfg_type >::type process_fn_traits
 
typedef process_fn_traits::result_type result_type
 
typedef process_fn_traits::process_fn_ptr process_fn_ptr
 
typedef process_fn_traits::type::template queue_item< FnPtr >::result closure_t
 

Detailed Description

template<class P, class InpWk, class FnType, FnType FnPtr>
struct jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::create_direct< P, InpWk, FnType, FnPtr >

This library-internal class just creates a thread_wk_t for the user's closure_base-derived closure.

Note: one cannot give "exception-specifications" to non-joinable work, as you can't call get_results() on it, because the non-joinable transfer doesn't return an execution_context. (A constructor isn't used because you can't return a value from the constructor, and a member-template isn't used because of MSVC++ v12.00.8168 compiler limitations.)

Parameters
InpWkThe closure_base-derived closure should contain a non-overloaded function called process() or process(result_type &), possibly const-qualified.
See also
thread_wk_t

Definition at line 159 of file dsel_core_work_creation.hpp.

Member Typedef Documentation

◆ cfg_type

template<class P , class InpWk , class FnType , FnType FnPtr>
typedef pool_traits_type::cfg_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::create_direct< P, InpWk, FnType, FnPtr >::cfg_type

Definition at line 162 of file dsel_core_work_creation.hpp.

◆ closure_t

template<class P , class InpWk , class FnType , FnType FnPtr>
typedef process_fn_traits::type::template queue_item<FnPtr>::result jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::create_direct< P, InpWk, FnType, FnPtr >::closure_t

Definition at line 169 of file dsel_core_work_creation.hpp.

◆ os_traits

template<class P , class InpWk , class FnType , FnType FnPtr>
typedef pool_traits_type::os_traits jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::create_direct< P, InpWk, FnType, FnPtr >::os_traits

Definition at line 161 of file dsel_core_work_creation.hpp.

◆ pool_traits_type

template<class P , class InpWk , class FnType , FnType FnPtr>
typedef P jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::create_direct< P, InpWk, FnType, FnPtr >::pool_traits_type

Definition at line 160 of file dsel_core_work_creation.hpp.

◆ process_fn_ptr

template<class P , class InpWk , class FnType , FnType FnPtr>
typedef process_fn_traits::process_fn_ptr jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::create_direct< P, InpWk, FnType, FnPtr >::process_fn_ptr

Definition at line 168 of file dsel_core_work_creation.hpp.

◆ process_fn_traits

template<class P , class InpWk , class FnType , FnType FnPtr>
typedef get_process_fn_traits<InpWk, FnType, cfg_type>::type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::create_direct< P, InpWk, FnType, FnPtr >::process_fn_traits
Todo:
It would be good to make use of the is_const member to determine if the mutation is pure. If so then all sorts of nice things could be done like memoization of the result of the mutation, i.e. place this object type into a hash_map at compile-time, and place the result into there too, and for later mutations of the same object instance to short-cut needing to do all the using a thread to generate the result malarky, as long as we save the object instance state sufficiently.

Definition at line 166 of file dsel_core_work_creation.hpp.

◆ result_type

template<class P , class InpWk , class FnType , FnType FnPtr>
typedef process_fn_traits::result_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::create_direct< P, InpWk, FnType, FnPtr >::result_type

Definition at line 167 of file dsel_core_work_creation.hpp.


The documentation for this struct was generated from the following file: