#ifndef GOOGLE_PROTOBUF_STUBS_CALLBACK_H_
#define GOOGLE_PROTOBUF_STUBS_CALLBACK_H_
#include <type_traits>
#include <google/protobuf/stubs/macros.h>
#include <google/protobuf/port_def.inc>
namespace google {
namespace protobuf {
class PROTOBUF_EXPORT Closure { … };
template<typename R>
class ResultCallback { … };
template <typename R, typename A1>
class PROTOBUF_EXPORT ResultCallback1 { … };
template <typename R, typename A1, typename A2>
class PROTOBUF_EXPORT ResultCallback2 { … };
namespace internal {
class PROTOBUF_EXPORT FunctionClosure0 : public Closure { … };
template <typename Class>
class MethodClosure0 : public Closure { … };
template <typename Arg1>
class FunctionClosure1 : public Closure { … };
template <typename Class, typename Arg1>
class MethodClosure1 : public Closure { … };
template <typename Arg1, typename Arg2>
class FunctionClosure2 : public Closure { … };
template <typename Class, typename Arg1, typename Arg2>
class MethodClosure2 : public Closure { … };
template<typename R>
class FunctionResultCallback_0_0 : public ResultCallback<R> { … };
template<typename R, typename P1>
class FunctionResultCallback_1_0 : public ResultCallback<R> { … };
template<typename R, typename Arg1>
class FunctionResultCallback_0_1 : public ResultCallback1<R, Arg1> { … };
template<typename R, typename P1, typename A1>
class FunctionResultCallback_1_1 : public ResultCallback1<R, A1> { … };
template <typename T>
struct InternalConstRef { … };
template<typename R, typename T>
class MethodResultCallback_0_0 : public ResultCallback<R> { … };
template <typename R, typename T, typename P1, typename P2, typename P3,
typename P4, typename P5, typename P6, typename A1, typename A2>
class MethodResultCallback_6_2 : public ResultCallback2<R, A1, A2> { … };
}
inline Closure* NewCallback(void (*function)()) { … }
inline Closure* NewPermanentCallback(void (*function)()) { … }
template <typename Class>
inline Closure* NewCallback(Class* object, void (Class::*method)()) { … }
template <typename Class>
inline Closure* NewPermanentCallback(Class* object, void (Class::*method)()) { … }
template <typename Arg1>
inline Closure* NewCallback(void (*function)(Arg1),
Arg1 arg1) { … }
template <typename Arg1>
inline Closure* NewPermanentCallback(void (*function)(Arg1),
Arg1 arg1) { … }
template <typename Class, typename Arg1>
inline Closure* NewCallback(Class* object, void (Class::*method)(Arg1),
Arg1 arg1) { … }
template <typename Class, typename Arg1>
inline Closure* NewPermanentCallback(Class* object, void (Class::*method)(Arg1),
Arg1 arg1) { … }
template <typename Arg1, typename Arg2>
inline Closure* NewCallback(void (*function)(Arg1, Arg2),
Arg1 arg1, Arg2 arg2) { … }
template <typename Arg1, typename Arg2>
inline Closure* NewPermanentCallback(void (*function)(Arg1, Arg2),
Arg1 arg1, Arg2 arg2) { … }
template <typename Class, typename Arg1, typename Arg2>
inline Closure* NewCallback(Class* object, void (Class::*method)(Arg1, Arg2),
Arg1 arg1, Arg2 arg2) { … }
template <typename Class, typename Arg1, typename Arg2>
inline Closure* NewPermanentCallback(
Class* object, void (Class::*method)(Arg1, Arg2),
Arg1 arg1, Arg2 arg2) { … }
template<typename R>
inline ResultCallback<R>* NewCallback(R (*function)()) { … }
template<typename R>
inline ResultCallback<R>* NewPermanentCallback(R (*function)()) { … }
template<typename R, typename P1>
inline ResultCallback<R>* NewCallback(R (*function)(P1), P1 p1) { … }
template<typename R, typename P1>
inline ResultCallback<R>* NewPermanentCallback(
R (*function)(P1), P1 p1) { … }
template<typename R, typename A1>
inline ResultCallback1<R, A1>* NewCallback(R (*function)(A1)) { … }
template<typename R, typename A1>
inline ResultCallback1<R, A1>* NewPermanentCallback(R (*function)(A1)) { … }
template<typename R, typename P1, typename A1>
inline ResultCallback1<R, A1>* NewCallback(R (*function)(P1, A1), P1 p1) { … }
template<typename R, typename P1, typename A1>
inline ResultCallback1<R, A1>* NewPermanentCallback(
R (*function)(P1, A1), P1 p1) { … }
template <typename R, typename T1, typename T2>
inline ResultCallback<R>* NewPermanentCallback(
T1* object, R (T2::*function)()) { … }
template <typename R, typename T, typename P1, typename P2, typename P3,
typename P4, typename P5, typename P6, typename A1, typename A2>
inline ResultCallback2<R, A1, A2>* NewPermanentCallback(
T* object, R (T::*function)(P1, P2, P3, P4, P5, P6, A1, A2),
typename internal::InternalConstRef<P1>::type p1,
typename internal::InternalConstRef<P2>::type p2,
typename internal::InternalConstRef<P3>::type p3,
typename internal::InternalConstRef<P4>::type p4,
typename internal::InternalConstRef<P5>::type p5,
typename internal::InternalConstRef<P6>::type p6) { … }
void PROTOBUF_EXPORT DoNothing();
}
}
#include <google/protobuf/port_undef.inc>
#endif