/** * @date Wed Feb 9 12:26:11 2011 +0100 * @author Laurent El Shafey * * @brief This file defines easy-to-use Blitz++ cast functions for Bob * applications. * * Copyright (C) Idiap Research Institute, Martigny, Switzerland */ #ifndef BOB_CORE_CAST_H #define BOB_CORE_CAST_H #include #include #include namespace bob { namespace core { namespace array { template T scalar_cast(const U& u) { return static_cast(u); } template T scalar_cast(const std::complex& u) { return static_cast(u.real()); } // when using matching complex or non-complex T and U template blitz::Array cast(const blitz::Array& in) { bob::core::array::assertZeroBase(in); blitz::Array out(in.extent(0)); for( int i=0; i(in(i)); return out; } template blitz::Array cast(const blitz::Array& in) { bob::core::array::assertZeroBase(in); blitz::Array out(in.extent(0),in.extent(1)); for( int i=0; i(in(i,j)); return out; } template blitz::Array cast(const blitz::Array& in) { bob::core::array::assertZeroBase(in); blitz::Array out(in.extent(0),in.extent(1),in.extent(2)); for( int i=0; i(in(i,j,k)); return out; } template blitz::Array cast(const blitz::Array& in) { bob::core::array::assertZeroBase(in); blitz::Array out(in.extent(0),in.extent(1),in.extent(2),in.extent(3)); for( int i=0; i(in(i,j,k,l)); return out; } } }} #endif /* BOB_CORE_CAST_H */