00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef GUNU_COMPATIBLE_H
00021 #define GUNU_COMPATIBLE_H
00022
00023 namespace gunu {
00024
00025 using gul::Ptr;
00026
00027
00028
00029
00030
00031
00032
00033
00034 template< class T, class HP1, class HP2 >
00035 void MakeSurfacesCompatibleU(
00036 int nu1, int pu1, Ptr<T>& U1,
00037 int nv1, int pv1, Ptr<T>& V1,
00038 Ptr< Ptr<HP1> >& Pw1,
00039 int nu2, int pu2, Ptr<T>& U2,
00040 int nv2, int pv2, Ptr<T>& V2,
00041 Ptr< Ptr<HP2> >& Pw2,
00042 int *ret_nu1, int *ret_pu1, Ptr<T> *ret_U1,
00043 int *ret_nv1, int *ret_pv1, Ptr<T> *ret_V1,
00044 Ptr< Ptr<HP1> > *ret_Pw1,
00045 int *ret_nu2, int *ret_pu2, Ptr<T> *ret_U2,
00046 int *ret_nv2, int *ret_pv2, Ptr<T> *ret_V2,
00047 Ptr< Ptr<HP2> > *ret_Pw2 );
00048
00049 template< class T, class HP1, class HP2 >
00050 void MakeSurfacesCompatibleV(
00051 int nu1, int pu1, Ptr<T>& U1,
00052 int nv1, int pv1, Ptr<T>& V1,
00053 Ptr< Ptr<HP1> >& Pw1,
00054 int nu2, int pu2, Ptr<T>& U2,
00055 int nv2, int pv2, Ptr<T>& V2,
00056 Ptr< Ptr<HP2> >& Pw2,
00057 int *ret_nu1, int *ret_pu1, Ptr<T> *ret_U1,
00058 int *ret_nv1, int *ret_pv1, Ptr<T> *ret_V1,
00059 Ptr< Ptr<HP1> > *ret_Pw1,
00060 int *ret_nu2, int *ret_pu2, Ptr<T> *ret_U2,
00061 int *ret_nv2, int *ret_pv2, Ptr<T> *ret_V2,
00062 Ptr< Ptr<HP2> > *ret_Pw2 );
00063
00064
00065 template< class T, class HP1, class HP2 >
00066 void MakeSurfacesCompatible(
00067 int nu1, int pu1, Ptr<T>& U1,
00068 int nv1, int pv1, Ptr<T>& V1,
00069 Ptr< Ptr<HP1> >& Pw1,
00070 int nu2, int pu2, Ptr<T>& U2,
00071 int nv2, int pv2, Ptr<T>& V2,
00072 Ptr< Ptr<HP2> >& Pw2,
00073 int dir,
00074 int *ret_nu1, int *ret_pu1, Ptr<T> *ret_U1,
00075 int *ret_nv1, int *ret_pv1, Ptr<T> *ret_V1,
00076 Ptr< Ptr<HP1> > *ret_Pw1,
00077 int *ret_nu2, int *ret_pu2, Ptr<T> *ret_U2,
00078 int *ret_nv2, int *ret_pv2, Ptr<T> *ret_V2,
00079 Ptr< Ptr<HP2> > *ret_Pw2 )
00080 {
00081 if( dir==gul::u_direction )
00082 MakeSurfacesCompatibleU(
00083 nu1,pu1,U1,nv1,pv1,V1,Pw1,nu2,pu2,U2,nv2,pv2,V2,Pw2,
00084 ret_nu1,ret_pu1,ret_U1,ret_nv1,ret_pv1,ret_V1,ret_Pw1,
00085 ret_nu2,ret_pu2,ret_U2,ret_nv2,ret_pv2,ret_V2,ret_Pw2 );
00086 else
00087 MakeSurfacesCompatibleV(
00088 nu1,pu1,U1,nv1,pv1,V1,Pw1,nu2,pu2,U2,nv2,pv2,V2,Pw2,
00089 ret_nu1,ret_pu1,ret_U1,ret_nv1,ret_pv1,ret_V1,ret_Pw1,
00090 ret_nu2,ret_pu2,ret_U2,ret_nv2,ret_pv2,ret_V2,ret_Pw2 );
00091 }
00092
00093 }
00094
00095
00096 #endif