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