mat_ptrs_outcheck< glue_type, Glue< T1, T2, glue_type > > Struct Template Reference
[Glue_metaprog]

#include <glue_metaprog.hpp>

List of all members.

Public Types

typedef T1::elem_type elem_type

Static Public Member Functions

static void get_ptrs (const Mat< elem_type > **ptrs, bool *del, const Glue< T1, T2, glue_type > &X, const Mat< elem_type > *out_ptr)

Static Public Attributes

static const u32 num = 1 + mat_ptrs_outcheck<glue_type, T1>::num


Detailed Description

template<typename glue_type, typename T1, typename T2>
struct mat_ptrs_outcheck< glue_type, Glue< T1, T2, glue_type > >

Definition at line 200 of file glue_metaprog.hpp.


Member Typedef Documentation

template<typename glue_type , typename T1 , typename T2 >
typedef T1::elem_type mat_ptrs_outcheck< glue_type, Glue< T1, T2, glue_type > >::elem_type

Definition at line 202 of file glue_metaprog.hpp.


Member Function Documentation

template<typename glue_type , typename T1 , typename T2 >
static void mat_ptrs_outcheck< glue_type, Glue< T1, T2, glue_type > >::get_ptrs ( const Mat< elem_type > **  ptrs,
bool *  del,
const Glue< T1, T2, glue_type > &  X,
const Mat< elem_type > *  out_ptr 
) [inline, static]

Definition at line 210 of file glue_metaprog.hpp.

References Glue< T1, T2, glue_type >::A, Glue< T1, T2, glue_type >::B, mat_ptrs_outcheck< glue_type, T1 >::get_ptrs(), and mat_ptrs_outcheck< glue_type, T1 >::num.

00216     {
00217     isnt_same_type<typename T1::elem_type, typename T2::elem_type>::check();
00218     
00219     mat_ptrs_outcheck<glue_type, T1>::get_ptrs(ptrs, del, X.A, out_ptr);
00220     
00221     const bool same_ptr =
00222       (
00223       is_Mat<T2>::value ?
00224         (
00225         (out_ptr == reinterpret_cast<const Mat<elem_type>*>(&X.B)) ?
00226           true
00227         :
00228           false
00229         )
00230       :
00231         false
00232       );
00233     
00234     
00235     ptrs[num]  = 
00236       (
00237       same_ptr ?
00238         new Mat<elem_type>(X.B)
00239       :
00240         (
00241         is_Mat<T2>::value ?
00242           reinterpret_cast<const Mat<elem_type>*>(&X.B)
00243         :
00244           new Mat<elem_type>(X.B)
00245         )
00246       );
00247     
00248     
00249     del[num] = 
00250       (
00251       same_ptr ?
00252         true
00253       :
00254         (
00255         is_Mat<T2>::value ?
00256           false
00257         :
00258           true
00259         )
00260       );
00261     }


Member Data Documentation

template<typename glue_type , typename T1 , typename T2 >
const u32 mat_ptrs_outcheck< glue_type, Glue< T1, T2, glue_type > >::num = 1 + mat_ptrs_outcheck<glue_type, T1>::num [static]

Definition at line 204 of file glue_metaprog.hpp.