00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_MISC_SUPPORT_HXX
00018 # define VCSN_MISC_SUPPORT_HXX
00019
00020 # include <vaucanson/misc/support.hh>
00021 # include <vaucanson/misc/contract.hh>
00022
00023 namespace vcsn
00024 {
00025 namespace misc
00026 {
00027
00028
00029
00030
00031
00032 template <class C>
00033 SupportIterator<C>::SupportIterator (map_iterator mp)
00034 : i (mp)
00035 {}
00036
00037 template <class C>
00038 typename SupportIterator<C>::key_type
00039 SupportIterator<C>::operator* () const
00040 {
00041 return i->first;
00042 }
00043
00044 template <class C>
00045 SupportIterator<C>& SupportIterator<C>::operator++ ()
00046 {
00047 ++i;
00048 return *this;
00049 }
00050
00051 template <class C>
00052 SupportIterator<C> SupportIterator<C>::operator++ (int)
00053 {
00054 SupportIterator<C> tmp = *this;
00055 ++i;
00056 return tmp;
00057 }
00058
00059 template <class C>
00060 bool
00061 SupportIterator<C>::operator!= (const SupportIterator& o) const
00062 {
00063 return o.i != i;
00064 }
00065
00066 template <class C>
00067 bool
00068 SupportIterator<C>::operator== (const SupportIterator& o) const
00069 {
00070 return ! (*this != o);
00071 }
00072
00073
00074
00075
00076
00077
00078
00079
00081 template <class U, class T>
00082 Support<std::map<U, T> >::Support (const Support& s)
00083 : m_ (s.m_)
00084 {
00085 }
00086
00087 template <class U, class T>
00088 Support<std::map<U, T> >::Support (const std::map<U, T>& m)
00089 : m_ (m)
00090 {
00091 }
00092
00093 template <class U, class T>
00094 unsigned
00095 Support<std::map<U, T> >::size () const
00096 {
00097 return m_.size ();
00098 }
00099
00100 template <class U, class T>
00101 typename Support<std::map<U, T> >::iterator
00102 Support<std::map<U, T> >::find (const U& k) const
00103 {
00104 return m_.find (k);
00105 }
00106
00107 template <class U, class T>
00108 bool
00109 Support<std::map<U, T> >::empty () const
00110 {
00111 return m_.empty ();
00112 }
00113
00114 template <class U, class T>
00115 typename Support<std::map<U, T> >::value_type
00116 Support<std::map<U, T> >::operator* () const
00117 {
00118 precondition (m_.size () == 1);
00119 return *m_.begin ();
00120 }
00121
00122 template <class U, class T>
00123 typename Support<std::map<U, T> >::iterator
00124 Support<std::map<U, T> >::begin () const
00125 {
00126 return iterator (m_.begin ());
00127 }
00128
00129 template <class U, class T>
00130 typename Support<std::map<U, T> >::iterator
00131 Support<std::map<U, T> >::end () const
00132 {
00133 return iterator (m_.end ());
00134 }
00135
00136 template <class U, class T>
00137 U
00138 Support< std::map<U, T> >::max () const
00139 {
00140 return *max_element (begin (), end ());
00141 }
00142
00143
00144 }
00145 }
00146
00147 #endif // ! VCSN_MISC_SUPPORT_HXX