00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_DESIGN_PATTERN_ELEMENT_OP_TRAITS_HH
00018 # define VCSN_DESIGN_PATTERN_ELEMENT_OP_TRAITS_HH
00019
00029 #include <vaucanson/design_pattern/predecls.hh>
00030
00031 namespace vcsn {
00032
00036
00037
00038
00039
00043 template<typename S1, typename S2, typename T1, typename T2>
00044 struct op_add_traits
00045 {
00046 typedef Element<S1, T1> ret_t;
00047 };
00048
00049
00050
00051
00052
00056 template<typename S1, typename S2, typename T1, typename T2>
00057 struct op_sub_traits
00058 {
00059 typedef Element<S1, T1> ret_t;
00060 };
00061
00062
00063
00064
00065
00069 template<typename S1, typename S2, typename T1, typename T2>
00070 struct op_mul_traits
00071 {
00072 typedef Element<S1, T1> ret_t;
00073 };
00074
00075
00076
00077
00078
00082 template<typename S1, typename S2, typename T1, typename T2>
00083 struct op_div_traits
00084 {
00085 typedef Element<S1, T1> ret_t;
00086 };
00087
00088
00089
00090
00091
00092
00096 template<typename S1, typename S2, typename T1, typename T2>
00097 struct op_mod_traits
00098 {
00099 typedef Element<S1, T1> ret_t;
00100 };
00101
00105 }
00106
00107 #endif // ! VCSN_DESIGN_PATTERN_ELEMENT_OP_TRAITS_HH