Mercurial > octave-nkf
changeset 14031:a8952515415d
maint: periodic merge of stable to default
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Sun, 11 Dec 2011 23:32:01 -0500 |
parents | 2ed17790425e (current diff) 08569c50df6f (diff) |
children | 29e9eb59f917 |
files | src/base-list.h |
diffstat | 2 files changed, 114 insertions(+), 114 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/liboctave/base-list.h Sun Dec 11 23:32:01 2011 -0500 @@ -0,0 +1,114 @@ +/* + +Copyright (C) 2002-2011 John W. Eaton + +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +#if !defined (octave_base_list_h) +#define octave_base_list_h 1 + +#include <list> + +template <typename elt_type> +class +octave_base_list +{ +public: + + typedef typename std::list<elt_type>::iterator iterator; + typedef typename std::list<elt_type>::const_iterator const_iterator; + + bool empty (void) const { return lst.empty (); } + + size_t size (void) const { return lst.size (); } + size_t length (void) const { return size (); } + + iterator erase (iterator pos) { return lst.erase (pos); } + + template <class P> + void remove_if (P pred) + { + // We would like to simply call + // + // lst.remove_if (pred); + // + // but the Sun Studio compiler chokes on that. + // + // FIXME -- this kluge should be removed at some point. + + iterator b = lst.begin (); + iterator e = lst.end (); + while (b != e) + { + iterator n = b; + n++; + if (pred (*b)) + lst.erase (b); + b = n; + } + } + + void clear (void) { lst.clear (); } + + iterator begin (void) { return iterator (lst.begin ()); } + const_iterator begin (void) const { return const_iterator (lst.begin ()); } + + iterator end (void) { return iterator (lst.end ()); } + const_iterator end (void) const { return const_iterator (lst.end ()); } + + elt_type& front (void) { return lst.front (); } + elt_type& back (void) { return lst.back (); } + + const elt_type& front (void) const { return lst.front (); } + const elt_type& back (void) const { return lst.back (); } + + void push_front (const elt_type& s) { lst.push_front (s); } + void push_back (const elt_type& s) { lst.push_back (s); } + + void pop_front (void) { lst.pop_front (); } + void pop_back (void) { lst.pop_back (); } + + // For backward compatibility. + void append (const elt_type& s) { lst.push_back (s); } + +protected: + + octave_base_list (void) : lst () { } + + octave_base_list (const std::list<elt_type>& l) : lst (l) { } + + octave_base_list (const octave_base_list& bl) : lst (bl.lst) { } + + octave_base_list& operator = (const octave_base_list& bl) + { + if (this != &bl) + { + lst = bl.lst; + } + return *this; + } + + ~octave_base_list (void) { } + +private: + + std::list<elt_type> lst; +}; + +#endif
--- a/src/base-list.h Sun Dec 11 23:20:07 2011 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -/* - -Copyright (C) 2002-2011 John W. Eaton - -This file is part of Octave. - -Octave 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 3 of the License, or (at your -option) any later version. - -Octave 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 Octave; see the file COPYING. If not, see -<http://www.gnu.org/licenses/>. - -*/ - -#if !defined (octave_base_list_h) -#define octave_base_list_h 1 - -#include <list> - -template <typename elt_type> -class -octave_base_list -{ -public: - - typedef typename std::list<elt_type>::iterator iterator; - typedef typename std::list<elt_type>::const_iterator const_iterator; - - bool empty (void) const { return lst.empty (); } - - size_t size (void) const { return lst.size (); } - size_t length (void) const { return size (); } - - iterator erase (iterator pos) { return lst.erase (pos); } - - template <class P> - void remove_if (P pred) - { - // We would like to simply call - // - // lst.remove_if (pred); - // - // but the Sun Studio compiler chokes on that. - // - // FIXME -- this kluge should be removed at some point. - - iterator b = lst.begin (); - iterator e = lst.end (); - while (b != e) - { - iterator n = b; - n++; - if (pred (*b)) - lst.erase (b); - b = n; - } - } - - void clear (void) { lst.clear (); } - - iterator begin (void) { return iterator (lst.begin ()); } - const_iterator begin (void) const { return const_iterator (lst.begin ()); } - - iterator end (void) { return iterator (lst.end ()); } - const_iterator end (void) const { return const_iterator (lst.end ()); } - - elt_type& front (void) { return lst.front (); } - elt_type& back (void) { return lst.back (); } - - const elt_type& front (void) const { return lst.front (); } - const elt_type& back (void) const { return lst.back (); } - - void push_front (const elt_type& s) { lst.push_front (s); } - void push_back (const elt_type& s) { lst.push_back (s); } - - void pop_front (void) { lst.pop_front (); } - void pop_back (void) { lst.pop_back (); } - - // For backward compatibility. - void append (const elt_type& s) { lst.push_back (s); } - -protected: - - octave_base_list (void) : lst () { } - - octave_base_list (const std::list<elt_type>& l) : lst (l) { } - - octave_base_list (const octave_base_list& bl) : lst (bl.lst) { } - - octave_base_list& operator = (const octave_base_list& bl) - { - if (this != &bl) - { - lst = bl.lst; - } - return *this; - } - - ~octave_base_list (void) { } - -private: - - std::list<elt_type> lst; -}; - -#endif