18 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_SERIES_KRAT_EXP_PROXY_HXX
19 # define VCSN_ALGEBRA_IMPLEMENTATION_SERIES_KRAT_EXP_PROXY_HXX
25 template <
class S,
class T>
26 krat_exp_proxy<S, T>::krat_exp_proxy(Element<S, T> exp) :
31 template <
class S,
class T>
33 krat_exp_proxy<S, T>::operator=(krat_exp_virtual& exp)
35 self = (
dynamic_cast<krat_exp_proxy<S, T>*
> (&exp))->self;
39 template <
class S,
class T>
43 return new krat_exp_proxy<S, T>(
self + (
dynamic_cast<krat_exp_proxy<S, T>*
> (exp))->self);
46 template <
class S,
class T>
50 return new krat_exp_proxy<S, T>(
self * (
dynamic_cast<krat_exp_proxy<S, T>*
> (exp))->self);
53 template <
class S,
class T>
60 template <
class S,
class T>
62 krat_exp_proxy<S, T>::left_weight(semiring_virtual* sem)
64 self = (
dynamic_cast<semiring_proxy<S, T>*
> (sem))->self *
self;
67 template <
class S,
class T>
69 krat_exp_proxy<S, T>::right_weight(semiring_virtual* sem)
71 self =
self * (
dynamic_cast<semiring_proxy<S, T>*
> (sem))->self;
74 template <
class S,
class T>
75 semiring_proxy<S, T>::semiring_proxy(semiring_elt_t& sem) :
80 template <
class S,
class T>
82 semiring_proxy<S, T>::operator=(semiring_virtual& sem)
84 self = (
dynamic_cast<semiring_proxy<S, T>*
> (&sem))->self;
91 #endif // !VCSN_ALGEBRA_IMPLEMENTATION_SERIES_KRAT_EXP_PROXY_HXX //