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