TGWin32ProxyDefs.h

Go to the documentation of this file.
00001 // @(#)root/win32gdk:$Id: TGWin32ProxyDefs.h 24423 2008-06-20 14:47:08Z rdm $
00002 // Author: Valeriy Onuchin  08/08/2003
00003 
00004 
00005 /*************************************************************************
00006  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
00007  * All rights reserved.                                                  *
00008  *                                                                       *
00009  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00010  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00011  *************************************************************************/
00012 
00013 #ifndef ROOT_TGWin32ProxyDefs
00014 #define ROOT_TGWin32ProxyDefs
00015 
00016 #include "Rtypes.h"  // CINT headers
00017 
00018 
00019 #define _NAME4_(name1,name2,name3,name4) _NAME3_(name1,name2,name3)name4
00020 
00021 
00022 
00023 ///////////////////// debug & profile interface /////////////////////////////
00024 //
00025 // - recompile with gDebugProxy = 1
00026 //
00027 // root [0] gDebug = -123 //  start profiling
00028 //or
00029 // root [0] gDebug = -1234 //  start profiling and debugging(call trace)
00030 //
00031 // root [1] .x macro.C    //  profile macro.C
00032 // root [2] gDebug = 0    //  stop profiling
00033 // root [3] .x macro.C    //  print results
00034 //
00035 
00036 static int gDebugProxy = 0; // if kTRUE - use debug & profile interface
00037 
00038 static enum { kDebugProfile = -123, kDebugTrace = -1234 };
00039 
00040 static unsigned int total = 0;
00041 static double total_time = 0;
00042 
00043 #define DEBUG_PROFILE_PROXY_START(method)\
00044    static int i = 0;\
00045    static double t = 0;\
00046    double start = 0;\
00047    int gDebugValue = 0;\
00048    int debug = 0;\
00049    if (gDebugProxy) {\
00050       gDebugValue = gDebug;\
00051       debug = (gDebugValue==kDebugProfile) || (gDebugValue==kDebugTrace);\
00052       if (debug) {\
00053          start = GetMilliSeconds();\
00054       } else {\
00055          if (total) {\
00056             printf("  method name                       hits     time/hits(ms)   time(ms) | Total = %d hits %6.2f ms\n",total,total_time );\
00057             printf("------------------------------------------------------------------------------------------------------------\n");\
00058          }\
00059          if (i && !total) {\
00060             printf("  %-30s    %-6d       %-3.2f        %-4.2f\n",#method,i,t/i,t);\
00061          }\
00062          total_time = t = total = i = 0;\
00063       }\
00064    }\
00065 
00066 #define DEBUG_PROFILE_PROXY_STOP(method)\
00067    if (gDebugProxy) {\
00068       if (debug) {\
00069          double dt = GetMilliSeconds() - start;\
00070          i++; total++;\
00071          t += dt;\
00072          total_time += dt;\
00073          if (gDebugValue==kDebugTrace) printf(#method " %d\n",i);\
00074       }\
00075    }\
00076 
00077 
00078 //______________________________________________________________________________
00079 #define RETURN_PROXY_OBJECT(klass)\
00080 _NAME2_(T,klass)* _NAME3_(TGWin32,klass,Proxy)::ProxyObject()\
00081 {\
00082    static TList *gListOfProxies = new TList();\
00083    static _NAME3_(TGWin32,klass,Proxy) *proxy = 0;\
00084    ULong_t id = ::GetCurrentThreadId();\
00085    if (proxy && (proxy->GetId()==id)) return proxy;\
00086    if (id==fgMainThreadId) return _NAME3_(TGWin32,klass,Proxy)::RealObject();\
00087    TIter next(gListOfProxies);\
00088    while ((proxy=(_NAME3_(TGWin32,klass,Proxy)*)next())) {\
00089       if (proxy->GetId()==id) {\
00090          return proxy;\
00091       }\
00092    }\
00093    proxy = new _NAME3_(TGWin32,klass,Proxy)();\
00094    gListOfProxies->Add(proxy);\
00095    return proxy;\
00096 }
00097 
00098 // ***_LOCK macros for setter methods which do nothing only set data members
00099 //______________________________________________________________________________
00100 #define VOID_METHOD_ARG0_LOCK(klass,method)\
00101 void _NAME3_(TGWin32,klass,Proxy)::method()\
00102 {\
00103    DEBUG_PROFILE_PROXY_START(method)\
00104    TGWin32::Lock();\
00105    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method();\
00106    TGWin32::Unlock();\
00107    DEBUG_PROFILE_PROXY_STOP(method)\
00108 }
00109 
00110 //______________________________________________________________________________
00111 #define VOID_METHOD_ARG1_LOCK(klass,method,type1,par1)\
00112 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1)\
00113 {\
00114    DEBUG_PROFILE_PROXY_START(method)\
00115    TGWin32::Lock();\
00116    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(par1);\
00117    TGWin32::Unlock();\
00118    DEBUG_PROFILE_PROXY_STOP(method)\
00119 }
00120 
00121 //______________________________________________________________________________
00122 #define VOID_METHOD_ARG2_LOCK(klass,method,type1,par1,type2,par2)\
00123 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2)\
00124 {\
00125    DEBUG_PROFILE_PROXY_START(method)\
00126    TGWin32::Lock();\
00127     _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(par1,par2);\
00128    TGWin32::Unlock();\
00129    DEBUG_PROFILE_PROXY_STOP(method)\
00130 }
00131 
00132 //______________________________________________________________________________
00133 #define VOID_METHOD_ARG3_LOCK(klass,method,type1,par1,type2,par2,type3,par3)\
00134 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3)\
00135 {\
00136    DEBUG_PROFILE_PROXY_START(method)\
00137    TGWin32::Lock();\
00138     _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(par1,par2,par3);\
00139    TGWin32::Unlock();\
00140    DEBUG_PROFILE_PROXY_STOP(method)\
00141 }
00142 
00143 //______________________________________________________________________________
00144 #define VOID_METHOD_ARG4_LOCK(klass,method,type1,par1,type2,par2,type3,par3,type4,par4)\
00145 void  _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4)\
00146 {\
00147    DEBUG_PROFILE_PROXY_START(method)\
00148    TGWin32::Lock();\
00149    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(par1,par2,par3,par4);\
00150    TGWin32::Unlock();\
00151    DEBUG_PROFILE_PROXY_STOP(method)\
00152 }
00153 
00154 //______________________________________________________________________________
00155 #define VOID_METHOD_ARG5_LOCK(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5)\
00156 void  _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5)\
00157 {\
00158    DEBUG_PROFILE_PROXY_START(method)\
00159    TGWin32::Lock();\
00160     _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(par1,par2,par3,par4,par5);\
00161    TGWin32::Unlock();\
00162    DEBUG_PROFILE_PROXY_STOP(method)\
00163 }
00164 
00165 //______________________________________________________________________________
00166 #define VOID_METHOD_ARG0(klass,method,sync)\
00167 void _NAME3_(p2,klass,method)(void *in)\
00168 {\
00169    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method();\
00170 }\
00171 \
00172 void _NAME3_(TGWin32,klass,Proxy)::method()\
00173 {\
00174    DEBUG_PROFILE_PROXY_START(method)\
00175    fCallBack = &_NAME3_(p2,klass,method);\
00176    ForwardCallBack(sync);\
00177    DEBUG_PROFILE_PROXY_STOP(method)\
00178 }
00179 
00180 //______________________________________________________________________________
00181 #define VOID_METHOD_ARG1(klass,method,type1,par1,sync)\
00182 void _NAME4_(p2,klass,method,par1)(void *in)\
00183 {\
00184    struct tmp {\
00185       type1 par1;\
00186    };\
00187    tmp *p = (tmp*)in;\
00188    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1);\
00189 }\
00190 \
00191 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1)\
00192 {\
00193    DEBUG_PROFILE_PROXY_START(method)\
00194    struct tmp {\
00195       type1 par1;\
00196       tmp(type1 par1):par1(par1) {}\
00197    };\
00198    fParam = new tmp(par1);\
00199    fCallBack = &_NAME4_(p2,klass,method,par1);\
00200    Bool_t batch = ForwardCallBack(sync);\
00201    par1 = ((tmp*)fParam)->par1;\
00202    if (!batch) delete fParam;\
00203    DEBUG_PROFILE_PROXY_STOP(method)\
00204 }
00205 
00206 //______________________________________________________________________________
00207 #define VOID_METHOD_ARG2(klass,method,type1,par1,type2,par2,sync)\
00208 void _NAME4_(p2,klass,method,par1)(void *in)\
00209 {\
00210    struct tmp {\
00211       type1 par1; type2 par2;\
00212    };\
00213    tmp *p = (tmp*)in;\
00214    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2);\
00215 }\
00216 \
00217 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2)\
00218 {\
00219    DEBUG_PROFILE_PROXY_START(method)\
00220    struct tmp {\
00221       type1 par1; type2 par2;\
00222       tmp(type1 par1,type2 par2):par1(par1),par2(par2) {}\
00223    };\
00224    fParam = new tmp(par1,par2);\
00225    fCallBack = &_NAME4_(p2,klass,method,par1);\
00226    Bool_t batch = ForwardCallBack(sync);\
00227    par1 = ((tmp*)fParam)->par1;\
00228    par2 = ((tmp*)fParam)->par2;\
00229    if (!batch) delete fParam;\
00230    DEBUG_PROFILE_PROXY_STOP(method)\
00231 }
00232 
00233 //______________________________________________________________________________
00234 #define VOID_METHOD_ARG3(klass,method,type1,par1,type2,par2,type3,par3,sync)\
00235 void _NAME4_(p2,klass,method,par1)(void *in)\
00236 {\
00237    struct tmp {\
00238       type1 par1; type2 par2; type3 par3;\
00239    };\
00240    tmp *p = (tmp*)in;\
00241    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3);\
00242 }\
00243 \
00244 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3)\
00245 {\
00246    DEBUG_PROFILE_PROXY_START(method)\
00247    struct tmp {\
00248       type1 par1; type2 par2; type3 par3;\
00249       tmp(type1 par1,type2 par2,type3 par3):par1(par1),par2(par2),par3(par3) {}\
00250    };\
00251    fParam = new tmp(par1,par2,par3);\
00252    fCallBack = &_NAME4_(p2,klass,method,par1);\
00253    Bool_t batch = ForwardCallBack(sync);\
00254    par1 = ((tmp*)fParam)->par1;\
00255    par2 = ((tmp*)fParam)->par2;\
00256    par3 = ((tmp*)fParam)->par3;\
00257    if (!batch) delete fParam;\
00258    DEBUG_PROFILE_PROXY_STOP(method)\
00259 }
00260 
00261 //______________________________________________________________________________
00262 #define VOID_METHOD_ARG4(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,sync)\
00263 void _NAME4_(p2,klass,method,par1)(void *in)\
00264 {\
00265    struct tmp {\
00266       type1 par1; type2 par2; type3 par3; type4 par4;\
00267    };\
00268    tmp *p = (tmp*)in;\
00269    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4);\
00270 }\
00271 \
00272 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4)\
00273 {\
00274    DEBUG_PROFILE_PROXY_START(method)\
00275    struct tmp {\
00276       type1 par1; type2 par2; type3 par3; type4 par4;\
00277       tmp(type1 par1,type2 par2,type3 par3,type4 par4):par1(par1),par2(par2),par3(par3),par4(par4) {}\
00278    };\
00279    fParam = new tmp(par1,par2,par3,par4);\
00280    fCallBack = &_NAME4_(p2,klass,method,par1);\
00281    Bool_t batch = ForwardCallBack(sync);\
00282    par1 = ((tmp*)fParam)->par1;\
00283    par2 = ((tmp*)fParam)->par2;\
00284    par3 = ((tmp*)fParam)->par3;\
00285    par4 = ((tmp*)fParam)->par4;\
00286    if (!batch) delete fParam;\
00287    DEBUG_PROFILE_PROXY_STOP(method)\
00288 }
00289 
00290 //______________________________________________________________________________
00291 #define VOID_METHOD_ARG5(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,sync)\
00292 void _NAME4_(p2,klass,method,par1)(void *in)\
00293 {\
00294    struct tmp {\
00295       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5;\
00296    };\
00297    tmp *p = (tmp*)in;\
00298    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5);\
00299 }\
00300 \
00301 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5)\
00302 {\
00303    DEBUG_PROFILE_PROXY_START(method)\
00304    struct tmp {\
00305       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5;\
00306       tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5) {}\
00307    };\
00308    fParam = new tmp(par1,par2,par3,par4,par5);\
00309    fCallBack = &_NAME4_(p2,klass,method,par1);\
00310    Bool_t batch = ForwardCallBack(sync);\
00311    par1 = ((tmp*)fParam)->par1;\
00312    par2 = ((tmp*)fParam)->par2;\
00313    par3 = ((tmp*)fParam)->par3;\
00314    par4 = ((tmp*)fParam)->par4;\
00315    par5 = ((tmp*)fParam)->par5;\
00316    if (!batch) delete fParam;\
00317    DEBUG_PROFILE_PROXY_STOP(method)\
00318 }
00319 
00320 //______________________________________________________________________________
00321 #define VOID_METHOD_ARG6(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,sync)\
00322 void _NAME4_(p2,klass,method,par1)(void *in)\
00323 {\
00324    struct tmp {\
00325       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6;\
00326    };\
00327    tmp *p = (tmp*)in;\
00328    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6);\
00329 }\
00330 \
00331 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6)\
00332 {\
00333    DEBUG_PROFILE_PROXY_START(method)\
00334    struct tmp {\
00335       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6;\
00336       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) {}\
00337    };\
00338    fParam = new tmp(par1,par2,par3,par4,par5,par6);\
00339    fCallBack = &_NAME4_(p2,klass,method,par1);\
00340    Bool_t batch = ForwardCallBack(sync);\
00341    par1 = ((tmp*)fParam)->par1;\
00342    par2 = ((tmp*)fParam)->par2;\
00343    par3 = ((tmp*)fParam)->par3;\
00344    par4 = ((tmp*)fParam)->par4;\
00345    par5 = ((tmp*)fParam)->par5;\
00346    par6 = ((tmp*)fParam)->par6;\
00347    if (!batch) delete fParam;\
00348    DEBUG_PROFILE_PROXY_STOP(method)\
00349 }
00350 
00351 //______________________________________________________________________________
00352 #define VOID_METHOD_ARG7(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,sync)\
00353 void _NAME4_(p2,klass,method,par1)(void *in)\
00354 {\
00355    struct tmp {\
00356       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7;\
00357    };\
00358    tmp *p = (tmp*)in;\
00359    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7);\
00360 }\
00361 \
00362 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7)\
00363 {\
00364    DEBUG_PROFILE_PROXY_START(method)\
00365    struct tmp {\
00366       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7;\
00367       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) {}\
00368    };\
00369    fParam = new tmp(par1,par2,par3,par4,par5,par6,par7);\
00370    fCallBack = &_NAME4_(p2,klass,method,par1);\
00371    Bool_t batch = ForwardCallBack(sync);\
00372    par1 = ((tmp*)fParam)->par1;\
00373    par2 = ((tmp*)fParam)->par2;\
00374    par3 = ((tmp*)fParam)->par3;\
00375    par4 = ((tmp*)fParam)->par4;\
00376    par5 = ((tmp*)fParam)->par5;\
00377    par6 = ((tmp*)fParam)->par6;\
00378    par7 = ((tmp*)fParam)->par7;\
00379    if (!batch) delete fParam;\
00380    DEBUG_PROFILE_PROXY_STOP(method)\
00381 }
00382 
00383 //______________________________________________________________________________
00384 #define VOID_METHOD_ARG8(klass,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,type8,par8,sync)\
00385 void _NAME4_(p2,klass,method,par1)(void *in)\
00386 {\
00387    struct tmp {\
00388       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8;\
00389    };\
00390    tmp *p = (tmp*)in;\
00391    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7,p->par8);\
00392 }\
00393 \
00394 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8)\
00395 {\
00396    DEBUG_PROFILE_PROXY_START(method)\
00397    struct tmp {\
00398       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8;\
00399       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) {}\
00400    };\
00401    fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8);\
00402    fCallBack = &_NAME4_(p2,klass,method,par1);\
00403    Bool_t batch = ForwardCallBack(sync);\
00404    par1 = ((tmp*)fParam)->par1;\
00405    par2 = ((tmp*)fParam)->par2;\
00406    par3 = ((tmp*)fParam)->par3;\
00407    par4 = ((tmp*)fParam)->par4;\
00408    par5 = ((tmp*)fParam)->par5;\
00409    par6 = ((tmp*)fParam)->par6;\
00410    par7 = ((tmp*)fParam)->par7;\
00411    par8 = ((tmp*)fParam)->par8;\
00412    if (!batch) delete fParam;\
00413    DEBUG_PROFILE_PROXY_STOP(method)\
00414 }
00415 
00416 //______________________________________________________________________________
00417 #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)\
00418 void _NAME4_(p2,klass,method,par1)(void *in)\
00419 {\
00420    struct tmp {\
00421       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9;\
00422    };\
00423    tmp *p = (tmp*)in;\
00424    _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7,p->par8,p->par9);\
00425 }\
00426 \
00427 void _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9)\
00428 {\
00429    DEBUG_PROFILE_PROXY_START(method)\
00430    struct tmp {\
00431       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9;\
00432       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) {}\
00433    };\
00434    fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9);\
00435    fCallBack = &_NAME4_(p2,klass,method,par1);\
00436    Bool_t batch = ForwardCallBack(sync);\
00437    par1 = ((tmp*)fParam)->par1;\
00438    par2 = ((tmp*)fParam)->par2;\
00439    par3 = ((tmp*)fParam)->par3;\
00440    par4 = ((tmp*)fParam)->par4;\
00441    par5 = ((tmp*)fParam)->par5;\
00442    par6 = ((tmp*)fParam)->par6;\
00443    par7 = ((tmp*)fParam)->par7;\
00444    par8 = ((tmp*)fParam)->par8;\
00445    par9 = ((tmp*)fParam)->par9;\
00446    if (!batch) delete fParam;\
00447    DEBUG_PROFILE_PROXY_STOP(method)\
00448 }
00449 
00450 //______________________________________________________________________________
00451 #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)\
00452 void _NAME4_(p2,klass,method,par1)(void *in)\
00453 {\
00454    struct tmp {\
00455       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10;\
00456    };\
00457    tmp *p = (tmp*)in;\
00458    _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);\
00459 }\
00460 \
00461 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)\
00462 {\
00463    DEBUG_PROFILE_PROXY_START(method)\
00464    struct tmp {\
00465       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10;\
00466       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) {}\
00467    };\
00468    fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9,par10);\
00469    fCallBack = &_NAME4_(p2,klass,method,par1);\
00470    Bool_t batch = ForwardCallBack(1);\
00471    par1 = ((tmp*)fParam)->par1;\
00472    par2 = ((tmp*)fParam)->par2;\
00473    par3 = ((tmp*)fParam)->par3;\
00474    par4 = ((tmp*)fParam)->par4;\
00475    par5 = ((tmp*)fParam)->par5;\
00476    par6 = ((tmp*)fParam)->par6;\
00477    par7 = ((tmp*)fParam)->par7;\
00478    par8 = ((tmp*)fParam)->par8;\
00479    par9 = ((tmp*)fParam)->par9;\
00480    par10 = ((tmp*)fParam)->par10;\
00481    if (!batch) delete fParam;\
00482    DEBUG_PROFILE_PROXY_STOP(method)\
00483 }
00484 
00485 //______________________________________________________________________________
00486 #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)\
00487 void _NAME4_(p2,klass,method,par1)(void *in)\
00488 {\
00489    struct tmp {\
00490       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type11 par11;\
00491    };\
00492    tmp *p = (tmp*)in;\
00493    _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);\
00494 }\
00495 \
00496 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)\
00497 {\
00498    DEBUG_PROFILE_PROXY_START(method)\
00499    struct tmp {\
00500       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type11 par11;\
00501       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) {}\
00502    };\
00503    fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9,par10,par11);\
00504    fCallBack = &_NAME4_(p2,klass,method,par1);\
00505    Bool_t batch = ForwardCallBack(1);\
00506    par1 = ((tmp*)fParam)->par1;\
00507    par2 = ((tmp*)fParam)->par2;\
00508    par3 = ((tmp*)fParam)->par3;\
00509    par4 = ((tmp*)fParam)->par4;\
00510    par5 = ((tmp*)fParam)->par5;\
00511    par6 = ((tmp*)fParam)->par6;\
00512    par7 = ((tmp*)fParam)->par7;\
00513    par8 = ((tmp*)fParam)->par8;\
00514    par9 = ((tmp*)fParam)->par9;\
00515    par10 = ((tmp*)fParam)->par10;\
00516    par11 = ((tmp*)fParam)->par11;\
00517    if (!batch) delete fParam;\
00518    DEBUG_PROFILE_PROXY_STOP(method)\
00519 }
00520 
00521 //______________________________________________________________________________
00522 #define RETURN_METHOD_ARG0_CONST(klass,type,method)\
00523 type _NAME3_(TGWin32,klass,Proxy)::method() const\
00524 {\
00525    type ret;\
00526    TGWin32::Lock();\
00527    ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method();\
00528    TGWin32::Unlock();\
00529    return ret;\
00530 }
00531 
00532 //______________________________________________________________________________
00533 #define RETURN_METHOD_ARG0(klass,type,method)\
00534 void _NAME3_(p2,klass,method)(void *in)\
00535 {\
00536    struct tmp {\
00537       type ret;\
00538    };\
00539    tmp *p = (tmp*)in;\
00540    p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method();\
00541 }\
00542 \
00543 type _NAME3_(TGWin32,klass,Proxy)::method()\
00544 {\
00545    DEBUG_PROFILE_PROXY_START(method)\
00546    type ret;\
00547    struct tmp {\
00548       type ret;\
00549    };\
00550    fParam = new tmp;\
00551    fCallBack = &_NAME3_(p2,klass,method);\
00552    Bool_t batch = ForwardCallBack(1);\
00553    ret  = ((tmp*)fParam)->ret;\
00554    if (!batch) delete fParam;\
00555    DEBUG_PROFILE_PROXY_STOP(method)\
00556    return ret;\
00557 }
00558 
00559 //______________________________________________________________________________
00560 #define RETURN_METHOD_ARG1(klass,type,method,type1,par1)\
00561 void _NAME4_(p2,klass,method,par1)(void *in)\
00562 {\
00563    struct tmp {\
00564       type1 par1; type ret;\
00565    };\
00566    tmp *p = (tmp*)in;\
00567    p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1);\
00568 }\
00569 \
00570 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1)\
00571 {\
00572    DEBUG_PROFILE_PROXY_START(method)\
00573    type ret;\
00574    struct tmp {\
00575       type1 par1; type ret;\
00576       tmp(type1 par1):par1(par1) {}\
00577    };\
00578    fParam = new tmp(par1);\
00579    fCallBack = &_NAME4_(p2,klass,method,par1);\
00580    Bool_t batch = ForwardCallBack(1);\
00581    par1 = ((tmp*)fParam)->par1;\
00582    ret  = ((tmp*)fParam)->ret;\
00583    if (!batch) delete fParam;\
00584    DEBUG_PROFILE_PROXY_STOP(method)\
00585    return ret;\
00586 }
00587 
00588 //______________________________________________________________________________
00589 #define RETURN_METHOD_ARG2(klass,type,method,type1,par1,type2,par2)\
00590 void _NAME4_(p2,klass,method,par1)(void *in)\
00591 {\
00592    struct tmp {\
00593       type1 par1; type2 par2; type ret;\
00594    };\
00595    tmp *p = (tmp*)in;\
00596    p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2);\
00597 }\
00598 \
00599 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2)\
00600 {\
00601    DEBUG_PROFILE_PROXY_START(method)\
00602    type ret;\
00603    struct tmp {\
00604       type1 par1; type2 par2; type ret;\
00605       tmp(type1 par1,type2 par2):par1(par1),par2(par2) {}\
00606    };\
00607    fParam = new tmp(par1,par2);\
00608    fCallBack = &_NAME4_(p2,klass,method,par1);\
00609    Bool_t batch = ForwardCallBack(1);\
00610    par1 = ((tmp*)fParam)->par1;\
00611    par2 = ((tmp*)fParam)->par2;\
00612    ret  = ((tmp*)fParam)->ret;\
00613    if (!batch) delete fParam;\
00614    DEBUG_PROFILE_PROXY_STOP(method)\
00615    return ret;\
00616 }
00617 
00618 //______________________________________________________________________________
00619 #define RETURN_METHOD_ARG3(klass,type,method,type1,par1,type2,par2,type3,par3)\
00620 void _NAME4_(p2,klass,method,par1)(void *in)\
00621 {\
00622    struct tmp {\
00623       type1 par1; type2 par2; type3 par3; type ret;\
00624    };\
00625    tmp *p = (tmp*)in;\
00626    p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3);\
00627 }\
00628 \
00629 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3)\
00630 {\
00631    DEBUG_PROFILE_PROXY_START(method)\
00632    type ret;\
00633    struct tmp {\
00634       type1 par1; type2 par2; type3 par3; type ret;\
00635       tmp(type1 par1,type2 par2,type3 par3):par1(par1),par2(par2),par3(par3) {}\
00636    };\
00637    fParam = new tmp(par1,par2,par3);\
00638    fCallBack = &_NAME4_(p2,klass,method,par1);\
00639    Bool_t batch = ForwardCallBack(1);\
00640    par1 = ((tmp*)fParam)->par1;\
00641    par2 = ((tmp*)fParam)->par2;\
00642    par3 = ((tmp*)fParam)->par3;\
00643    ret  = ((tmp*)fParam)->ret;\
00644    if (!batch) delete fParam;\
00645    DEBUG_PROFILE_PROXY_STOP(method)\
00646    return ret;\
00647 }
00648 
00649 //______________________________________________________________________________
00650 #define RETURN_METHOD_ARG4(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4)\
00651 void _NAME4_(p2,klass,method,par1)(void *in)\
00652 {\
00653    struct tmp {\
00654       type1 par1; type2 par2; type3 par3; type4 par4; type ret;\
00655    };\
00656    tmp *p = (tmp*)in;\
00657    p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4);\
00658 }\
00659 \
00660 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4)\
00661 {\
00662    DEBUG_PROFILE_PROXY_START(method)\
00663    type ret;\
00664    struct tmp {\
00665       type1 par1; type2 par2; type3 par3; type4 par4; type ret;\
00666       tmp(type1 par1,type2 par2,type3 par3,type4 par4):par1(par1),par2(par2),par3(par3),par4(par4) {}\
00667    };\
00668    fParam = new tmp(par1,par2,par3,par4);\
00669    fCallBack = &_NAME4_(p2,klass,method,par1);\
00670    Bool_t batch = ForwardCallBack(1);\
00671    par1 = ((tmp*)fParam)->par1;\
00672    par2 = ((tmp*)fParam)->par2;\
00673    par3 = ((tmp*)fParam)->par3;\
00674    par4 = ((tmp*)fParam)->par4;\
00675    ret  = ((tmp*)fParam)->ret;\
00676    if (!batch) delete fParam;\
00677    DEBUG_PROFILE_PROXY_STOP(method)\
00678    return ret;\
00679 }
00680 
00681 //______________________________________________________________________________
00682 #define RETURN_METHOD_ARG5(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5)\
00683 void _NAME4_(p2,klass,method,par1)(void *in)\
00684 {\
00685    struct tmp {\
00686       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type ret;\
00687    };\
00688    tmp *p = (tmp*)in;\
00689    p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5);\
00690 }\
00691 \
00692 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5)\
00693 {\
00694    DEBUG_PROFILE_PROXY_START(method)\
00695    type ret;\
00696    struct tmp {\
00697       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type ret;\
00698       tmp(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5):par1(par1),par2(par2),par3(par3),par4(par4),par5(par5) {}\
00699    };\
00700    fParam = new tmp(par1,par2,par3,par4,par5);\
00701    fCallBack = &_NAME4_(p2,klass,method,par1);\
00702    Bool_t batch = ForwardCallBack(1);\
00703    par1 = ((tmp*)fParam)->par1;\
00704    par2 = ((tmp*)fParam)->par2;\
00705    par3 = ((tmp*)fParam)->par3;\
00706    par4 = ((tmp*)fParam)->par4;\
00707    par5 = ((tmp*)fParam)->par5;\
00708    ret  = ((tmp*)fParam)->ret;\
00709    if (!batch) delete fParam;\
00710    DEBUG_PROFILE_PROXY_STOP(method)\
00711    return ret;\
00712 }
00713 
00714 //______________________________________________________________________________
00715 #define RETURN_METHOD_ARG6(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6)\
00716 void _NAME4_(p2,klass,method,par1)(void *in)\
00717 {\
00718    struct tmp {\
00719       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type ret;\
00720    };\
00721    tmp *p = (tmp*)in;\
00722    p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6);\
00723 }\
00724 \
00725 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6)\
00726 {\
00727    DEBUG_PROFILE_PROXY_START(method)\
00728    type ret;\
00729    struct tmp {\
00730       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type ret;\
00731       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) {}\
00732    };\
00733    fParam = new tmp(par1,par2,par3,par4,par5,par6);\
00734    fCallBack = &_NAME4_(p2,klass,method,par1);\
00735    Bool_t batch = ForwardCallBack(1);\
00736    par1 = ((tmp*)fParam)->par1;\
00737    par2 = ((tmp*)fParam)->par2;\
00738    par3 = ((tmp*)fParam)->par3;\
00739    par4 = ((tmp*)fParam)->par4;\
00740    par5 = ((tmp*)fParam)->par5;\
00741    par6 = ((tmp*)fParam)->par6;\
00742    ret  = ((tmp*)fParam)->ret;\
00743    if (!batch) delete fParam;\
00744    DEBUG_PROFILE_PROXY_STOP(method)\
00745    return ret;\
00746 }
00747 
00748 //______________________________________________________________________________
00749 #define RETURN_METHOD_ARG7(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7)\
00750 void _NAME4_(p2,klass,method,par1)(void *in)\
00751 {\
00752    struct tmp {\
00753       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type ret;\
00754    };\
00755    tmp *p = (tmp*)in;\
00756    p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7);\
00757 }\
00758 \
00759 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7)\
00760 {\
00761    DEBUG_PROFILE_PROXY_START(method)\
00762    type ret;\
00763    struct tmp {\
00764       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type ret;\
00765       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) {}\
00766    };\
00767    fParam = new tmp(par1,par2,par3,par4,par5,par6,par7);\
00768    fCallBack = &_NAME4_(p2,klass,method,par1);\
00769    Bool_t batch = ForwardCallBack(1);\
00770    par1 = ((tmp*)fParam)->par1;\
00771    par2 = ((tmp*)fParam)->par2;\
00772    par3 = ((tmp*)fParam)->par3;\
00773    par4 = ((tmp*)fParam)->par4;\
00774    par5 = ((tmp*)fParam)->par5;\
00775    par6 = ((tmp*)fParam)->par6;\
00776    par7 = ((tmp*)fParam)->par7;\
00777    ret  = ((tmp*)fParam)->ret;\
00778    if (!batch) delete fParam;\
00779    DEBUG_PROFILE_PROXY_STOP(method)\
00780    return ret;\
00781 }
00782 
00783 //______________________________________________________________________________
00784 #define RETURN_METHOD_ARG8(klass,type,method,type1,par1,type2,par2,type3,par3,type4,par4,type5,par5,type6,par6,type7,par7,type8,par8)\
00785 void _NAME4_(p2,klass,method,par1)(void *in)\
00786 {\
00787    struct tmp {\
00788       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type ret;\
00789    };\
00790    tmp *p = (tmp*)in;\
00791    p->ret = _NAME3_(TGWin32,klass,Proxy)::RealObject()->method(p->par1,p->par2,p->par3,p->par4,p->par5,p->par6,p->par7,p->par8);\
00792 }\
00793 \
00794 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8)\
00795 {\
00796    DEBUG_PROFILE_PROXY_START(method)\
00797    type ret;\
00798    struct tmp {\
00799       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type ret;\
00800       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) {}\
00801    };\
00802    fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8);\
00803    fCallBack = &_NAME4_(p2,klass,method,par1);\
00804    Bool_t batch = ForwardCallBack(1);\
00805    par1 = ((tmp*)fParam)->par1;\
00806    par2 = ((tmp*)fParam)->par2;\
00807    par3 = ((tmp*)fParam)->par3;\
00808    par4 = ((tmp*)fParam)->par4;\
00809    par5 = ((tmp*)fParam)->par5;\
00810    par6 = ((tmp*)fParam)->par6;\
00811    par7 = ((tmp*)fParam)->par7;\
00812    par8 = ((tmp*)fParam)->par8;\
00813    ret  = ((tmp*)fParam)->ret;\
00814    if (!batch) delete fParam;\
00815    DEBUG_PROFILE_PROXY_STOP(method)\
00816    return ret;\
00817 }
00818 
00819 //______________________________________________________________________________
00820 #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)\
00821 void _NAME4_(p2,klass,method,par1)(void *in)\
00822 {\
00823    struct tmp {\
00824       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type ret;\
00825    };\
00826    tmp *p = (tmp*)in;\
00827    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);\
00828 }\
00829 \
00830 type _NAME3_(TGWin32,klass,Proxy)::method(type1 par1,type2 par2,type3 par3,type4 par4,type5 par5,type6 par6,type7 par7,type8 par8,type9 par9)\
00831 {\
00832    DEBUG_PROFILE_PROXY_START(method)\
00833    type ret;\
00834    struct tmp {\
00835       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type ret;\
00836       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) {}\
00837    };\
00838    fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9);\
00839    fCallBack = &_NAME4_(p2,klass,method,par1);\
00840    Bool_t batch = ForwardCallBack(1);\
00841    par1 = ((tmp*)fParam)->par1;\
00842    par2 = ((tmp*)fParam)->par2;\
00843    par3 = ((tmp*)fParam)->par3;\
00844    par4 = ((tmp*)fParam)->par4;\
00845    par5 = ((tmp*)fParam)->par5;\
00846    par6 = ((tmp*)fParam)->par6;\
00847    par7 = ((tmp*)fParam)->par7;\
00848    par8 = ((tmp*)fParam)->par8;\
00849    par9 = ((tmp*)fParam)->par9;\
00850    ret  = ((tmp*)fParam)->ret;\
00851    if (!batch) delete fParam;\
00852    DEBUG_PROFILE_PROXY_STOP(method)\
00853    return ret;\
00854 }
00855 
00856 //______________________________________________________________________________
00857 #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)\
00858 void _NAME4_(p2,klass,method,par1)(void *in)\
00859 {\
00860    struct tmp {\
00861       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type ret;\
00862    };\
00863    tmp *p = (tmp*)in;\
00864    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);\
00865 }\
00866 \
00867 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)\
00868 {\
00869    DEBUG_PROFILE_PROXY_START(method)\
00870    type ret;\
00871    struct tmp {\
00872       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type ret;\
00873       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) {}\
00874    };\
00875    fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9,par10);\
00876    fCallBack = &_NAME4_(p2,klass,method,par1);\
00877    Bool_t batch = ForwardCallBack(1);\
00878    par1 = ((tmp*)fParam)->par1;\
00879    par2 = ((tmp*)fParam)->par2;\
00880    par3 = ((tmp*)fParam)->par3;\
00881    par4 = ((tmp*)fParam)->par4;\
00882    par5 = ((tmp*)fParam)->par5;\
00883    par6 = ((tmp*)fParam)->par6;\
00884    par7 = ((tmp*)fParam)->par7;\
00885    par8 = ((tmp*)fParam)->par8;\
00886    par9 = ((tmp*)fParam)->par9;\
00887    par10 = ((tmp*)fParam)->par10;\
00888    ret  = ((tmp*)fParam)->ret;\
00889    if (!batch) delete fParam;\
00890    DEBUG_PROFILE_PROXY_STOP(method)\
00891    return ret;\
00892 }
00893 
00894 //______________________________________________________________________________
00895 #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)\
00896 void _NAME4_(p2,klass,method,par1)(void *in)\
00897 {\
00898    struct tmp {\
00899       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type11 par11; type ret;\
00900    };\
00901    tmp *p = (tmp*)in;\
00902    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);\
00903 }\
00904 \
00905 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)\
00906 {\
00907    DEBUG_PROFILE_PROXY_START(method)\
00908    type ret;\
00909    struct tmp {\
00910       type1 par1; type2 par2; type3 par3; type4 par4; type5 par5; type6 par6; type7 par7; type8 par8; type9 par9; type10 par10; type11 par11; type ret;\
00911       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) {}\
00912    };\
00913    fParam = new tmp(par1,par2,par3,par4,par5,par6,par7,par8,par9,par10,par11);\
00914    fCallBack = &_NAME4_(p2,klass,method,par1);\
00915    Bool_t batch = ForwardCallBack(1);\
00916    par1 = ((tmp*)fParam)->par1;\
00917    par2 = ((tmp*)fParam)->par2;\
00918    par3 = ((tmp*)fParam)->par3;\
00919    par4 = ((tmp*)fParam)->par4;\
00920    par5 = ((tmp*)fParam)->par5;\
00921    par6 = ((tmp*)fParam)->par6;\
00922    par7 = ((tmp*)fParam)->par7;\
00923    par8 = ((tmp*)fParam)->par8;\
00924    par9 = ((tmp*)fParam)->par9;\
00925    par10 = ((tmp*)fParam)->par10;\
00926    par11 = ((tmp*)fParam)->par11;\
00927    ret  = ((tmp*)fParam)->ret;\
00928    if (!batch) delete fParam;\
00929    DEBUG_PROFILE_PROXY_STOP(method)\
00930    return ret;\
00931 }
00932 
00933 #endif

Generated on Tue Jul 5 14:14:43 2011 for ROOT_528-00b_version by  doxygen 1.5.1