include/trace-tools/tool/iterator.hxx

00001 /*
00002  * trace-tools - A library and a set of tools to manipulate wireless traces.
00003  * Copyright (C) 2007  Universite Pierre et Marie Curie - Paris 6
00004  *
00005  * This program is free software; you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License as published by
00007  * the Free Software Foundation; either version 2 of the License, or
00008  * (at your option) any later version.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program; if not, write to the Free Software
00017  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
00018  * MA  02110-1301  USA
00019  *
00020  * Author: Thomas Claveirole <thomas.claveirole@lip6.fr>
00021  */
00022 #ifndef TOOL_ITERATOR_HXX_
00023 # define TOOL_ITERATOR_HXX_
00024 
00025 # include "iterator.hh"
00026 
00027 namespace tool
00028 {
00029 
00030   template <class B>
00031   bool
00032   iterator<B>::operator == (const exact_type& rhs) const
00033   {
00034     return this->exact().equal(rhs.exact());
00035   }
00036 
00037   template <class B>
00038   bool
00039   iterator<B>::operator != (const exact_type& rhs) const
00040   {
00041     return not (*this == rhs);
00042   }
00043 
00044   template <class B>
00045   const typename iterator<B>::exact_type&
00046   iterator<B>::operator ++ ()
00047   {
00048     this->exact().increment();
00049     return this->exact();
00050   }
00051 
00052   template <class B>
00053   typename iterator<B>::exact_type
00054   iterator<B>::operator ++ (int)
00055   {
00056     exact_type r = this->exact();
00057     ++(*this);
00058     return r;
00059   }
00060 
00061   template <class B>
00062   const typename iterator<B>::value_type&
00063   iterator<B>::operator * () const
00064   {
00065     return this->exact().get();
00066   }
00067 
00068   template <class B>
00069   const typename iterator<B>::value_type*
00070   iterator<B>::operator -> () const
00071   {
00072     return this->exact().get_ptr();
00073   }
00074 
00075   template <class B>
00076   iterator<B>::~iterator()
00077   {
00078   }
00079 
00080 } // End of namespace tool.
00081 
00082 #endif // ! TOOL_ITERATOR_HXX_

Generated on Wed Sep 12 16:02:47 2007 for trace-tools by  doxygen 1.5.3