glbinding  2.1.1.000000000000
A C++ binding for the OpenGL API, generated using the gl.xml specification.
Function.h
Go to the documentation of this file.
1 
2 #pragma once
3 
4 #include <functional>
5 
7 
8 #ifndef WINAPI
9 #ifdef SYSTEM_WINDOWS
10 #define WINAPI __stdcall
11 #else
12 #define WINAPI
13 #endif
14 #endif
15 
16 
17 namespace glbinding
18 {
19 
20 
30 template <typename ReturnType, typename... Arguments>
32 {
33  using type = std::function<void(ReturnType, Arguments...)>;
34 };
35 
43 template <typename... Arguments>
44 struct CallbackType<void, Arguments...>
45 {
46  using type = std::function<void(Arguments...)>;
47 };
48 
61 template <typename ReturnType, typename... Arguments>
62 class Function : public AbstractFunction
63 {
64 public:
65  using Signature = ReturnType(WINAPI *) (Arguments...);
66 
67  using BeforeCallback = typename CallbackType<void, Arguments...>::type;
68  using AfterCallback = typename CallbackType<ReturnType, Arguments...>::type;
69 
70 public:
78  Function(const char * name);
79 
92  ReturnType operator()(Arguments&... arguments) const;
93 
106  ReturnType call(Arguments&... arguments) const;
107 
120  ReturnType directCall(Arguments... arguments) const;
121 
131  void setBeforeCallback(BeforeCallback callback);
132 
137  void clearBeforeCallback();
138 
148  void setAfterCallback(AfterCallback callback);
149 
154  void clearAfterCallback();
155 
164 
173 
174 protected:
177 };
178 
179 
180 } // namespace glbinding
181 
182 
183 #include <glbinding/Function.inl>
Contains all the classes of glbinding.
BeforeCallback m_beforeCallback
The currently registered before callback.
Definition: Function.h:175
std::function< void(ReturnType, Arguments...)> type
Propagate the actual callable callback type.
Definition: Function.h:33
#define WINAPI
Definition: Function.h:12
AfterCallback m_afterCallback
The currently registered after callback.
Definition: Function.h:176
typename CallbackType< void, Arguments... >::type BeforeCallback
The callback type for the before callback.
Definition: Function.h:67
GLBINDING_API void setBeforeCallback(FunctionCallback callback)
Updates the before callback that is called before the actual OpenGL function invocation.
GLBINDING_API FunctionCallback beforeCallback()
Before callback accessor.
GLBINDING_API FunctionCallback afterCallback()
After callback accessor.
std::function< void(Arguments...)> type
Propagate the actual callable callback type.
Definition: Function.h:46
The AbstractFunction represents an OpenGL API function.
Definition: AbstractFunction.h:23
void(WINAPI *)(Arguments...) Signature
The c pointer type for a function call.
Definition: Function.h:65
The Function represents an OpenGL API function with additional features, including: ...
Definition: Function.h:62
A callback signature with return type and multiple arguments.
Definition: Function.h:31
typename CallbackType< void, Arguments... >::type AfterCallback
The callback type for the after callback.
Definition: Function.h:68
GLBINDING_API void setAfterCallback(FunctionCallback callback)