Chromium Embedded Framework (CEF)  117.1.0+ga287baf+chromium-117.0.5938.62
cef_tuple.h File Reference

Use std::tuple as tuple type. More...

#include <stddef.h>
#include <tuple>
#include <utility>
#include "include/base/cef_build.h"

Namespaces

 base
 

Functions

template<typename ObjT , typename Method , typename Tuple , size_t... Ns>
void base::DispatchToMethodImpl (const ObjT &obj, Method method, Tuple &&args, std::index_sequence< Ns... >)
 
template<typename ObjT , typename Method , typename Tuple >
void base::DispatchToMethod (const ObjT &obj, Method method, Tuple &&args)
 
template<typename Function , typename Tuple , size_t... Ns>
void base::DispatchToFunctionImpl (Function function, Tuple &&args, std::index_sequence< Ns... >)
 
template<typename Function , typename Tuple >
void base::DispatchToFunction (Function function, Tuple &&args)
 
template<typename ObjT , typename Method , typename InTuple , typename OutTuple , size_t... InNs, size_t... OutNs>
void base::DispatchToMethodImpl (const ObjT &obj, Method method, InTuple &&in, OutTuple *out, std::index_sequence< InNs... >, std::index_sequence< OutNs... >)
 
template<typename ObjT , typename Method , typename InTuple , typename OutTuple >
void base::DispatchToMethod (const ObjT &obj, Method method, InTuple &&in, OutTuple *out)
 

Detailed Description

Use std::tuple as tuple type.

This file contains helper functions for working with std::tuples. The functions DispatchToMethod and DispatchToFunction take a function pointer or instance and method pointer, and unpack a tuple into arguments to the call.

Example usage:

  // These two methods of creating a Tuple are identical.
  std::tuple<int, const char*> tuple_a(1, "wee");
  std::tuple<int, const char*> tuple_b = std::make_tuple(1, "wee");

  void SomeFunc(int a, const char* b) { }
  DispatchToFunction(&SomeFunc, tuple_a);  // SomeFunc(1, "wee")
  DispatchToFunction(
      &SomeFunc, std::make_tuple(10, "foo"));    // SomeFunc(10, "foo")

  struct { void SomeMeth(int a, int b, int c) { } } foo;
  DispatchToMethod(&foo, &Foo::SomeMeth, std::make_tuple(1, 2, 3));
  // foo->SomeMeth(1, 2, 3);