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 201 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 203 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 211 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.

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


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 205 of file glue_metaprog.hpp.