tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

c_callback_support.h (865B)


      1 // Copyright (c) the JPEG XL Project Authors. All rights reserved.
      2 //
      3 // Use of this source code is governed by a BSD-style
      4 // license that can be found in the LICENSE file.
      5 
      6 #ifndef LIB_JXL_BASE_C_CALLBACK_SUPPORT_H_
      7 #define LIB_JXL_BASE_C_CALLBACK_SUPPORT_H_
      8 
      9 #include <utility>
     10 
     11 namespace jxl {
     12 namespace detail {
     13 
     14 template <typename T>
     15 struct MethodToCCallbackHelper {};
     16 
     17 template <typename T, typename R, typename... Args>
     18 struct MethodToCCallbackHelper<R (T::*)(Args...)> {
     19  template <R (T::*method)(Args...)>
     20  static R Call(void *opaque, Args... args) {
     21    return (reinterpret_cast<T *>(opaque)->*method)(
     22        std::forward<Args>(args)...);
     23  }
     24 };
     25 
     26 }  // namespace detail
     27 }  // namespace jxl
     28 
     29 #define METHOD_TO_C_CALLBACK(method) \
     30  ::jxl::detail::MethodToCCallbackHelper<decltype(method)>::Call<method>
     31 
     32 #endif  // LIB_JXL_BASE_C_CALLBACK_SUPPORT_H_