Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

OSGTypedFunctors.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002  *                                OpenSG                                     *
00003  *                                                                           *
00004  *                                                                           *
00005  *             Copyright (C) 2002 by the OpenSG Forum                        *
00006  *                                                                           *
00007  *                            www.opensg.org                                 *
00008  *                                                                           *
00009  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
00010  *                                                                           *
00011 \*---------------------------------------------------------------------------*/
00012 /*---------------------------------------------------------------------------*\
00013  *                                License                                    *
00014  *                                                                           *
00015  * This library is free software; you can redistribute it and/or modify it   *
00016  * under the terms of the GNU Library General Public License as published    *
00017  * by the Free Software Foundation, version 2.                               *
00018  *                                                                           *
00019  * This library is distributed in the hope that it will be useful, but       *
00020  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
00022  * Library General Public License for more details.                          *
00023  *                                                                           *
00024  * You should have received a copy of the GNU Library General Public         *
00025  * License along with this library; if not, write to the Free Software       *
00026  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
00027  *                                                                           *
00028 \*---------------------------------------------------------------------------*/
00029 /*---------------------------------------------------------------------------*\
00030  *                                Changes                                    *
00031  *                                                                           *
00032  *                                                                           *
00033  *                                                                           *
00034  *                                                                           *
00035  *                                                                           *
00036  *                                                                           *
00037 \*---------------------------------------------------------------------------*/
00038 
00039 #ifndef _OSGTYPEDFUNCTORS_H_
00040 #define _OSGTYPEDFUNCTORS_H_
00041 #ifdef __sgi
00042 #pragma once
00043 #endif
00044 
00045 //---------------------------------------------------------------------------
00046 //  Includes
00047 //---------------------------------------------------------------------------
00048 
00049 #include <OSGTypedFunctorBase.h>
00050 
00051 #include <OSGTypedFunctors1.h>
00052 #include <OSGTypedFunctors2.h>
00053 
00054 OSG_BEGIN_NAMESPACE
00055 
00056 #ifndef OSG_MICROSOFT_COMPILER_ALERT
00057 
00058 //---------------------------------------------------------------------------
00059 //  osgTypedFunctionFunctor1Ptr
00060 //---------------------------------------------------------------------------
00061 
00065 template <class RetT, class Arg1T> inline
00066 TypedFunctionFunctor1<RetT, PtrCallArg<Arg1T> > osgTypedFunctionFunctor1Ptr   (
00067     RetT (*pFunc)(Arg1T *));
00068 
00072 template <class Arg1T> inline
00073 TypedFunctionVoidFunctor1< PtrCallArg<Arg1T> > osgTypedFunctionVoidFunctor1Ptr(
00074     void (*pFunc)(Arg1T *));
00075 
00076 //---------------------------------------------------------------------------
00077 //  osgTypedFunctionFunctor1Ref
00078 //---------------------------------------------------------------------------
00079 
00083 template <class RetT, class Arg1T> inline
00084 TypedFunctionFunctor1<RetT, RefCallArg<Arg1T> > osgTypedFunctionFunctor1Ref   (
00085     RetT (*pFunc)(Arg1T &));
00086 
00090 template <class Arg1T> inline
00091 TypedFunctionVoidFunctor1< RefCallArg<Arg1T> > osgTypedFunctionVoidFunctor1Ref(
00092     void (*pFunc)(Arg1T &));
00093 
00094 //---------------------------------------------------------------------------
00095 //  osgTypedFunctionFunctor1CPtr
00096 //---------------------------------------------------------------------------
00097 
00098 template <class RetT, class Arg1T>
00099 inline TypedFunctionFunctor1<RetT, CPtrCallArg<Arg1T> >
00100 osgTypedFunctionFunctor1CPtr(RetT (*pFunc)(Arg1T));
00101 
00105 template <class Arg1T> inline
00106 TypedFunctionVoidFunctor1< CPtrCallArg<Arg1T> >
00107     osgTypedFunctionVoidFunctor1CPtr(void (*pFunc)(Arg1T));
00108 
00109 //---------------------------------------------------------------------------
00110 //  osgTypedFunctionFunctor1CPtrRef
00111 //---------------------------------------------------------------------------
00112 
00116 template <class RetT, class Arg1T> inline
00117 TypedFunctionFunctor1<RetT, CPtrRefCallArg<Arg1T> >
00118     osgTypedFunctionFunctor1CPtrRef(RetT (*pFunc)(Arg1T &));
00119 
00120 //---------------------------------------------------------------------------
00121 //  osgTypedFunctionVoidFunctor1CPtrRef
00122 //---------------------------------------------------------------------------
00123 
00127 template <class Arg1T> inline
00128 TypedFunctionVoidFunctor1< CPtrRefCallArg<Arg1T> >
00129     osgTypedFunctionVoidFunctor1CPtrRef(void (*pFunc)(Arg1T &));
00130 
00131 
00132 //---------------------------------------------------------------------------
00133 //  osgTypedMethodFunctor1Ref
00134 //---------------------------------------------------------------------------
00135 
00139 template <class RetT, class Arg1T> inline
00140 TypedObjectFunctor1<RetT, RefCallArg<Arg1T> > osgTypedMethodFunctor1Ref   (
00141     RetT (Arg1T::*pFunc)());
00142 
00146 template <class Arg1T> inline
00147 TypedObjectVoidFunctor1< RefCallArg<Arg1T> > osgTypedMethodVoidFunctor1Ref(
00148     void (Arg1T::*pFunc)());
00149 
00150 //---------------------------------------------------------------------------
00151 //  osgTypedMethodFunctor1Ptr
00152 //---------------------------------------------------------------------------
00153 
00157 template <class RetT, class Arg1T> inline
00158 TypedObjectFunctor1<RetT, PtrCallArg<Arg1T> > osgTypedMethodFunctor1Ptr   (
00159     RetT (Arg1T::*pFunc)());
00160 
00164 template <class Arg1T> inline
00165 TypedObjectVoidFunctor1< PtrCallArg<Arg1T> > osgTypedMethodVoidFunctor1Ptr(
00166     void (Arg1T::*pFunc)());
00167 
00168 //---------------------------------------------------------------------------
00169 //  osgTypedMethodFunctor1ObjPtr
00170 //---------------------------------------------------------------------------
00171 
00175 template <class RetT, class ObjectT, class Arg1T> inline
00176 TypedStoredObjectFunctor1<RetT,
00177                           PtrCallArg<ObjectT>,
00178                           PtrCallArg<Arg1T  > >
00179     osgTypedMethodFunctor1ObjPtr(      ObjectT  *pObj,
00180                                  RetT (ObjectT::*pFunc)(Arg1T *));
00181 
00185 template <class ObjectT, class Arg1T> inline
00186 TypedStoredObjectVoidFunctor1<PtrCallArg<ObjectT>,
00187                               PtrCallArg<Arg1T  > >
00188     osgTypedMethodVoidFunctor1ObjPtr(      ObjectT  *pObj,
00189                                      void (ObjectT::*pFunc)(Arg1T *));
00190 
00191 //---------------------------------------------------------------------------
00192 //  osgTypedMethodFunctor1ObjPtrCPtrRef
00193 //---------------------------------------------------------------------------
00194 
00198 template <class RetT, class ObjectT, class Arg1T> inline
00199 TypedStoredObjectFunctor1<RetT,
00200                           PtrCallArg    <ObjectT>,
00201                           CPtrRefCallArg<Arg1T  > >
00202     osgTypedMethodFunctor1ObjPtrCPtrRef(      ObjectT  *pObj,
00203                                         RetT (ObjectT::*pFunc)(Arg1T &));
00204 
00208 template <class ObjectT, class Arg1T> inline
00209 TypedStoredObjectVoidFunctor1<PtrCallArg    <ObjectT>,
00210                               CPtrRefCallArg<Arg1T  > >
00211     osgTypedMethodVoidFunctor1ObjPtrCPtrRef(      ObjectT  *pObj,
00212                                             void (ObjectT::*pFunc)(Arg1T &));
00213 
00214 //---------------------------------------------------------------------------
00215 //  osgTypedMethodFunctor1CPtr
00216 //---------------------------------------------------------------------------
00217 
00218 template <class RetT, class Arg1T>
00219 inline TypedObjectFunctor1<RetT, CPtrCallArg<Arg1T> >
00220 osgTypedMethodFunctor1CPtr(
00221     typename FunctorBuildFuncType1<RetT,
00222                                    CPtrCallArg<Arg1T> >::ObjFuncType pFunc);
00223 
00224 
00228 template <class Arg1T> inline
00229 TypedObjectVoidFunctor1< CPtrCallArg<Arg1T> >
00230     osgTypedMethodVoidFunctor1CPtr(
00231         typename FunctorBuildFuncType1<
00232             void,
00233             CPtrCallArg<Arg1T> >::ObjFuncType pFunc);
00234 
00235 
00236 //---------------------------------------------------------------------------
00237 //  osgTypedMethodFunctor1CPtrRef
00238 //---------------------------------------------------------------------------
00239 
00243 template <class Arg1T> inline
00244 TypedObjectVoidFunctor1< CPtrRefCallArg<Arg1T> >
00245     osgTypedMethodVoidFunctor1CPtrRef(
00246         typename FunctorBuildFuncType1<
00247             void,
00248             CPtrRefCallArg<Arg1T> >::ObjFuncType pFunc);
00249 
00250 #endif
00251 
00252 //---------------------------------------------------------------------------
00253 //  osgTypedMethodFunctor1ObjCPtr
00254 //---------------------------------------------------------------------------
00255 
00260 template<class T1, class T2, class T3>
00261 struct TypedMethodVoidFunctor1ObjCPtrFGen
00262 {
00263     typedef          CPtrCallArg<T3>       CAT3;
00264 
00265     typedef typename CAT3::ArgType         Arg1T;
00266 
00267     typedef          ArgsCollector <Arg1T> ArgColl;
00268 
00269     typedef typename ClassMemFunc1<T1,
00270                                    typename T2::StoredObjectType,
00271                                    ArgColl                     >::MemFunc Func;
00272 };
00273 
00274 
00275 #ifndef OSG_MICROSOFT_COMPILER_ALERT
00276 
00280 template <class ObjectT, class Arg1T> inline
00281 TypedStoredObjectVoidFunctor1<
00282     CPtrCallArg<ObjectT>,
00283     CPtrCallArg<Arg1T  > > osgTypedMethodVoidFunctor1ObjCPtr(
00284 
00285              ObjectT                                           obj,
00286 
00287     typename TypedMethodVoidFunctor1ObjCPtrFGen<void,
00288                                                 ObjectT,
00289                                                 Arg1T  >::Func pFunc);
00290 
00291 #endif
00292 
00293 //---------------------------------------------------------------------------
00294 //  osgTypedMethodFunctor1ObjCPtrRef
00295 //---------------------------------------------------------------------------
00296 
00301 template<class T1, class T2, class T3>
00302 struct TypedMethodVoidFunctor1ObjCPtrRefFGen
00303 {
00304     typedef          CPtrRefCallArg<T3>    CAT3;
00305 
00306     typedef typename CAT3::ArgType         Arg1T;
00307 
00308     typedef          ArgsCollector <Arg1T> ArgColl;
00309 
00310     typedef typename ClassMemFunc1<T1,
00311                                    typename T2::StoredObjectType,
00312                                    ArgColl                     >::MemFunc Func;
00313 };
00314 
00315 #ifndef OSG_MICROSOFT_COMPILER_ALERT
00316 
00320 template <class ObjectT, class Arg1T> inline
00321 TypedStoredObjectVoidFunctor1<
00322     CPtrRefCallArg<ObjectT>,
00323     CPtrRefCallArg<Arg1T  > > osgTypedMethodVoidFunctor1ObjCPtrRef(
00324 
00325              ObjectT                                              obj,
00326 
00327     typename TypedMethodVoidFunctor1ObjCPtrRefFGen<void,
00328                                                    ObjectT,
00329                                                    Arg1T  >::Func pFunc);
00330 
00331 
00332 //---------------------------------------------------------------------------
00333 //  osgTypedFunctionFunctor2Ptr
00334 //---------------------------------------------------------------------------
00335 
00339 template <class RetT, class ObjectT, class Arg2T> inline
00340 TypedFunctionFunctor2<RetT,
00341                       PtrCallArg<ObjectT>,
00342                       ArgsCollector<Arg2T> >
00343     osgTypedFunctionFunctor2Ptr    (RetT (*pFunc)(ObjectT *, Arg2T));
00344 
00348 template <class ObjectT, class Arg2T> inline
00349 TypedFunctionVoidFunctor2<PtrCallArg <ObjectT>,
00350                           ArgsCollector<Arg2T> >
00351     osgTypedFunctionVoidFunctor2Ptr(void (*pFunc)(ObjectT *, Arg2T));
00352 
00353 //---------------------------------------------------------------------------
00354 //  osgTypedFunctionFunctor2Ref
00355 //---------------------------------------------------------------------------
00356 
00360 template <class RetT, class ObjectT, class Arg2T> inline
00361 TypedFunctionFunctor2<RetT,
00362                       RefCallArg<ObjectT>,
00363                       ArgsCollector<Arg2T> >
00364     osgTypedFunctionFunctor2Ref    (RetT (*pFunc)(ObjectT &, Arg2T));
00365 
00366 
00370 template <class ObjectT, class Arg2T> inline
00371 TypedFunctionVoidFunctor2<RefCallArg <ObjectT>,
00372                           ArgsCollector<Arg2T> >
00373     osgTypedFunctionVoidFunctor2Ref(void (*pFunc)(ObjectT &, Arg2T));
00374 
00375 //---------------------------------------------------------------------------
00376 //  osgTypedFunctionFunctor2CPtr
00377 //---------------------------------------------------------------------------
00378 
00379 template <class RetT, class ObjectT, class Arg2T>
00380 inline TypedFunctionFunctor2<RetT, CPtrCallArg<ObjectT>, ArgsCollector<Arg2T> >
00381 osgTypedFunctionFunctor2CPtr    (RetT (*pFunc)(ObjectT, Arg2T));
00382 
00383 template <class ObjectT, class Arg2T>
00384 inline TypedFunctionVoidFunctor2<CPtrCallArg<ObjectT>, ArgsCollector<Arg2T> >
00385 osgTypedFunctionVoidFunctor2Cptr(void (*pFunc)(ObjectT, Arg2T));
00386 
00387 //---------------------------------------------------------------------------
00388 //  osgTypedFunctionFunctor2CPtrRef
00389 //---------------------------------------------------------------------------
00390 
00394 template <class RetT, class ObjectT, class Arg2T> inline
00395 TypedFunctionFunctor2<RetT,
00396                       CPtrRefCallArg <ObjectT>,
00397                       ArgsCollector  <Arg2T> >
00398     osgTypedFunctionFunctor2CPtrRef    (RetT (*pFunc)(ObjectT &, Arg2T));
00399 
00403 template <class ObjectT, class Arg2T> inline
00404 TypedFunctionVoidFunctor2<CPtrRefCallArg <ObjectT>,
00405                           ArgsCollector  <Arg2T> >
00406     osgTypedFunctionVoidFunctor2CPtrRef(void (*pFunc)(ObjectT &, Arg2T));
00407 
00408 //---------------------------------------------------------------------------
00409 //  osgTypedMethodFunctor2Ref
00410 //---------------------------------------------------------------------------
00411 
00415 template <class RetT, class Arg1T, class Arg2T> inline
00416 TypedObjectFunctor2<RetT,
00417                     RefCallArg   <Arg1T>,
00418                     ArgsCollector<Arg2T> >
00419     osgTypedMethodFunctor2Ref(RetT (Arg1T::*pFunc)(Arg2T));
00420 
00424 template <class Arg1T, class Arg2T> inline
00425 TypedObjectVoidFunctor2<RefCallArg   <Arg1T>,
00426                         ArgsCollector<Arg2T> >
00427     osgTypedMethodVoidFunctor2Ref(void (Arg1T::*pFunc)(Arg2T));
00428 
00429 //---------------------------------------------------------------------------
00430 //  osgTypedMethodFunctor2Ptr
00431 //---------------------------------------------------------------------------
00432 
00436 template <class RetT, class Arg1T, class Arg2T> inline
00437 TypedObjectFunctor2<RetT,
00438                     PtrCallArg   <Arg1T>,
00439                     ArgsCollector<Arg2T> >
00440     osgTypedMethodFunctor2Ptr    (RetT (Arg1T::*pFunc)(Arg2T));
00441 
00445 template <class Arg1T, class Arg2T> inline
00446 TypedObjectVoidFunctor2<PtrCallArg   <Arg1T>,
00447                         ArgsCollector<Arg2T> >
00448     osgTypedMethodVoidFunctor2Ptr(void (Arg1T::*pFunc)(Arg2T));
00449 
00450 //---------------------------------------------------------------------------
00451 //  osgTypedMethodFunctor2ObjPtr
00452 //---------------------------------------------------------------------------
00453 
00457 template <class RetT,  class ObjectT,
00458           class Arg1T, class Arg2T  > inline
00459 TypedStoredObjectFunctor2<RetT,
00460                           PtrCallArg   <ObjectT>,
00461                           PtrCallArg   <Arg1T  >,
00462                           ArgsCollector<Arg2T  > >
00463     osgTypedMethodFunctor2ObjPtr    (      ObjectT  *pObj,
00464                                      RetT (ObjectT::*pFunc)(Arg1T *, Arg2T));
00465 
00469 template <class ObjectT, class Arg1T, class Arg2T> inline
00470 TypedStoredObjectVoidFunctor2<PtrCallArg   <ObjectT>,
00471                               PtrCallArg   <Arg1T  >,
00472                               ArgsCollector<Arg2T  > >
00473     osgTypedMethodVoidFunctor2ObjPtr(      ObjectT  *pObj,
00474                                      void (ObjectT::*pFunc)(Arg1T *, Arg2T));
00475 
00476 //---------------------------------------------------------------------------
00477 //  osgTypedMethodFunctor2ObjPtrCPtrRef
00478 //---------------------------------------------------------------------------
00479 
00483 template <class RetT,  class ObjectT,
00484           class Arg1T, class Arg2T  > inline
00485 TypedStoredObjectFunctor2<RetT,
00486                           PtrCallArg    <ObjectT>,
00487                           CPtrRefCallArg<Arg1T  >,
00488                           ArgsCollector <Arg2T  > >
00489     osgTypedMethodFunctor2ObjPtrCPtrRef(
00490           ObjectT  *pObj,
00491     RetT (ObjectT::*pFunc)(Arg1T &, Arg2T));
00492 
00496 template <class ObjectT, class Arg1T, class Arg2T> inline
00497 TypedStoredObjectVoidFunctor2<PtrCallArg    <ObjectT>,
00498                               CPtrRefCallArg<Arg1T  >,
00499                               ArgsCollector <Arg2T  > >
00500     osgTypedMethodVoidFunctor2ObjPtrCPtrRef(
00501           ObjectT  *pObj,
00502     void (ObjectT::*pFunc)(Arg1T &, Arg2T));
00503 
00504 //---------------------------------------------------------------------------
00505 //  osgTypedMethodFunctor2CPtr
00506 //---------------------------------------------------------------------------
00507 
00508 template <class RetT, class ObjectT, class Arg2T>
00509 inline TypedObjectFunctor2<RetT, CPtrCallArg<ObjectT>, ArgsCollector<Arg2T> >
00510 osgTypedMethodFunctor2CPtr(
00511     typename FunctorBuildFuncType2<RetT,
00512                                    CPtrCallArg<ObjectT>,
00513                                    ArgsCollector<Arg2T> >::ObjFuncType pFunc);
00514 
00515 template <class ObjectT, class Arg2T>
00516 inline TypedObjectVoidFunctor2<CPtrCallArg<ObjectT>, ArgsCollector<Arg2T> >
00517 osgTypedMethodVoidFunctor2CPtr(
00518     typename FunctorBuildFuncType2<void,
00519                                    CPtrCallArg<ObjectT>,
00520                                    ArgsCollector<Arg2T> >::ObjFuncType pFunc);
00521 
00522 //---------------------------------------------------------------------------
00523 //  osgTypedMethodVoidFunctor2CPtrRef
00524 //---------------------------------------------------------------------------
00525 
00529 template <class ObjectT, class Arg1T> inline
00530 TypedObjectVoidFunctor2<CPtrRefCallArg<ObjectT>,
00531                         ArgsCollector <Arg1T  > >
00532     osgTypedMethodVoidFunctor2CPtrRef(
00533 
00534         typename FunctorBuildFuncType2<
00535             void,
00536             CPtrRefCallArg<ObjectT>,
00537             ArgsCollector <Arg1T  >   >::ObjFuncType pFunc);
00538 
00539 #endif
00540 
00541 //---------------------------------------------------------------------------
00542 //  osgTypedMethodFunctor2ObjCPtrRef
00543 //---------------------------------------------------------------------------
00544 
00549 template<class T1, class T2, class T3, class T4>
00550 struct TypedMethodVoidFunctor2ObjCPtrRefFGen
00551 {
00552     typedef CPtrRefCallArg<T3> CAT3;
00553     typedef ArgsCollector <T4> ACT4;
00554 
00555     typedef typename CAT3::ArgType Arg1T;
00556     typedef typename ACT4::Arg1T   Arg2T;
00557 
00558     typedef ArgsCollector2<Arg1T, T4>  ArgColl;
00559 
00560     typedef typename ClassMemFunc2<T1,
00561                                    typename T2::StoredObjectType,
00562                                    ArgColl                     >::MemFunc Func;
00563 
00564 };
00565 
00566 #ifndef OSG_MICROSOFT_COMPILER_ALERT
00567 
00571 template <class ObjectT,
00572           class Arg1T,
00573           class Arg2T> inline
00574 TypedStoredObjectVoidFunctor2<CPtrRefCallArg<ObjectT>,
00575                               CPtrRefCallArg<Arg1T  >,
00576                               ArgsCollector <Arg2T  > >
00577     osgTypedMethodVoidFunctor2ObjCPtrRef(
00578 
00579              ObjectT                                              &pObj,
00580 
00581     typename TypedMethodVoidFunctor2ObjCPtrRefFGen<void,
00582                                                    ObjectT,
00583                                                    Arg1T,
00584                                                    Arg2T  >::Func  pFunc);
00585 #endif
00586 
00587 //---------------------------------------------------------------------------
00588 //  osgTypedMethodVoidFunctor2ObjCPtrPtr
00589 //---------------------------------------------------------------------------
00590 
00595 template<class T1, class T2, class T3, class T4>
00596 struct TypedMethodVoidFunctor2ObjCPtrPtrFGen
00597 {
00598     typedef PtrCallArg<T3>     CAT3;
00599     typedef ArgsCollector <T4> ACT4;
00600 
00601     typedef typename CAT3::ArgType Arg1T;
00602     typedef typename ACT4::Arg1T   Arg2T;
00603 
00604     typedef ArgsCollector2<Arg1T, T4>  ArgColl;
00605 
00606     typedef typename ClassMemFunc2<T1,
00607                                    typename T2::StoredObjectType,
00608                                    ArgColl                     >::MemFunc Func;
00609 
00610 };
00611 
00612 #ifndef OSG_MICROSOFT_COMPILER_ALERT
00613 
00617 template <class ObjectT,
00618           class Arg1T,
00619           class Arg2T> inline
00620 TypedStoredObjectVoidFunctor2<CPtrRefCallArg<ObjectT>,
00621                               PtrCallArg    <Arg1T  >,
00622                               ArgsCollector <Arg2T  > >
00623     osgTypedMethodVoidFunctor2ObjCPtrPtr(
00624 
00625              ObjectT                                              &pObj,
00626 
00627     typename TypedMethodVoidFunctor2ObjCPtrPtrFGen<void,
00628                                                    ObjectT,
00629                                                    Arg1T,
00630                                                    Arg2T  >::Func  pFunc);
00631 
00632 #endif
00633 
00634 //---------------------------------------------------------------------------
00635 //  osgTypedMethodFunctor2BaseCPtrRef
00636 //---------------------------------------------------------------------------
00637 
00642 template<class T1, class T2, class T3>
00643 struct TypedMethodFunctor2BaseCPtrRefFGen
00644 {
00645     typedef ArgsCollector <T3> ArgColl;
00646 
00647     typedef typename ClassMemFunc1<T1,
00648                                    typename T2::StoredObjectType,
00649                                    ArgColl                     >::MemFunc Func;
00650 };
00651 
00652 #ifndef OSG_MICROSOFT_COMPILER_ALERT
00653 
00654 #ifdef __sgi
00655 #pragma set woff 1424
00656 #endif
00657 
00661 template <class RetT,  class ObjectT,
00662           class Arg1T, class Arg2T> inline
00663 TypedObjectFunctor2<RetT,
00664                     CPtrRefCallArg<Arg1T>,
00665                     ArgsCollector <Arg2T> >
00666     osgTypedMethodFunctor2BaseCPtrRef(
00667 
00668     typename TypedMethodFunctor2BaseCPtrRefFGen<RetT,
00669                                                 ObjectT,
00670                                                 Arg2T  >::Func pFunc);
00671 
00672 template <class RetT,  class ObjectT,
00673           class Arg1T, class Arg2T   >
00674 inline TypedObjectFunctor2<RetT, CPtrCallArg<Arg1T>, ArgsCollector<Arg2T> >
00675 osgTypedMethodFunctor2BaseCPtr(
00676     typename TypedMethodFunctor2BaseCPtrRefFGen<RetT,
00677                                                 ObjectT,
00678                                                 Arg2T   >::Func pFunc);
00679 
00680 #ifdef __sgi
00681 #pragma reset woff 1424
00682 #endif
00683 
00684 #endif
00685 
00686 OSG_END_NAMESPACE
00687 
00688 #include <OSGTypedFunctors.inl>
00689 
00690 #endif /* _OSGTYPEDFUNCTORS_H_ */
00691 
00692 
00693 
00694 
00695 
00696 
00697 
00698 
00699 
00700 
00701 
00702 
00703 

Generated on Thu Aug 25 04:11:55 2005 for OpenSG by  doxygen 1.4.3