⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 typedecl_8h-source.html

📁 java 反射机制详解示例,实现类属性及方法修改
💻 HTML
📖 第 1 页 / 共 4 页
字号:
00307 }00308 <font class="preprocessor">#else</font>00309 <font class="preprocessor"></font><font class="keyword">template</font>&lt;<font class="keyword">class</font> __P&gt;00310 <font class="keyword">inline</font> <a class="code" href="classRTTIType.html">RTTIType</a>* RTTITypeOfPtrToPtr(__P <font class="keyword">const</font>*<font class="keyword">const</font>*<font class="keyword">const</font>*) { 00311     <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="classRTTIPtrType.html">RTTIPtrType</a>(<font class="keyword">new</font> <a class="code" href="classRTTIPtrType.html">RTTIPtrType</a>(&amp;__P::RTTIDescriptor));00312 }00313 <font class="preprocessor">#endif</font>00314 <font class="preprocessor"></font>    00315 <font class="keyword">template</font>&lt;<font class="keyword">class</font> __RT, <font class="keyword">class</font> __C&gt;00316 <font class="keyword">class </font>RTTIFuncType0 : <font class="keyword">public</font> <a class="code" href="classRTTIMethodType.html">RTTIMethodType</a> { 00317   <font class="keyword">public</font>:00318     <font class="keyword">typedef</font> __RT (__C::*fptr)();00319     fptr f;00320     RTTIFuncType0(fptr f) { 00321         this-&gt;f = f;00322         methodClass = &amp;__C::RTTIDescriptor;00323         returnType = RTTITypeOfPtr((__RT*)0);00324         nParams = 0;00325         paramType = NULL;00326     }00327     <font class="keywordtype">void</font> invoke(<font class="keywordtype">void</font>* result, <font class="keywordtype">void</font>* obj, <font class="keywordtype">void</font>* params[]) { 00328         *(__RT*)result = (((__C*)obj)-&gt;*f)();00329     }00330 };00331 00332 <font class="keyword">template</font>&lt;<font class="keyword">class</font> __RT, <font class="keyword">class</font> __C, <font class="keyword">class</font> __P1&gt;00333 <font class="keyword">class </font>RTTIFuncType1 : <font class="keyword">public</font> <a class="code" href="classRTTIMethodType.html">RTTIMethodType</a>{ 00334   <font class="keyword">public</font>:00335     <font class="keyword">typedef</font> __RT (__C::*fptr)(__P1);00336     fptr f;00337     RTTIFuncType1(fptr f) { 00338         this-&gt;f = f;00339         methodClass = &amp;__C::RTTIDescriptor;00340         returnType = RTTITypeOfPtr((__RT*)0);00341         nParams = 1;00342         paramTypes = <font class="keyword">new</font> <a class="code" href="classRTTIType.html">RTTIType</a>*[1];00343         paramTypes[0] = RTTITypeOfPtr((__P1*)0);00344     }00345     <font class="keywordtype">void</font> invoke(<font class="keywordtype">void</font>* result, <font class="keywordtype">void</font>* obj, <font class="keywordtype">void</font>* params[]) { 00346         *(__RT*)result = (((__C*)obj)-&gt;*f)(*(__P1*)params[0]);00347     }00348 };00349 00350 <font class="keyword">template</font>&lt;<font class="keyword">class</font> __RT, <font class="keyword">class</font> __C, <font class="keyword">class</font> __P1, <font class="keyword">class</font> __P2&gt;00351 <font class="keyword">class </font>RTTIFuncType2 : <font class="keyword">public</font> <a class="code" href="classRTTIMethodType.html">RTTIMethodType</a>{ 00352   <font class="keyword">public</font>:00353     <font class="keyword">typedef</font> __RT (__C::*fptr)(__P1, __P2);00354     fptr f;00355     RTTIFuncType2(fptr f) { 00356         this-&gt;f = f;00357         methodClass = &amp;__C::RTTIDescriptor;00358         returnType = RTTITypeOfPtr((__RT*)0);00359         nParams = 2;00360         paramTypes = <font class="keyword">new</font> <a class="code" href="classRTTIType.html">RTTIType</a>*[2];00361         paramTypes[0] = RTTITypeOfPtr((__P1*)0);00362         paramTypes[1] = RTTITypeOfPtr((__P2*)0);00363     }00364     <font class="keywordtype">void</font> invoke(<font class="keywordtype">void</font>* result, <font class="keywordtype">void</font>* obj, <font class="keywordtype">void</font>* params[]) { 00365         *(__RT*)result = (((__C*)obj)-&gt;*f)(*(__P1*)params[0], *(__P2*)params[1]);00366     }00367 };00368 00369 <font class="keyword">template</font>&lt;<font class="keyword">class</font> __RT, <font class="keyword">class</font> __C, <font class="keyword">class</font> __P1, <font class="keyword">class</font> __P2, <font class="keyword">class</font> __P3&gt;00370 <font class="keyword">class </font>RTTIFuncType3 : <font class="keyword">public</font> <a class="code" href="classRTTIMethodType.html">RTTIMethodType</a>{ 00371   <font class="keyword">public</font>:00372     <font class="keyword">typedef</font> __RT (__C::*fptr)(__P1, __P2, __P3);00373     fptr f;00374     RTTIFuncType3(fptr f) { 00375         this-&gt;f = f;00376         methodClass = &amp;__C::RTTIDescriptor;00377         returnType = RTTITypeOfPtr((__RT*)0);00378         nParams = 3;00379         paramTypes = <font class="keyword">new</font> <a class="code" href="classRTTIType.html">RTTIType</a>*[3];00380         paramTypes[0] = RTTITypeOfPtr((__P1*)0);00381         paramTypes[1] = RTTITypeOfPtr((__P2*)0);00382         paramTypes[2] = RTTITypeOfPtr((__P3*)0);00383     }00384     <font class="keywordtype">void</font> invoke(<font class="keywordtype">void</font>* result, <font class="keywordtype">void</font>* obj, <font class="keywordtype">void</font>* params[]) { 00385         *(__RT*)result = (((__C*)obj)-&gt;*f)(*(__P1*)params[0], *(__P2*)params[1], *(__P3*)params[2]);00386     }00387 };00388 00389 <font class="keyword">template</font>&lt;<font class="keyword">class</font> __RT, <font class="keyword">class</font> __C, <font class="keyword">class</font> __P1, <font class="keyword">class</font> __P2, <font class="keyword">class</font> __P3, <font class="keyword">class</font> __P4&gt;00390 <font class="keyword">class </font>RTTIFuncType4 : <font class="keyword">public</font> <a class="code" href="classRTTIMethodType.html">RTTIMethodType</a>{ 00391   <font class="keyword">public</font>:00392     <font class="keyword">typedef</font> __RT (__C::*fptr)(__P1, __P2, __P3, __P4);00393     fptr f;00394     RTTIFuncType4(fptr f) { 00395         this-&gt;f = f;00396         methodClass = &amp;__C::RTTIDescriptor;00397         returnType = RTTITypeOfPtr((__RT*)0);00398         nParams = 4;00399         paramTypes = <font class="keyword">new</font> <a class="code" href="classRTTIType.html">RTTIType</a>*[4];00400         paramTypes[0] = RTTITypeOfPtr((__P1*)0);00401         paramTypes[1] = RTTITypeOfPtr((__P2*)0);00402         paramTypes[2] = RTTITypeOfPtr((__P3*)0);00403         paramTypes[3] = RTTITypeOfPtr((__P4*)0);00404     }00405     <font class="keywordtype">void</font> invoke(<font class="keywordtype">void</font>* result, <font class="keywordtype">void</font>* obj, <font class="keywordtype">void</font>* params[]) { 00406         *(__RT*)result = (((__C*)obj)-&gt;*f)(*(__P1*)params[0], *(__P2*)params[1], *(__P3*)params[2], *(__P4*)params[3]);00407     }00408 };00409 00410 <font class="keyword">template</font>&lt;<font class="keyword">class</font> __RT, <font class="keyword">class</font> __C, <font class="keyword">class</font> __P1, <font class="keyword">class</font> __P2, <font class="keyword">class</font> __P3, <font class="keyword">class</font> __P4, <font class="keyword">class</font> __P5&gt;00411 <font class="keyword">class </font>RTTIFuncType5 : <font class="keyword">public</font> <a class="code" href="classRTTIMethodType.html">RTTIMethodType</a>{ 00412   <font class="keyword">public</font>:00413     <font class="keyword">typedef</font> __RT (__C::*fptr)(__P1, __P2, __P3, __P4, __P5);00414     fptr f;00415     RTTIFuncType5(fptr f) { 00416         this-&gt;f = f;00417         methodClass = &amp;__C::RTTIDescriptor;00418         returnType = RTTITypeOfPtr((__RT*)0);00419         nParams = 5;00420         paramTypes = <font class="keyword">new</font> <a class="code" href="classRTTIType.html">RTTIType</a>*[5];00421         paramTypes[0] = RTTITypeOfPtr((__P1*)0);00422         paramTypes[1] = RTTITypeOfPtr((__P2*)0);00423         paramTypes[2] = RTTITypeOfPtr((__P3*)0);00424         paramTypes[3] = RTTITypeOfPtr((__P4*)0);00425         paramTypes[4] = RTTITypeOfPtr((__P5*)0);00426     }00427     <font class="keywordtype">void</font> invoke(<font class="keywordtype">void</font>* result, <font class="keywordtype">void</font>* obj, <font class="keywordtype">void</font>* params[]) { 00428         *(__RT*)result = (((__C*)obj)-&gt;*f)(*(__P1*)params[0], *(__P2*)params[1], *(__P3*)params[2], *(__P4*)params[3], *(__P5*)params[4]);00429     }00430 };00431 00432 00433 <font class="keyword">template</font>&lt;<font class="keyword">class</font> __C&gt;00434 <font class="keyword">class </font>RTTIProcType0 : <font class="keyword">public</font> <a class="code" href="classRTTIMethodType.html">RTTIMethodType</a> { 00435   <font class="keyword">public</font>:00436     <font class="keyword">typedef</font> void (__C::*fptr)();00437     fptr f;00438     RTTIProcType0(fptr f) { 00439         this-&gt;f = f;00440         methodClass = &amp;__C::RTTIDescriptor;00441         returnType = &amp;voidType;00442         nParams = 0;00443         paramTypes = NULL;00444     }00445     <font class="keywordtype">void</font> invoke(<font class="keywordtype">void</font>*, <font class="keywordtype">void</font>* obj, <font class="keywordtype">void</font>* params[]) { 00446         (((__C*)obj)-&gt;*f)();00447     }00448 };00449 00450 <font class="keyword">template</font>&lt;<font class="keyword">class</font> __C, <font class="keyword">class</font> __P1&gt;00451 <font class="keyword">class </font>RTTIProcType1 : <font class="keyword">public</font> <a class="code" href="classRTTIMethodType.html">RTTIMethodType</a>{ 00452   <font class="keyword">public</font>:00453     <font class="keyword">typedef</font> void (__C::*fptr)(__P1);00454     fptr f;00455     RTTIProcType1(fptr f) { 00456         this-&gt;f = f;00457         methodClass = &amp;__C::RTTIDescriptor;00458         returnType = &amp;voidType;00459         nParams = 1;00460         paramTypes = <font class="keyword">new</font> <a class="code" href="classRTTIType.html">RTTIType</a>*[1];00461         paramTypes[0] = RTTITypeOfPtr((__P1*)0);00462     }00463     <font class="keywordtype">void</font> invoke(<font class="keywordtype">void</font>*, <font class="keywordtype">void</font>* obj, <font class="keywordtype">void</font>* params[]) { 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -