multi_array_op_help.h

Go to the documentation of this file.
00001 #if !defined(__MIMASINTERNALARRAYFUNC)
00002 #   error "Do not include this file directly."
00003 #endif
00004 #if !defined(__MIMASEXTERNALARRAYFUNC)
00005 #   error "Do not include this file directly."
00006 #endif
00007 #if !defined(__MIMASFUNCTIONOBJECT)
00008 #   error "Do not include this file directly."
00009 #endif
00010 
00011 namespace mimas {
00012 
00015 
00016 template <
00017   template< typename, size_t > class MultiArray1,
00018   template< typename, size_t > class MultiArray2,
00019   typename T, size_t NumDims
00020 >
00021 boost::multi_array< T, NumDims > __MIMASEXTERNALARRAYFUNC
00022 ( const MultiArray1< T, NumDims > &a,
00023   const MultiArray2< T, NumDims > &b )
00024 {
00025   return multi_func< T >( a, b, __MIMASFUNCTIONOBJECT< T >() );
00026 };
00027 
00029 template <
00030   template< typename, size_t > class MultiArray,
00031   typename T, size_t NumDims
00032 >
00033 boost::multi_array< T, NumDims > __MIMASEXTERNALARRAYFUNC
00034 ( const MultiArray< T, NumDims > &a,
00035   const T &b )
00036 {
00037   return multi_func< T >( a, std::bind2nd( __MIMASFUNCTIONOBJECT< T >(), b ) );
00038 };
00039 
00041 template <
00042   template< typename, size_t > class MultiArray,
00043   typename T, size_t NumDims
00044 >
00045 boost::multi_array< T, NumDims > __MIMASEXTERNALARRAYFUNC
00046 ( const T &a,
00047   const MultiArray< T, NumDims > &b )
00048 {
00049   return multi_func< T >( b, std::bind1st( __MIMASFUNCTIONOBJECT< T >(), a ) );
00050 };
00051 
00053 template <
00054   template< typename, size_t > class MultiArray2,
00055   typename T, size_t NumDims
00056 >
00057 boost::detail::multi_array::sub_array< T, NumDims > __MIMASINTERNALARRAYFUNC
00058 ( boost::detail::multi_array::sub_array< T, NumDims > a,
00059   const MultiArray2< T, NumDims > &b )
00060 {
00061   return multi_apply( a, a, b,
00062                       _multi_help2< T, T, T, __MIMASFUNCTIONOBJECT< T > >
00063                         ( __MIMASFUNCTIONOBJECT< T >() ) );
00064 };
00065 
00067 template <
00068   template< typename, size_t > class MultiArray1,
00069   template< typename, size_t > class MultiArray2,
00070   typename T, size_t NumDims
00071 >
00072 MultiArray1< T, NumDims > &__MIMASINTERNALARRAYFUNC
00073 ( MultiArray1< T, NumDims > &a,
00074   const MultiArray2< T, NumDims > &b )
00075 {
00076   return multi_apply( a, a, b,
00077                       _multi_help2< T, T, T, __MIMASFUNCTIONOBJECT< T > >
00078                       ( __MIMASFUNCTIONOBJECT< T >() ) );
00079 };
00080 
00082 template <
00083   typename T, size_t NumDims
00084 >
00085 boost::detail::multi_array::sub_array< T, NumDims > __MIMASINTERNALARRAYFUNC
00086 ( boost::detail::multi_array::sub_array< T, NumDims > a,
00087   const T &b )
00088 {
00089   return multi_apply( a, a,
00090                       _multi_help1< T, T,
00091                           std::binder2nd< __MIMASFUNCTIONOBJECT< T > > >
00092                       ( std::bind2nd( __MIMASFUNCTIONOBJECT< T >(), b ) ) );
00093 };
00094 
00096 template <
00097   template< typename, size_t > class MultiArray,
00098   typename T, size_t NumDims
00099 >
00100 MultiArray< T, NumDims > &__MIMASINTERNALARRAYFUNC
00101 ( MultiArray< T, NumDims > &a,
00102   const T &b )
00103 {
00104   return multi_apply( a, a,
00105                       _multi_help1< T, T,
00106                           std::binder2nd< __MIMASFUNCTIONOBJECT< T > > >
00107                       ( std::bind2nd( __MIMASFUNCTIONOBJECT< T >(), b ) ) );
00108 };
00110 
00111 }
00112 
00113 #undef __MIMASINTERNALARRAYFUNC
00114 #undef __MIMASEXTERNALARRAYFUNC
00115 #undef __MIMASFUNCTIONOBJECT

[GNU/Linux] [Qt] [Mesa] [STL] [Lapack] [Boost] [Magick++] [Xalan-C and Xerces-C] [doxygen] [graphviz] [FFTW] [popt] [xine] [Gnuplot] [gnu-arch] [gcc] [gstreamer] [autoconf/automake/make] [freshmeat.net] [opensource.org] [sourceforge.net] [MMVL]
mimas 2.1 - Copyright Mon Oct 30 11:31:17 2006, Bala Amavasai, Stuart Meikle, Arul Selvan, Fabio Caparrelli, Jan Wedekind, Manuel Boissenin, ...