ekiga r7428 - trunk/lib/engine/framework



Author: jpuydt
Date: Fri Dec  5 04:09:08 2008
New Revision: 7428
URL: http://svn.gnome.org/viewvc/ekiga?rev=7428&view=rev

Log:
Added a const iterator on map keys to complete reflister

Added:
   trunk/lib/engine/framework/map-key-const-iterator.h
Modified:
   trunk/lib/engine/framework/reflister.h

Added: trunk/lib/engine/framework/map-key-const-iterator.h
==============================================================================
--- (empty file)
+++ trunk/lib/engine/framework/map-key-const-iterator.h	Fri Dec  5 04:09:08 2008
@@ -0,0 +1,126 @@
+
+/*
+ * Ekiga -- A VoIP and Video-Conferencing application
+ * Copyright (C) 2000-2008 Damien Sandras
+
+ * This program is free software; you can  redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version. This program is distributed in the hope
+ * that it will be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Ekiga is licensed under the GPL license and as a special exception, you
+ * have permission to link or otherwise combine this program with the
+ * programs OPAL, OpenH323 and PWLIB, and distribute the combination, without
+ * applying the requirements of the GNU GPL to the OPAL, OpenH323 and PWLIB
+ * programs, as long as you do follow the requirements of the GNU GPL for all
+ * the rest of the software thus combined.
+ */
+
+
+/*
+ *                         map-key-const-iterator.h  -  description
+ *                         ------------------------------------------
+ *   begin                : written in 2008 by Julien Puydt
+ *   copyright            : (c) 2008 by Julien Puydt
+ *   description          : iterator on the keys of a std::map
+ *
+ */
+
+#ifndef __MAP_KEY_CONST_ITERATOR_H__
+#define __MAP_KEY_CONST_ITERATOR_H__
+
+#include <map>
+
+namespace Ekiga
+{
+  template<typename map_type>
+  class map_key_const_iterator: public std::forward_iterator_tag
+  {
+  public:
+
+    map_key_const_iterator (typename map_type::const_iterator it_);
+
+    map_key_const_iterator& operator= (const map_key_const_iterator& other);
+
+    bool operator== (const map_key_const_iterator& other);
+    bool operator!= (const map_key_const_iterator& other);
+
+    map_key_const_iterator& operator++ ();
+    map_key_const_iterator operator++ (int);
+
+    const typename map_type::key_type operator* ();
+
+    const typename map_type::key_type* operator-> ();
+
+  private:
+    typename map_type::const_iterator it;
+  };
+
+};
+
+template<typename map_type>
+Ekiga::map_key_const_iterator<map_type>::map_key_const_iterator (typename map_type::const_iterator it_): it(it_)
+{
+}
+
+template<typename map_type>
+Ekiga::map_key_const_iterator<map_type>&
+Ekiga::map_key_const_iterator<map_type>::operator= (const map_key_const_iterator<map_type>& other)
+{
+  it = other.it;
+  return *this;
+}
+
+template<typename map_type>
+bool
+Ekiga::map_key_const_iterator<map_type>::operator== (const map_key_const_iterator<map_type>& other)
+{
+  return it == other.it;
+}
+
+template<typename map_type>
+bool
+Ekiga::map_key_const_iterator<map_type>::operator!= (const map_key_const_iterator<map_type>& other)
+{
+  return it != other.it;
+}
+
+template<typename map_type>
+Ekiga::map_key_const_iterator<map_type>&
+Ekiga::map_key_const_iterator<map_type>::operator++ ()
+{
+  it++;
+  return *this;
+}
+
+template<typename map_type>
+Ekiga::map_key_const_iterator<map_type>
+Ekiga::map_key_const_iterator<map_type>::operator++ (int)
+{
+  map_key_const_iterator<map_type> tmp = *this;
+  ++it;
+  return tmp;
+}
+
+template<typename map_type>
+const typename map_type::key_type
+Ekiga::map_key_const_iterator<map_type>::operator* ()
+{
+  return it->first;
+}
+
+template<typename map_type>
+const typename map_type::key_type*
+Ekiga::map_key_const_iterator<map_type>::operator-> ()
+{
+  return it->first;
+}
+
+#endif

Modified: trunk/lib/engine/framework/reflister.h
==============================================================================
--- trunk/lib/engine/framework/reflister.h	(original)
+++ trunk/lib/engine/framework/reflister.h	Fri Dec  5 04:09:08 2008
@@ -42,6 +42,7 @@
 
 #include "gmref.h"
 #include "map-key-iterator.h"
+#include "map-key-const-iterator.h"
 
 namespace Ekiga
 {
@@ -52,6 +53,7 @@
 
     typedef std::map<gmref_ptr<ObjectType>,std::list<sigc::connection> > container_type;
     typedef Ekiga::map_key_iterator<container_type> iterator;
+    typedef Ekiga::map_key_const_iterator<container_type> const_iterator;
 
     virtual ~RefLister ();
 
@@ -69,6 +71,9 @@
     iterator begin ();
     iterator end ();
 
+    const_iterator begin () const;
+    const_iterator end () const;
+
     sigc::signal1<void, gmref_ptr<ObjectType> > object_added;
     sigc::signal1<void, gmref_ptr<ObjectType> > object_removed;
     sigc::signal1<void, gmref_ptr<ObjectType> > object_updated;
@@ -160,4 +165,18 @@
   return iterator (objects.end ());
 }
 
+template<typename ObjectType>
+typename Ekiga::RefLister<ObjectType>::const_iterator
+Ekiga::RefLister<ObjectType>::begin () const
+{
+  return const_iterator (objects.begin ());
+}
+
+template<typename ObjectType>
+typename Ekiga::RefLister<ObjectType>::const_iterator
+Ekiga::RefLister<ObjectType>::end () const
+{
+  return const_iterator (objects.end ());
+}
+
 #endif



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]