Add more macros to CDetour.
This commit is contained in:
		
							parent
							
								
									c3102c7e9f
								
							
						
					
					
						commit
						fdcce81a41
					
				| @ -48,6 +48,11 @@ | |||||||
| #define DETOUR_MEMBER_CALL(name) (this->*name##_Actual) | #define DETOUR_MEMBER_CALL(name) (this->*name##_Actual) | ||||||
| #define DETOUR_STATIC_CALL(name) (name##_Actual) | #define DETOUR_STATIC_CALL(name) (name##_Actual) | ||||||
| 
 | 
 | ||||||
|  | #define DETOUR_MEMBER_MCALL_CALLBACK(name, classptr) \ | ||||||
|  | 	((name##Class *)classptr->*(&name##Class::name)) | ||||||
|  | #define DETOUR_MEMBER_MCALL_ORIGINAL(name, classptr) \ | ||||||
|  | 	((name##Class *)classptr->*(name##Class::name##_Actual)) | ||||||
|  | 
 | ||||||
| #define DETOUR_DECL_STATIC0(name, ret) \ | #define DETOUR_DECL_STATIC0(name, ret) \ | ||||||
| ret (*name##_Actual)(void) = NULL; \ | ret (*name##_Actual)(void) = NULL; \ | ||||||
| ret name(void) | ret name(void) | ||||||
| @ -84,6 +89,14 @@ ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5na | |||||||
| ret (*name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type) = NULL; \ | ret (*name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type) = NULL; \ | ||||||
| ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name) | ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name) | ||||||
| 
 | 
 | ||||||
|  | #define DETOUR_DECL_STATIC9(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name, p8type, p8name, p9type, p9name) \ | ||||||
|  | ret (*name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type) = NULL; \ | ||||||
|  | ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name) | ||||||
|  | 
 | ||||||
|  | #define DETOUR_DECL_STATIC10(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name, p8type, p8name, p9type, p9name, p10type, p10name) \ | ||||||
|  | ret (*name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type, p10type) = NULL; \ | ||||||
|  | ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name, p10type p10name) | ||||||
|  | 
 | ||||||
| #define DETOUR_DECL_MEMBER0(name, ret) \ | #define DETOUR_DECL_MEMBER0(name, ret) \ | ||||||
| class name##Class \ | class name##Class \ | ||||||
| { \ | { \ | ||||||
| @ -174,6 +187,65 @@ public: \ | |||||||
| ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type) = NULL; \ | ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type) = NULL; \ | ||||||
| ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name) | ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name) | ||||||
| 
 | 
 | ||||||
|  | #define DETOUR_DECL_MEMBER9(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name, p8type, p8name, p9type, p9name) \ | ||||||
|  | class name##Class \ | ||||||
|  | { \ | ||||||
|  | public: \ | ||||||
|  |         ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name); \ | ||||||
|  |         static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type); \ | ||||||
|  | }; \ | ||||||
|  | ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type) = NULL; \ | ||||||
|  | ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name) | ||||||
|  | 
 | ||||||
|  | #define DETOUR_DECL_MEMBER10(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name, p8type, p8name, p9type, p9name, p10type, p10name) \ | ||||||
|  | class name##Class \ | ||||||
|  | { \ | ||||||
|  | public: \ | ||||||
|  | 	ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name, p10type p10name); \ | ||||||
|  | 	static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type, p10type); \ | ||||||
|  | }; \ | ||||||
|  | ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type, p10type) = NULL; \ | ||||||
|  | ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name, p10type p10name) | ||||||
|  | 
 | ||||||
|  | #define DETOUR_DECL_MEMBER11(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name, p8type, p8name, p9type, p9name, p10type, p10name, p11type, p11name) \ | ||||||
|  | class name##Class \ | ||||||
|  | { \ | ||||||
|  | public: \ | ||||||
|  | 	ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name, p10type p10name, p11type p11name); \ | ||||||
|  | 	static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type, p10type, p11type); \ | ||||||
|  | }; \ | ||||||
|  | ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type, p10type, p11type) = NULL; \ | ||||||
|  | ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name, p10type p10name, p11type p11name) | ||||||
|  | 
 | ||||||
|  | #define DETOUR_DECL_MEMBER12(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name, p8type, p8name, p9type, p9name, p10type, p10name, p11type, p11name, p12type, p12name) \ | ||||||
|  | class name##Class \ | ||||||
|  | { \ | ||||||
|  | public: \ | ||||||
|  | 	ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name, p10type p10name, p11type p11name, p12type p12name); \ | ||||||
|  | 	static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type, p10type, p11type, p12type); \ | ||||||
|  | }; \ | ||||||
|  | ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type, p10type, p11type, p12type) = NULL; \ | ||||||
|  | ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name, p10type p10name, p11type p11name, p12type p12name) | ||||||
|  | 
 | ||||||
|  | #define DETOUR_DECL_MEMBER13(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name, p8type, p8name, p9type, p9name, p10type, p10name, p11type, p11name, p12type, p12name, p13type, p13name) \ | ||||||
|  | class name##Class \ | ||||||
|  | { \ | ||||||
|  | public: \ | ||||||
|  | 	ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name, p10type p10name, p11type p11name, p12type p12name, p13type p13name); \ | ||||||
|  | 	static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type, p10type, p11type, p12type, p13type); \ | ||||||
|  | }; \ | ||||||
|  | ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type, p10type, p11type, p12type, p13type) = NULL; \ | ||||||
|  | ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name, p10type p10name, p11type p11name, p12type p12name, p13type p13name) | ||||||
|  | 
 | ||||||
|  | #define DETOUR_DECL_MEMBER14(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name, p5type, p5name, p6type, p6name, p7type, p7name, p8type, p8name, p9type, p9name, p10type, p10name, p11type, p11name, p12type, p12name, p13type, p13name, p14type, p14name) \ | ||||||
|  | class name##Class \ | ||||||
|  | { \ | ||||||
|  | public: \ | ||||||
|  | 	ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name, p10type p10name, p11type p11name, p12type p12name, p13type p13name, p14type p14name); \ | ||||||
|  | 	static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type, p10type, p11type, p12type, p13type, p14type); \ | ||||||
|  | }; \ | ||||||
|  | ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type, p5type, p6type, p7type, p8type, p9type, p10type, p11type, p12type, p13type, p14type) = NULL; \ | ||||||
|  | ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name, p5type p5name, p6type p6name, p7type p7name, p8type p8name, p9type p9name, p10type p10name, p11type p11name, p12type p12name, p13type p13name, p14type p14name) | ||||||
| 
 | 
 | ||||||
| #define GET_MEMBER_CALLBACK(name) (void *)GetCodeAddress(&name##Class::name) | #define GET_MEMBER_CALLBACK(name) (void *)GetCodeAddress(&name##Class::name) | ||||||
| #define GET_MEMBER_TRAMPOLINE(name) (void **)(&name##Class::name##_Actual) | #define GET_MEMBER_TRAMPOLINE(name) (void **)(&name##Class::name##_Actual) | ||||||
| @ -242,7 +314,7 @@ private: | |||||||
| 	void *detour_callback; | 	void *detour_callback; | ||||||
| 	/* The function pointer used to call our trampoline */ | 	/* The function pointer used to call our trampoline */ | ||||||
| 	void **trampoline; | 	void **trampoline; | ||||||
| 	 | 
 | ||||||
| 	const char *signame; | 	const char *signame; | ||||||
| 	ISourcePawnEngine *spengine; | 	ISourcePawnEngine *spengine; | ||||||
| 	IGameConfig *gameconf; | 	IGameConfig *gameconf; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user