00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 #ifndef MLN_TRAIT_WINDOWS_HH
00027 # define MLN_TRAIT_WINDOWS_HH
00028 
00034 # include <mln/trait/undef.hh>
00035 # include <mln/trait/window/props.hh>
00036 
00037 
00039 # define mln_trait_window_size(W)   typename mln::trait::window_< W >::size
00040 
00042 # define mln_trait_window_support(W)     typename mln::trait::window_< W >::support
00043 
00045 # define mln_trait_window_definition(W) typename mln::trait::window_< W >::definition
00046 
00047 
00048 # define mln_internal_add_classical_window_trait(W)     \
00049                                                         \
00050     namespace win { struct W; }                         \
00051                                                         \
00052     namespace trait                                     \
00053     {                                                   \
00054                                                         \
00055       template <>                                       \
00056       struct window_< win::W > : classical_window_      \
00057       {                                                 \
00058       };                                                \
00059                                                         \
00060     }                                                   \
00061                                                         \
00062     struct e_n_d__w_i_t_h__s_e_m_i_c_o_l_u_m_n
00063 
00064 
00065 namespace mln
00066 {
00067 
00068   namespace trait
00069   {
00070 
00072     template <typename W>
00073     struct undefined_window_
00074     {
00075       typedef undef size;       
00076       typedef undef support;    
00077       typedef undef definition; 
00078     };
00079 
00080 
00089     template <typename W>
00090     struct window_ : undefined_window_<W>
00091     {
00092     };
00093 
00094 
00095     
00096     struct classical_window_
00097     {
00098       typedef mln::trait::window::size::fixed        size;
00099       typedef mln::trait::window::support::regular   support;
00100       typedef mln::trait::window::definition::unique definition;
00101     };
00102 
00103   } 
00104 
00105 } 
00106 
00107 
00108 # include <mln/trait/window/print.hh>
00109 
00110 
00111 #endif // ! MLN_TRAIT_WINDOWS_HH