# HG changeset patch # User John W. Eaton # Date 1285957117 14400 # Node ID 4e31d44a9763a0967b05dc0214d868f5f59feeb0 # Parent 8a3b7e8fcbbcac05b4c1ce60a0359750179ca5b8 extract caseless_str class to separate header file diff -r 8a3b7e8fcbbc -r 4e31d44a9763 liboctave/ChangeLog --- a/liboctave/ChangeLog Fri Oct 01 05:16:04 2010 -0400 +++ b/liboctave/ChangeLog Fri Oct 01 14:18:37 2010 -0400 @@ -1,3 +1,7 @@ +2010-10-01 John W. Eaton + + * caseless-str.h: New file, extracted from src/graphics.h.in. + 2010-09-22 Jaroslav Hajek * lo-utils.cc (xis_int_or_inf_or_nan): Fix typos. diff -r 8a3b7e8fcbbc -r 4e31d44a9763 liboctave/caseless-str.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/liboctave/caseless-str.h Fri Oct 01 14:18:37 2010 -0400 @@ -0,0 +1,70 @@ +/* + +Copyright (C) 2007, 2008, 2009, 2010 Shai Ayal + +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 +. + +*/ + +#if !defined (octave_caseless_str_h) +#define octave_caseless_str_h 1 + +#include + +class caseless_str : public std::string +{ +public: + + typedef std::string::iterator iterator; + typedef std::string::const_iterator const_iterator; + + caseless_str (void) : std::string () { } + caseless_str (const std::string& s) : std::string (s) { } + caseless_str (const char *s) : std::string (s) { } + + caseless_str (const caseless_str& name) : std::string (name) { } + + caseless_str& operator = (const caseless_str& pname) + { + std::string::operator = (pname); + return *this; + } + + operator std::string (void) const { return *this; } + + // Case-insensitive comparison. + bool compare (const std::string& s, size_t limit = std::string::npos) const + { + const_iterator p1 = begin (); + const_iterator p2 = s.begin (); + + size_t k = 0; + + while (p1 != end () && p2 != s.end () && k++ < limit) + { + if (std::tolower (*p1) != std::tolower (*p2)) + return false; + + *p1++; + *p2++; + } + + return (limit == std::string::npos) ? size () == s.size () : k == limit; + } +}; + +#endif diff -r 8a3b7e8fcbbc -r 4e31d44a9763 src/ChangeLog --- a/src/ChangeLog Fri Oct 01 05:16:04 2010 -0400 +++ b/src/ChangeLog Fri Oct 01 14:18:37 2010 -0400 @@ -1,3 +1,8 @@ +2010-10-01 John W. Eaton + + * graphics.h.in (class caseless_str): Move to + liboctave/caseless-string.h. + 2010-10-01 John W. Eaton * graphics.cc (base_properties::get_dynamic): Create and return diff -r 8a3b7e8fcbbc -r 4e31d44a9763 src/graphics.h.in --- a/src/graphics.h.in Fri Oct 01 05:16:04 2010 -0400 +++ b/src/graphics.h.in Fri Oct 01 14:18:37 2010 -0400 @@ -35,6 +35,7 @@ #include #include +#include "caseless-str.h" #include "lo-ieee.h" #include "gripes.h" @@ -49,47 +50,6 @@ #define OCTAVE_DEFAULT_FONTNAME "*" #endif -class caseless_str : public std::string -{ -public: - typedef std::string::iterator iterator; - typedef std::string::const_iterator const_iterator; - - caseless_str (void) : std::string () { } - caseless_str (const std::string& s) : std::string (s) { } - caseless_str (const char *s) : std::string (s) { } - - caseless_str (const caseless_str& name) : std::string (name) { } - - caseless_str& operator = (const caseless_str& pname) - { - std::string::operator = (pname); - return *this; - } - - operator std::string (void) const { return *this; } - - // Case-insensitive comparison. - bool compare (const std::string& s, size_t limit = std::string::npos) const - { - const_iterator p1 = begin (); - const_iterator p2 = s.begin (); - - size_t k = 0; - - while (p1 != end () && p2 != s.end () && k++ < limit) - { - if (std::tolower (*p1) != std::tolower (*p2)) - return false; - - *p1++; - *p2++; - } - - return (limit == std::string::npos) ? size () == s.size () : k == limit; - } -}; - // --------------------------------------------------------------------- class graphics_handle