00001 #ifndef __VMML__MATRIX_FUNCTORS__HPP__
00002 #define __VMML__MATRIX_FUNCTORS__HPP__
00003
00004 namespace vmml
00005 {
00006
00007 template< typename matrix_t >
00008 struct matrix_functor
00009 {
00010 virtual void operator()( matrix_t& matrix_ ) const
00011 {}
00012
00013 virtual ~matrix_functor() {};
00014 };
00015
00016 template< typename matrix_t >
00017 struct set_to_identity : public matrix_functor< matrix_t >
00018 {
00019 virtual void operator()( matrix_t& matrix_ ) const
00020 {
00021 size_t M = matrix_.getM();
00022 if ( M == matrix_.getN() )
00023 {
00024 matrix_ = 0.0;
00025 for( size_t index = 0; index < M; ++index )
00026 {
00027 matrix_.at( index, index ) = 1.0;
00028 }
00029 }
00030 }
00031 };
00032
00033
00034 template< typename matrix_t >
00035 struct set_to_zero : public matrix_functor< matrix_t >
00036 {
00037 virtual void operator()( matrix_t& matrix_ ) const
00038 {
00039 matrix_ = 0.0;
00040 }
00041 };
00042
00043 }
00044
00045 #endif
00046