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_FUN_P2V_ELIFS_HH
00027 # define MLN_FUN_P2V_ELIFS_HH
00028
00034 # include <mln/fun/p2v/ternary.hh>
00035
00036
00037 namespace mln
00038 {
00039
00040 namespace fun
00041 {
00042
00043 namespace p2v
00044 {
00045
00046 template <typename T1, typename N1,
00047 typename T2, typename N2,
00048 typename O>
00049 ternary_<T1, N1,
00050 ternary_<T2, N2, O> >
00051 elifs(const Function_v2b<T1>& f_if_1, const Function_v2v<N1>& f_then_1,
00052 const Function_v2b<T2>& f_if_2, const Function_v2v<N2>& f_then_2,
00053 const Function_v2v<O>& f_otherwise);
00054
00055
00056 # ifndef MLN_INCLUDE_ONLY
00057
00058 template <typename T1, typename N1,
00059 typename T2, typename N2,
00060 typename O>
00061 inline
00062 ternary_<T1, N1,
00063 ternary_<T2, N2, O> >
00064 elifs(const Function_v2b<T1>& f_if_1, const Function_v2v<N1>& f_then_1,
00065 const Function_v2b<T2>& f_if_2, const Function_v2v<N2>& f_then_2,
00066 const Function_v2v<O>& f_otherwise)
00067 {
00068 typedef ternary_<T2, N2, O> T2_N2_O;
00069 T2_N2_O f_otherwise_1(f_if_2, f_then_2, f_otherwise);
00070 ternary_<T1, N1, T2_N2_O> tmp(f_if_1, f_then_1, f_otherwise_1);
00071 return tmp;
00072 }
00073
00074 # endif // ! MLN_INCLUDE_ONLY
00075
00076 }
00077
00078 }
00079
00080 }
00081
00082
00083 #endif // ! MLN_FUN_P2V_ELIFS_HH