00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef VCSN_ALGORITHMS_TRANSPOSE_HXX
00019 # define VCSN_ALGORITHMS_TRANSPOSE_HXX
00020
00021 #include <vaucanson/algorithms/transpose.hh>
00022 #include <vaucanson/automata/implementation/transpose_view.hh>
00023 #include <vaucanson/automata/concept/copy.hh>
00024
00025 namespace vcsn
00026 {
00027 template<typename lhs_t, typename rhs_t>
00028 void
00029 transpose(lhs_t& dst_, const rhs_t& from)
00030 {
00031 TIMER_SCOPED("transpose");
00032 AUTOMATON_TYPES(lhs_t);
00033 auto_copy(dst_, transpose_view(from));
00034
00035
00036 for_all_transitions(e, dst_)
00037 dst_.series_of(*e).transpose();
00038 }
00039
00040 template<typename auto_t>
00041 auto_t
00042 transpose(const auto_t& from)
00043 {
00044 auto_t dst(from.structure());
00045 transpose(dst, from);
00046 return dst;
00047 }
00048
00049 }
00050
00051 #endif // ! VCSN_ALGORITHMS_TRANSPOSE_HXX