#ifndef __MIMASEXTERNALIMAGEFUNC
#   error "Do not include this file directly."
#endif
#ifndef __MIMASINTERNALIMAGEFUNC
#   error "Do not include this file directly."
#endif
#ifndef __MIMASFUNCTIONOBJECT
#   error "Do not include this file directly."
#endif

namespace mimas {

/** @addtogroup arrayOp
    @{ */
///
template <
  typename T, typename TPtr
>
image_ref< T > &__MIMASINTERNALIMAGEFUNC( const const_image_ref< T, TPtr > &a )
{
  return image_apply( a, a, _multi_help1< T, T, __MIMASFUNCTIONOBJECT< T > >
                      ( __MIMASFUNCTIONOBJECT< T >() ) );
};

///
template <
  typename T, typename TPtr
>
image< T > __MIMASEXTERNALIMAGEFUNC( const const_image_ref< T, TPtr > &a )
{
  return image_func< T >( a, __MIMASFUNCTIONOBJECT< T >() );
};

///@}

}

#undef __MIMASEXTERNALIMAGEFUNC
#undef __MIMASINTERNALIMAGEFUNC
#undef __MIMASFUNCTIONOBJECT