JSON RPC
JSON-RPC 2.0 library for C++
wwa::json_rpc::details Namespace Reference

Contains the implementation details of the JSON RPC library. More...

Classes

struct  function_traits
 Primary template for function traits. More...
 
struct  function_traits< R(*)(Args...) noexcept >
 Specialization for noexcept function pointers. More...
 
struct  function_traits< R(*)(Args...)>
 Specialization for function pointers. More...
 
struct  function_traits< R(C::*)(Args...) const >
 Specialization for const member function pointers. More...
 
struct  function_traits< R(C::*)(Args...) const noexcept >
 Specialization for const noexcept member function pointers. More...
 
struct  function_traits< R(C::*)(Args...) const volatile >
 Specialization for const volatile member function pointers. More...
 
struct  function_traits< R(C::*)(Args...) const volatile noexcept >
 Specialization for const volatile noexcept member function pointers. More...
 
struct  function_traits< R(C::*)(Args...) noexcept >
 Specialization for noexcept member function pointers. More...
 
struct  function_traits< R(C::*)(Args...) volatile >
 Specialization for volatile member function pointers. More...
 
struct  function_traits< R(C::*)(Args...) volatile noexcept >
 Specialization for volatile noexcept member function pointers. More...
 
struct  function_traits< R(C::*)(Args...)>
 Specialization for member function pointers. More...
 
struct  function_traits< std::function< R(Args...)> >
 Specialization for std::function. More...
 
struct  offset_sequence
 Template for creating an offset sequence. More...
 
struct  offset_sequence< N, std::index_sequence< Ints... > >
 Specialization for creating an offset sequence. More...
 

Typedefs

template<std::size_t N, typename Seq >
using offset_sequence_t = typename offset_sequence<N, Seq>::type
 Alias template for creating an offset sequence.
 
template<std::size_t I, typename A >
using tuple_element = std::decay_t<std::tuple_element_t<I, A>>
 Type alias for a tuple element with decay applied.
 

Functions

template<typename Extra , typename Args , std::size_t... Indices>
constexpr auto convert_args (const nlohmann::json &params, std::index_sequence< Indices... >)
 Converts JSON parameters to a tuple of arguments based on the specified types.
 
template<typename F , typename Tuple >
nlohmann::json invoke_function (F &&f, Tuple &&tuple)
 Invokes a function with the provided arguments handling void return type.
 
template<typename Extra >
constexpr auto make_extra_tuple (const nlohmann::json &extra)
 Creates a tuple from the provided JSON object based on the type of Extra.
 
template<typename C >
requires (std::is_class_v<std::remove_pointer_t<C>> || std::is_null_pointer_v<C>)
constexpr auto make_inst_tuple (C inst)
 Creates a tuple containing the instance if it is a class pointer, or an empty tuple if it is a null pointer.
 

Detailed Description

Contains the implementation details of the JSON RPC library.