ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TGWin32ProxyDefs.h
Go to the documentation of this file.
1 // @(#)root/win32gdk:$Id$
2 // Author: Valeriy Onuchin 08/08/2003
3 
4 
5 /*************************************************************************
6  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
7  * All rights reserved. *
8  * *
9  * For the licensing terms see $ROOTSYS/LICENSE. *
10  * For the list of contributors see $ROOTSYS/README/CREDITS. *
11  *************************************************************************/
12 
13 #ifndef ROOT_TGWin32ProxyDefs
14 #define ROOT_TGWin32ProxyDefs
15 
16 #include "Rtypes.h" // CINT headers
17 
18 
19 #define _NAME4_(name1,name2,name3,name4) _NAME3_(name1,name2,name3)name4
20 
21 
22 
23 ///////////////////// debug & profile interface /////////////////////////////
24 //
25 // - recompile with gDebugProxy = 1
26 //
27 // root [0] gDebug = -123 // start profiling
28 //or
29 // root [0] gDebug = -1234 // start profiling and debugging(call trace)
30 //
31 // root [1] .x macro.C // profile macro.C
32 // root [2] gDebug = 0 // stop profiling
33 // root [3] .x macro.C // print results
34 //
35 
36 static int gDebugProxy = 0; // if kTRUE - use debug & profile interface
37 
38 static enum { kDebugProfile = -123, kDebugTrace = -1234 };
39 
40 static unsigned int total = 0;
41 static double total_time = 0;
42 
43 #define DEBUG_PROFILE_PROXY_START(method)\
44  static int i = 0;\
45  static double t = 0;\
46  double start = 0;\
47  int gDebugValue = 0;\
48  int debug = 0;\
49  if (gDebugProxy) {\
50  gDebugValue = gDebug;\
51  debug = (gDebugValue==kDebugProfile) || (gDebugValue==kDebugTrace);\
52  if (debug) {\
53  start = GetMilliSeconds();\
54  } else {\
55  if (total) {\
56  printf(" method name hits time/hits(ms) time(ms) | Total = %d hits %6.2f ms\n",total,total_time );\
57  printf("------------------------------------------------------------------------------------------------------------\n");\
58  }\
59  if (i && !total) {\
60  printf(" %-30s %-6d %-3.2f %-4.2f\n",#method,i,t/i,t);\
61  }\
62  total_time = t = total = i = 0;\
63  }\
64  }\
65 
66 #define DEBUG_PROFILE_PROXY_STOP(method)\
67  if (gDebugProxy) {\
68  if (debug) {\
69  double dt = GetMilliSeconds() - start;\
70  i++; total++;\
71  t += dt;\
72  total_time += dt;\
73  if (gDebugValue==kDebugTrace) printf(#method " %d\n",i);\
74  }\
75  }\
76 
77 
78 //______________________________________________________________________________
79 #define RETURN_PROXY_OBJECT(klass)\
80 _NAME2_(T,klass)* _NAME3_(TGWin32,klass,Proxy)::ProxyObject()\
81 {\
82  static TList *gListOfProxies = new TList();\
83  static _NAME3_(TGWin32,klass,Proxy) *proxy = 0;\
84  ULong_t id = ::GetCurrentThreadId();\
85  if (proxy && (proxy->GetId()==id)) return proxy;\
86  if (id==fgMainThreadId) return _NAME3_(TGWin32,klass,Proxy)::RealObject();\
87  TIter next(gListOfProxies);\
88  while ((proxy=(_NAME3_(TGWin32,klass,Proxy)*)next())) {\
89  if (proxy->GetId()==id) {\
90  return proxy;\
91  }\
92  }\
93  proxy = new _NAME3_(TGWin32,klass,Proxy)();\
94  gListOfProxies->Add(proxy);\
95  return proxy;\
96 }
97 
98 // ***_LOCK macros for setter methods which do nothing only set data members
99 //______________________________________________________________________________
100 #define VOID_METHOD_ARG0_LOCK(klass,method)\
101 void _NAME3_(TGWin32,klass,Proxy)::method()\
102 {\
103  DEBUG_PROFILE_PROXY_START(method)\
104  TGWin32::Lock();\
105  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method();\
106  TGWin32::Unlock();\
107  DEBUG_PROFILE_PROXY_STOP(method)\
108 }
109 
110 //______________________________________________________________________________
111 #define VOID_METHOD_ARG1_LOCK(klass,method,type1,par1)\
112 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1)\
113 {\
114  DEBUG_PROFILE_PROXY_START(method)\
115  TGWin32::Lock();\
116  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(par1);\
117  TGWin32::Unlock();\
118  DEBUG_PROFILE_PROXY_STOP(method)\
119 }
120 
121 //______________________________________________________________________________
122 #define VOID_METHOD_ARG2_LOCK(klass,method,type1,par1,type2,par2)\
123 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2)\
124 {\
125  DEBUG_PROFILE_PROXY_START(method)\
126  TGWin32::Lock();\
127  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(par1,par2);\
128  TGWin32::Unlock();\
129  DEBUG_PROFILE_PROXY_STOP(method)\
130 }
131 
132 //______________________________________________________________________________
133 #define VOID_METHOD_ARG3_LOCK(klass,method,type1,par1,type2,par2,type3,par3)\
134 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3)\
135 {\
136  DEBUG_PROFILE_PROXY_START(method)\
137  TGWin32::Lock();\
138  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(par1,par2,par3);\
139  TGWin32::Unlock();\
140  DEBUG_PROFILE_PROXY_STOP(method)\
141 }
142 
143 //______________________________________________________________________________
144 #define VOID_METHOD_ARG4_LOCK(klass,method,type1,par1,type2,par2,type3,par3,type4,par4)\
145 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4)\
146 {\
147  DEBUG_PROFILE_PROXY_START(method)\
148  TGWin32::Lock();\
149  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(par1,par2,par3,par4);\
150  TGWin32::Unlock();\
151  DEBUG_PROFILE_PROXY_STOP(method)\
152 }
153 
154 //______________________________________________________________________________
155 #define VOID_METHOD_ARG5_LOCK(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5)\
156 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5)\
157 {\
158  DEBUG_PROFILE_PROXY_START(method)\
159  TGWin32::Lock();\
160  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(par1,par2,par3,par4,par5);\
161  TGWin32::Unlock();\
162  DEBUG_PROFILE_PROXY_STOP(method)\
163 }
164 
165 //______________________________________________________________________________
166 #define VOID_METHOD_ARG0(klass,method,sync)\
167 void _NAME3_(p2,klass,method)(void *in)\
168 {\
169  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method();\
170 }\
171 \
172 void _NAME3_(TGWin32,klass,Proxy)::method()\
173 {\
174  DEBUG_PROFILE_PROXY_START(method)\
175  fCallBack = &_NAME3_(p2,klass,method);\
176  ForwardCallBack(sync);\
177  DEBUG_PROFILE_PROXY_STOP(method)\
178 }
179 
180 //______________________________________________________________________________
181 #define VOID_METHOD_ARG1(klass,method,type1,par1,sync)\
182 void _NAME4_(p2,klass,method,par1)(void *in)\
183 {\
184  struct tmp {\
185  type1 par1;\
186  };\
187  tmp *p = (tmp*)in;\
188  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1);\
189 }\
190 \
191 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1)\
192 {\
193  DEBUG_PROFILE_PROXY_START(method)\
194  struct tmp {\
195  type1 par1;\
196  tmp(type1 par1):par1(par1) {}\
197  };\
198  fParam = new tmp(par1);\
199  fCallBack = &_NAME4_(p2,klass,method,par1);\
200  Bool_t batch = ForwardCallBack(sync);\
201  par1 = ((tmp*)fParam)->par1;\
202  if (!batch) delete fParam;\
203  DEBUG_PROFILE_PROXY_STOP(method)\
204 }
205 
206 //______________________________________________________________________________
207 #define VOID_METHOD_ARG2(klass,method,type1,par1,type2,par2,sync)\
208 void _NAME4_(p2,klass,method,par1)(void *in)\
209 {\
210  struct tmp {\
211  type1 par1; type2 par2;\
212  };\
213  tmp *p = (tmp*)in;\
214  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2);\
215 }\
216 \
217 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2)\
218 {\
219  DEBUG_PROFILE_PROXY_START(method)\
220  struct tmp {\
221  type1 par1; type2 par2;\
222  tmp(type1 par1,type2 par2):par1(par1),par2(par2) {}\
223  };\
224  fParam = new tmp(par1,par2);\
225  fCallBack = &_NAME4_(p2,klass,method,par1);\
226  Bool_t batch = ForwardCallBack(sync);\
227  par1 = ((tmp*)fParam)->par1;\
228  par2 = ((tmp*)fParam)->par2;\
229  if (!batch) delete fParam;\
230  DEBUG_PROFILE_PROXY_STOP(method)\
231 }
232 
233 //______________________________________________________________________________
234 #define VOID_METHOD_ARG3(klass,method,type1,par1,type2,par2,type3,par3,sync)\
235 void _NAME4_(p2,klass,method,par1)(void *in)\
236 {\
237  struct tmp {\
238  type1 par1; type2 par2; type3 par3;\
239  };\
240  tmp *p = (tmp*)in;\
241  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3);\
242 }\
243 \
244 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3)\
245 {\
246  DEBUG_PROFILE_PROXY_START(method)\
247  struct tmp {\
248  type1 par1; type2 par2; type3 par3;\
249  tmp(type1 par1,type2 par2,type3 par3):par1(par1),par2(par2),par3(par3) {}\
250  };\
251  fParam = new tmp(par1,par2,par3);\
252  fCallBack = &_NAME4_(p2,klass,method,par1);\
253  Bool_t batch = ForwardCallBack(sync);\
254  par1 = ((tmp*)fParam)->par1;\
255  par2 = ((tmp*)fParam)->par2;\
256  par3 = ((tmp*)fParam)->par3;\
257  if (!batch) delete fParam;\
258  DEBUG_PROFILE_PROXY_STOP(method)\
259 }
260 
261 //______________________________________________________________________________
262 #define VOID_METHOD_ARG4(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,sync)\
263 void _NAME4_(p2,klass,method,par1)(void *in)\
264 {\
265  struct tmp {\
266  type1 par1; type2 par2; type3 par3; type4 par4;\
267  };\
268  tmp *p = (tmp*)in;\
269  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4);\
270 }\
271 \
272 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4)\
273 {\
274  DEBUG_PROFILE_PROXY_START(method)\
275  struct tmp {\
276  type1 par1; type2 par2; type3 par3; type4 par4;\
277  tmp(type1 par1,type2 par2,type3 par3,type4 par4):par1(par1),par2(par2),par3(par3),par4(par4) {}\
278  };\
279  fParam = new tmp(par1,par2,par3,par4);\
280  fCallBack = &_NAME4_(p2,klass,method,par1);\
281  Bool_t batch = ForwardCallBack(sync);\
282  par1 = ((tmp*)fParam)->par1;\
283  par2 = ((tmp*)fParam)->par2;\
284  par3 = ((tmp*)fParam)->par3;\
285  par4 = ((tmp*)fParam)->par4;\
286  if (!batch) delete fParam;\
287  DEBUG_PROFILE_PROXY_STOP(method)\
288 }
289 
290 //______________________________________________________________________________
291 #define VOID_METHOD_ARG5(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,sync)\
292 void _NAME4_(p2,klass,method,par1)(void *in)\
293 {\
294  struct tmp {\
295  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5;\
296  };\
297  tmp *p = (tmp*)in;\
298  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5);\
299 }\
300 \
301 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5)\
302 {\
303  DEBUG_PROFILE_PROXY_START(method)\
304  struct tmp {\
305  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5;\
306  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5) {}\
307  };\
308  fParam = new tmp(par1,par2,par3,par4,par5);\
309  fCallBack = &_NAME4_(p2,klass,method,par1);\
310  Bool_t batch = ForwardCallBack(sync);\
311  par1 = ((tmp*)fParam)->par1;\
312  par2 = ((tmp*)fParam)->par2;\
313  par3 = ((tmp*)fParam)->par3;\
314  par4 = ((tmp*)fParam)->par4;\
315  par5 = ((tmp*)fParam)->par5;\
316  if (!batch) delete fParam;\
317  DEBUG_PROFILE_PROXY_STOP(method)\
318 }
319 
320 //______________________________________________________________________________
321 #define VOID_METHOD_ARG6(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,sync)\
322 void _NAME4_(p2,klass,method,par1)(void *in)\
323 {\
324  struct tmp {\
325  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6;\
326  };\
327  tmp *p = (tmp*)in;\
328  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6);\
329 }\
330 \
331 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6)\
332 {\
333  DEBUG_PROFILE_PROXY_START(method)\
334  struct tmp {\
335  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6;\
336  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6) {}\
337  };\
338  fParam = new tmp(par1,par2,par3,par4,par5,par6);\
339  fCallBack = &_NAME4_(p2,klass,method,par1);\
340  Bool_t batch = ForwardCallBack(sync);\
341  par1 = ((tmp*)fParam)->par1;\
342  par2 = ((tmp*)fParam)->par2;\
343  par3 = ((tmp*)fParam)->par3;\
344  par4 = ((tmp*)fParam)->par4;\
345  par5 = ((tmp*)fParam)->par5;\
346  par6 = ((tmp*)fParam)->par6;\
347  if (!batch) delete fParam;\
348  DEBUG_PROFILE_PROXY_STOP(method)\
349 }
350 
351 //______________________________________________________________________________
352 #define VOID_METHOD_ARG7(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,sync)\
353 void _NAME4_(p2,klass,method,par1)(void *in)\
354 {\
355  struct tmp {\
356  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7;\
357  };\
358  tmp *p = (tmp*)in;\
359  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7);\
360 }\
361 \
362 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7)\
363 {\
364  DEBUG_PROFILE_PROXY_START(method)\
365  struct tmp {\
366  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7;\
367  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6),par7(par7) {}\
368  };\
369  fParam = new tmp(par1,par2,par3,par4,par5,par6,par7);\
370  fCallBack = &_NAME4_(p2,klass,method,par1);\
371  Bool_t batch = ForwardCallBack(sync);\
372  par1 = ((tmp*)fParam)->par1;\
373  par2 = ((tmp*)fParam)->par2;\
374  par3 = ((tmp*)fParam)->par3;\
375  par4 = ((tmp*)fParam)->par4;\
376  par5 = ((tmp*)fParam)->par5;\
377  par6 = ((tmp*)fParam)->par6;\
378  par7 = ((tmp*)fParam)->par7;\
379  if (!batch) delete fParam;\
380  DEBUG_PROFILE_PROXY_STOP(method)\
381 }
382 
383 //______________________________________________________________________________
384 #define VOID_METHOD_ARG8(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,type8,par8,sync)\
385 void _NAME4_(p2,klass,method,par1)(void *in)\
386 {\
387  struct tmp {\
388  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8;\
389  };\
390  tmp *p = (tmp*)in;\
391  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7,p->par8);\
392 }\
393 \
394 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8)\
395 {\
396  DEBUG_PROFILE_PROXY_START(method)\
397  struct tmp {\
398  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8;\
399  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6),par7(par7),par8(par8) {}\
400  };\
401  fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8);\
402  fCallBack = &_NAME4_(p2,klass,method,par1);\
403  Bool_t batch = ForwardCallBack(sync);\
404  par1 = ((tmp*)fParam)->par1;\
405  par2 = ((tmp*)fParam)->par2;\
406  par3 = ((tmp*)fParam)->par3;\
407  par4 = ((tmp*)fParam)->par4;\
408  par5 = ((tmp*)fParam)->par5;\
409  par6 = ((tmp*)fParam)->par6;\
410  par7 = ((tmp*)fParam)->par7;\
411  par8 = ((tmp*)fParam)->par8;\
412  if (!batch) delete fParam;\
413  DEBUG_PROFILE_PROXY_STOP(method)\
414 }
415 
416 //______________________________________________________________________________
417 #define VOID_METHOD_ARG9(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,type8,par8,type9,par9,sync)\
418 void _NAME4_(p2,klass,method,par1)(void *in)\
419 {\
420  struct tmp {\
421  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9;\
422  };\
423  tmp *p = (tmp*)in;\
424  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7,p->par8,p->par9);\
425 }\
426 \
427 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9)\
428 {\
429  DEBUG_PROFILE_PROXY_START(method)\
430  struct tmp {\
431  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9;\
432  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6),par7(par7),par8(par8),par9(par9) {}\
433  };\
434  fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9);\
435  fCallBack = &_NAME4_(p2,klass,method,par1);\
436  Bool_t batch = ForwardCallBack(sync);\
437  par1 = ((tmp*)fParam)->par1;\
438  par2 = ((tmp*)fParam)->par2;\
439  par3 = ((tmp*)fParam)->par3;\
440  par4 = ((tmp*)fParam)->par4;\
441  par5 = ((tmp*)fParam)->par5;\
442  par6 = ((tmp*)fParam)->par6;\
443  par7 = ((tmp*)fParam)->par7;\
444  par8 = ((tmp*)fParam)->par8;\
445  par9 = ((tmp*)fParam)->par9;\
446  if (!batch) delete fParam;\
447  DEBUG_PROFILE_PROXY_STOP(method)\
448 }
449 
450 //______________________________________________________________________________
451 #define VOID_METHOD_ARG10(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,type8,par8,type9,par9,type10,par10)\
452 void _NAME4_(p2,klass,method,par1)(void *in)\
453 {\
454  struct tmp {\
455  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10;\
456  };\
457  tmp *p = (tmp*)in;\
458  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7,p->par8,p->par9,p->par10);\
459 }\
460 \
461 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9,type10 par10)\
462 {\
463  DEBUG_PROFILE_PROXY_START(method)\
464  struct tmp {\
465  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10;\
466  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9,type10 par10):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6),par7(par7),par8(par8),par9(par9),par10(par10) {}\
467  };\
468  fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9,par10);\
469  fCallBack = &_NAME4_(p2,klass,method,par1);\
470  Bool_t batch = ForwardCallBack(1);\
471  par1 = ((tmp*)fParam)->par1;\
472  par2 = ((tmp*)fParam)->par2;\
473  par3 = ((tmp*)fParam)->par3;\
474  par4 = ((tmp*)fParam)->par4;\
475  par5 = ((tmp*)fParam)->par5;\
476  par6 = ((tmp*)fParam)->par6;\
477  par7 = ((tmp*)fParam)->par7;\
478  par8 = ((tmp*)fParam)->par8;\
479  par9 = ((tmp*)fParam)->par9;\
480  par10 = ((tmp*)fParam)->par10;\
481  if (!batch) delete fParam;\
482  DEBUG_PROFILE_PROXY_STOP(method)\
483 }
484 
485 //______________________________________________________________________________
486 #define VOID_METHOD_ARG11(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,type8,par8,type9,par9,type10,par10,type11,par11)\
487 void _NAME4_(p2,klass,method,par1)(void *in)\
488 {\
489  struct tmp {\
490  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type11 par11;\
491  };\
492  tmp *p = (tmp*)in;\
493  _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7,p->par8,p->par9,p->par10,p->par11);\
494 }\
495 \
496 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9,type10 par10,type11 par11)\
497 {\
498  DEBUG_PROFILE_PROXY_START(method)\
499  struct tmp {\
500  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type11 par11;\
501  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9,type10 par10,type11 par11):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6),par7(par7),par8(par8),par9(par9),par10(par10),par11(par11) {}\
502  };\
503  fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9,par10,par11);\
504  fCallBack = &_NAME4_(p2,klass,method,par1);\
505  Bool_t batch = ForwardCallBack(1);\
506  par1 = ((tmp*)fParam)->par1;\
507  par2 = ((tmp*)fParam)->par2;\
508  par3 = ((tmp*)fParam)->par3;\
509  par4 = ((tmp*)fParam)->par4;\
510  par5 = ((tmp*)fParam)->par5;\
511  par6 = ((tmp*)fParam)->par6;\
512  par7 = ((tmp*)fParam)->par7;\
513  par8 = ((tmp*)fParam)->par8;\
514  par9 = ((tmp*)fParam)->par9;\
515  par10 = ((tmp*)fParam)->par10;\
516  par11 = ((tmp*)fParam)->par11;\
517  if (!batch) delete fParam;\
518  DEBUG_PROFILE_PROXY_STOP(method)\
519 }
520 
521 //______________________________________________________________________________
522 #define RETURN_METHOD_ARG0_CONST(klass,type,method)\
523 type _NAME3_(TGWin32,klass,Proxy)::method() const\
524 {\
525  type ret;\
526  TGWin32::Lock();\
527  ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method();\
528  TGWin32::Unlock();\
529  return ret;\
530 }
531 
532 //______________________________________________________________________________
533 #define RETURN_METHOD_ARG0(klass,type,method)\
534 void _NAME3_(p2,klass,method)(void *in)\
535 {\
536  struct tmp {\
537  type ret;\
538  };\
539  tmp *p = (tmp*)in;\
540  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method();\
541 }\
542 \
543 type _NAME3_(TGWin32,klass,Proxy)::method()\
544 {\
545  DEBUG_PROFILE_PROXY_START(method)\
546  type ret;\
547  struct tmp {\
548  type ret;\
549  };\
550  fParam = new tmp;\
551  fCallBack = &_NAME3_(p2,klass,method);\
552  Bool_t batch = ForwardCallBack(1);\
553  ret = ((tmp*)fParam)->ret;\
554  if (!batch) delete fParam;\
555  DEBUG_PROFILE_PROXY_STOP(method)\
556  return ret;\
557 }
558 
559 //______________________________________________________________________________
560 #define RETURN_METHOD_ARG1(klass,type,method,type1,par1)\
561 void _NAME4_(p2,klass,method,par1)(void *in)\
562 {\
563  struct tmp {\
564  type1 par1; type ret;\
565  };\
566  tmp *p = (tmp*)in;\
567  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1);\
568 }\
569 \
570 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1)\
571 {\
572  DEBUG_PROFILE_PROXY_START(method)\
573  type ret;\
574  struct tmp {\
575  type1 par1; type ret;\
576  tmp(type1 par1):par1(par1) {}\
577  };\
578  fParam = new tmp(par1);\
579  fCallBack = &_NAME4_(p2,klass,method,par1);\
580  Bool_t batch = ForwardCallBack(1);\
581  par1 = ((tmp*)fParam)->par1;\
582  ret = ((tmp*)fParam)->ret;\
583  if (!batch) delete fParam;\
584  DEBUG_PROFILE_PROXY_STOP(method)\
585  return ret;\
586 }
587 
588 //______________________________________________________________________________
589 #define RETURN_METHOD_ARG2(klass,type,method,type1,par1,type2,par2)\
590 void _NAME4_(p2,klass,method,par1)(void *in)\
591 {\
592  struct tmp {\
593  type1 par1; type2 par2; type ret;\
594  };\
595  tmp *p = (tmp*)in;\
596  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2);\
597 }\
598 \
599 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2)\
600 {\
601  DEBUG_PROFILE_PROXY_START(method)\
602  type ret;\
603  struct tmp {\
604  type1 par1; type2 par2; type ret;\
605  tmp(type1 par1,type2 par2):par1(par1),par2(par2) {}\
606  };\
607  fParam = new tmp(par1,par2);\
608  fCallBack = &_NAME4_(p2,klass,method,par1);\
609  Bool_t batch = ForwardCallBack(1);\
610  par1 = ((tmp*)fParam)->par1;\
611  par2 = ((tmp*)fParam)->par2;\
612  ret = ((tmp*)fParam)->ret;\
613  if (!batch) delete fParam;\
614  DEBUG_PROFILE_PROXY_STOP(method)\
615  return ret;\
616 }
617 
618 //______________________________________________________________________________
619 #define RETURN_METHOD_ARG3(klass,type,method,type1,par1,type2,par2,type3,par3)\
620 void _NAME4_(p2,klass,method,par1)(void *in)\
621 {\
622  struct tmp {\
623  type1 par1; type2 par2; type3 par3; type ret;\
624  };\
625  tmp *p = (tmp*)in;\
626  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3);\
627 }\
628 \
629 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3)\
630 {\
631  DEBUG_PROFILE_PROXY_START(method)\
632  type ret;\
633  struct tmp {\
634  type1 par1; type2 par2; type3 par3; type ret;\
635  tmp(type1 par1,type2 par2,type3 par3):par1(par1),par2(par2),par3(par3) {}\
636  };\
637  fParam = new tmp(par1,par2,par3);\
638  fCallBack = &_NAME4_(p2,klass,method,par1);\
639  Bool_t batch = ForwardCallBack(1);\
640  par1 = ((tmp*)fParam)->par1;\
641  par2 = ((tmp*)fParam)->par2;\
642  par3 = ((tmp*)fParam)->par3;\
643  ret = ((tmp*)fParam)->ret;\
644  if (!batch) delete fParam;\
645  DEBUG_PROFILE_PROXY_STOP(method)\
646  return ret;\
647 }
648 
649 //______________________________________________________________________________
650 #define RETURN_METHOD_ARG4(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4)\
651 void _NAME4_(p2,klass,method,par1)(void *in)\
652 {\
653  struct tmp {\
654  type1 par1; type2 par2; type3 par3; type4 par4; type ret;\
655  };\
656  tmp *p = (tmp*)in;\
657  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4);\
658 }\
659 \
660 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4)\
661 {\
662  DEBUG_PROFILE_PROXY_START(method)\
663  type ret;\
664  struct tmp {\
665  type1 par1; type2 par2; type3 par3; type4 par4; type ret;\
666  tmp(type1 par1,type2 par2,type3 par3,type4 par4):par1(par1),par2(par2),par3(par3),par4(par4) {}\
667  };\
668  fParam = new tmp(par1,par2,par3,par4);\
669  fCallBack = &_NAME4_(p2,klass,method,par1);\
670  Bool_t batch = ForwardCallBack(1);\
671  par1 = ((tmp*)fParam)->par1;\
672  par2 = ((tmp*)fParam)->par2;\
673  par3 = ((tmp*)fParam)->par3;\
674  par4 = ((tmp*)fParam)->par4;\
675  ret = ((tmp*)fParam)->ret;\
676  if (!batch) delete fParam;\
677  DEBUG_PROFILE_PROXY_STOP(method)\
678  return ret;\
679 }
680 
681 //______________________________________________________________________________
682 #define RETURN_METHOD_ARG5(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5)\
683 void _NAME4_(p2,klass,method,par1)(void *in)\
684 {\
685  struct tmp {\
686  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type ret;\
687  };\
688  tmp *p = (tmp*)in;\
689  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5);\
690 }\
691 \
692 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5)\
693 {\
694  DEBUG_PROFILE_PROXY_START(method)\
695  type ret;\
696  struct tmp {\
697  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type ret;\
698  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5) {}\
699  };\
700  fParam = new tmp(par1,par2,par3,par4,par5);\
701  fCallBack = &_NAME4_(p2,klass,method,par1);\
702  Bool_t batch = ForwardCallBack(1);\
703  par1 = ((tmp*)fParam)->par1;\
704  par2 = ((tmp*)fParam)->par2;\
705  par3 = ((tmp*)fParam)->par3;\
706  par4 = ((tmp*)fParam)->par4;\
707  par5 = ((tmp*)fParam)->par5;\
708  ret = ((tmp*)fParam)->ret;\
709  if (!batch) delete fParam;\
710  DEBUG_PROFILE_PROXY_STOP(method)\
711  return ret;\
712 }
713 
714 //______________________________________________________________________________
715 #define RETURN_METHOD_ARG6(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6)\
716 void _NAME4_(p2,klass,method,par1)(void *in)\
717 {\
718  struct tmp {\
719  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type ret;\
720  };\
721  tmp *p = (tmp*)in;\
722  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6);\
723 }\
724 \
725 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6)\
726 {\
727  DEBUG_PROFILE_PROXY_START(method)\
728  type ret;\
729  struct tmp {\
730  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type ret;\
731  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6) {}\
732  };\
733  fParam = new tmp(par1,par2,par3,par4,par5,par6);\
734  fCallBack = &_NAME4_(p2,klass,method,par1);\
735  Bool_t batch = ForwardCallBack(1);\
736  par1 = ((tmp*)fParam)->par1;\
737  par2 = ((tmp*)fParam)->par2;\
738  par3 = ((tmp*)fParam)->par3;\
739  par4 = ((tmp*)fParam)->par4;\
740  par5 = ((tmp*)fParam)->par5;\
741  par6 = ((tmp*)fParam)->par6;\
742  ret = ((tmp*)fParam)->ret;\
743  if (!batch) delete fParam;\
744  DEBUG_PROFILE_PROXY_STOP(method)\
745  return ret;\
746 }
747 
748 //______________________________________________________________________________
749 #define RETURN_METHOD_ARG7(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7)\
750 void _NAME4_(p2,klass,method,par1)(void *in)\
751 {\
752  struct tmp {\
753  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type ret;\
754  };\
755  tmp *p = (tmp*)in;\
756  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7);\
757 }\
758 \
759 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7)\
760 {\
761  DEBUG_PROFILE_PROXY_START(method)\
762  type ret;\
763  struct tmp {\
764  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type ret;\
765  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6),par7(par7) {}\
766  };\
767  fParam = new tmp(par1,par2,par3,par4,par5,par6,par7);\
768  fCallBack = &_NAME4_(p2,klass,method,par1);\
769  Bool_t batch = ForwardCallBack(1);\
770  par1 = ((tmp*)fParam)->par1;\
771  par2 = ((tmp*)fParam)->par2;\
772  par3 = ((tmp*)fParam)->par3;\
773  par4 = ((tmp*)fParam)->par4;\
774  par5 = ((tmp*)fParam)->par5;\
775  par6 = ((tmp*)fParam)->par6;\
776  par7 = ((tmp*)fParam)->par7;\
777  ret = ((tmp*)fParam)->ret;\
778  if (!batch) delete fParam;\
779  DEBUG_PROFILE_PROXY_STOP(method)\
780  return ret;\
781 }
782 
783 //______________________________________________________________________________
784 #define RETURN_METHOD_ARG8(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,type8,par8)\
785 void _NAME4_(p2,klass,method,par1)(void *in)\
786 {\
787  struct tmp {\
788  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type ret;\
789  };\
790  tmp *p = (tmp*)in;\
791  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7,p->par8);\
792 }\
793 \
794 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8)\
795 {\
796  DEBUG_PROFILE_PROXY_START(method)\
797  type ret;\
798  struct tmp {\
799  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type ret;\
800  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6),par7(par7),par8(par8) {}\
801  };\
802  fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8);\
803  fCallBack = &_NAME4_(p2,klass,method,par1);\
804  Bool_t batch = ForwardCallBack(1);\
805  par1 = ((tmp*)fParam)->par1;\
806  par2 = ((tmp*)fParam)->par2;\
807  par3 = ((tmp*)fParam)->par3;\
808  par4 = ((tmp*)fParam)->par4;\
809  par5 = ((tmp*)fParam)->par5;\
810  par6 = ((tmp*)fParam)->par6;\
811  par7 = ((tmp*)fParam)->par7;\
812  par8 = ((tmp*)fParam)->par8;\
813  ret = ((tmp*)fParam)->ret;\
814  if (!batch) delete fParam;\
815  DEBUG_PROFILE_PROXY_STOP(method)\
816  return ret;\
817 }
818 
819 //______________________________________________________________________________
820 #define RETURN_METHOD_ARG9(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,type8,par8,type9,par9)\
821 void _NAME4_(p2,klass,method,par1)(void *in)\
822 {\
823  struct tmp {\
824  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type ret;\
825  };\
826  tmp *p = (tmp*)in;\
827  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7,p->par8,p->par9);\
828 }\
829 \
830 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9)\
831 {\
832  DEBUG_PROFILE_PROXY_START(method)\
833  type ret;\
834  struct tmp {\
835  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type ret;\
836  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6),par7(par7),par8(par8),par9(par9) {}\
837  };\
838  fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9);\
839  fCallBack = &_NAME4_(p2,klass,method,par1);\
840  Bool_t batch = ForwardCallBack(1);\
841  par1 = ((tmp*)fParam)->par1;\
842  par2 = ((tmp*)fParam)->par2;\
843  par3 = ((tmp*)fParam)->par3;\
844  par4 = ((tmp*)fParam)->par4;\
845  par5 = ((tmp*)fParam)->par5;\
846  par6 = ((tmp*)fParam)->par6;\
847  par7 = ((tmp*)fParam)->par7;\
848  par8 = ((tmp*)fParam)->par8;\
849  par9 = ((tmp*)fParam)->par9;\
850  ret = ((tmp*)fParam)->ret;\
851  if (!batch) delete fParam;\
852  DEBUG_PROFILE_PROXY_STOP(method)\
853  return ret;\
854 }
855 
856 //______________________________________________________________________________
857 #define RETURN_METHOD_ARG10(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,type8,par8,type9,par9,type10,par10)\
858 void _NAME4_(p2,klass,method,par1)(void *in)\
859 {\
860  struct tmp {\
861  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type ret;\
862  };\
863  tmp *p = (tmp*)in;\
864  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7,p->par8,p->par9,p->par10);\
865 }\
866 \
867 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9,type10 par10)\
868 {\
869  DEBUG_PROFILE_PROXY_START(method)\
870  type ret;\
871  struct tmp {\
872  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type ret;\
873  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9,type10 par10):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6),par7(par7),par8(par8),par9(par9),par10(par10) {}\
874  };\
875  fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9,par10);\
876  fCallBack = &_NAME4_(p2,klass,method,par1);\
877  Bool_t batch = ForwardCallBack(1);\
878  par1 = ((tmp*)fParam)->par1;\
879  par2 = ((tmp*)fParam)->par2;\
880  par3 = ((tmp*)fParam)->par3;\
881  par4 = ((tmp*)fParam)->par4;\
882  par5 = ((tmp*)fParam)->par5;\
883  par6 = ((tmp*)fParam)->par6;\
884  par7 = ((tmp*)fParam)->par7;\
885  par8 = ((tmp*)fParam)->par8;\
886  par9 = ((tmp*)fParam)->par9;\
887  par10 = ((tmp*)fParam)->par10;\
888  ret = ((tmp*)fParam)->ret;\
889  if (!batch) delete fParam;\
890  DEBUG_PROFILE_PROXY_STOP(method)\
891  return ret;\
892 }
893 
894 //______________________________________________________________________________
895 #define RETURN_METHOD_ARG11(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,type8,par8,type9,par9,type10,par10,type11,par11)\
896 void _NAME4_(p2,klass,method,par1)(void *in)\
897 {\
898  struct tmp {\
899  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type11 par11; type ret;\
900  };\
901  tmp *p = (tmp*)in;\
902  p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7,p->par8,p->par9,p->par10,p->par11);\
903 }\
904 \
905 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9,type10 par10,type11 par11)\
906 {\
907  DEBUG_PROFILE_PROXY_START(method)\
908  type ret;\
909  struct tmp {\
910  type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type11 par11; type ret;\
911  tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9,type10 par10,type11 par11):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5),par6(par6),par7(par7),par8(par8),par9(par9),par10(par10),par11(par11) {}\
912  };\
913  fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9,par10,par11);\
914  fCallBack = &_NAME4_(p2,klass,method,par1);\
915  Bool_t batch = ForwardCallBack(1);\
916  par1 = ((tmp*)fParam)->par1;\
917  par2 = ((tmp*)fParam)->par2;\
918  par3 = ((tmp*)fParam)->par3;\
919  par4 = ((tmp*)fParam)->par4;\
920  par5 = ((tmp*)fParam)->par5;\
921  par6 = ((tmp*)fParam)->par6;\
922  par7 = ((tmp*)fParam)->par7;\
923  par8 = ((tmp*)fParam)->par8;\
924  par9 = ((tmp*)fParam)->par9;\
925  par10 = ((tmp*)fParam)->par10;\
926  par11 = ((tmp*)fParam)->par11;\
927  ret = ((tmp*)fParam)->ret;\
928  if (!batch) delete fParam;\
929  DEBUG_PROFILE_PROXY_STOP(method)\
930  return ret;\
931 }
932 
933 #endif
static int gDebugProxy
static double total_time
static unsigned int total