Mercurial > hg > octave-nkf
changeset 17544:fc31cd1bd503
extract handle object to a separate file
* oct-handle.h: New file.
* libinterp/corefcn/module.mk (COREFCN_INC): Add it to the list.
* graphics.in.h, graphics.cc (graphics_handle class): move to
oct-handle.h and rename octave_handle.
(graphics_handle): Now a typedef for octave_handle.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 02 Oct 2013 19:52:39 -0400 |
parents | dbda6edfe01d |
children | 2eeea8b67b63 |
files | libinterp/corefcn/graphics.cc libinterp/corefcn/graphics.in.h libinterp/corefcn/module.mk libinterp/corefcn/oct-handle.h |
diffstat | 4 files changed, 150 insertions(+), 118 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/graphics.cc +++ b/libinterp/corefcn/graphics.cc @@ -1927,22 +1927,6 @@ return m; } -graphics_handle::graphics_handle (const octave_value& a) - : val (octave_NaN) -{ - if (a.is_empty ()) - /* do nothing */; - else - { - double tval = a.double_value (); - - if (! error_state) - val = tval; - else - error ("invalid graphics handle"); - } -} - // Set properties given as a cs-list of name, value pairs. void
--- a/libinterp/corefcn/graphics.in.h +++ b/libinterp/corefcn/graphics.in.h @@ -37,9 +37,9 @@ #include <string> #include "caseless-str.h" -#include "lo-ieee.h" #include "gripes.h" +#include "oct-handle.h" #include "oct-map.h" #include "oct-mutex.h" #include "oct-refcount.h" @@ -53,107 +53,7 @@ #define OCTAVE_DEFAULT_FONTNAME "*" #endif -// --------------------------------------------------------------------- - -class graphics_handle -{ -public: - graphics_handle (void) : val (octave_NaN) { } - - graphics_handle (const octave_value& a); - - graphics_handle (int a) : val (a) { } - - graphics_handle (double a) : val (a) { } - - graphics_handle (const graphics_handle& a) : val (a.val) { } - - graphics_handle& operator = (const graphics_handle& a) - { - if (&a != this) - val = a.val; - - return *this; - } - - ~graphics_handle (void) { } - - double value (void) const { return val; } - - octave_value as_octave_value (void) const - { - return ok () ? octave_value (val) : octave_value (Matrix ()); - } - - // Prefix increment/decrement operators. - graphics_handle& operator ++ (void) - { - ++val; - return *this; - } - - graphics_handle& operator -- (void) - { - --val; - return *this; - } - - // Postfix increment/decrement operators. - const graphics_handle operator ++ (int) - { - graphics_handle old_value = *this; - ++(*this); - return old_value; - } - - const graphics_handle operator -- (int) - { - graphics_handle old_value = *this; - --(*this); - return old_value; - } - - bool ok (void) const { return ! xisnan (val); } - -private: - double val; -}; - -inline bool -operator == (const graphics_handle& a, const graphics_handle& b) -{ - return a.value () == b.value (); -} - -inline bool -operator != (const graphics_handle& a, const graphics_handle& b) -{ - return a.value () != b.value (); -} - -inline bool -operator < (const graphics_handle& a, const graphics_handle& b) -{ - return a.value () < b.value (); -} - -inline bool -operator <= (const graphics_handle& a, const graphics_handle& b) -{ - return a.value () <= b.value (); -} - -inline bool -operator >= (const graphics_handle& a, const graphics_handle& b) -{ - return a.value () >= b.value (); -} - -inline bool -operator > (const graphics_handle& a, const graphics_handle& b) -{ - return a.value () > b.value (); -} +typedef octave_handle graphics_handle; // ---------------------------------------------------------------------
--- a/libinterp/corefcn/module.mk +++ b/libinterp/corefcn/module.mk @@ -81,6 +81,7 @@ corefcn/mxarray.in.h \ corefcn/oct-errno.h \ corefcn/oct-fstrm.h \ + corefcn/oct-handle.h \ corefcn/oct-hdf5.h \ corefcn/oct-hist.h \ corefcn/oct-iostrm.h \
new file mode 100644 --- /dev/null +++ b/libinterp/corefcn/oct-handle.h @@ -0,0 +1,147 @@ +/* + +Copyright (C) 2007-2012 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_handle_h) +#define octave_handle_h 1 + +#include "dMatrix.h" +#include "lo-ieee.h" + +#include "ov.h" + +// --------------------------------------------------------------------- + +class octave_handle +{ +public: + octave_handle (void) : val (octave_NaN) { } + + octave_handle (const octave_value& a) + : val (octave_NaN) + { + if (a.is_empty ()) + /* do nothing */; + else + { + double tval = a.double_value (); + + if (! error_state) + val = tval; + else + error ("invalid handle"); + } + } + + octave_handle (int a) : val (a) { } + + octave_handle (double a) : val (a) { } + + octave_handle (const octave_handle& a) : val (a.val) { } + + octave_handle& operator = (const octave_handle& a) + { + if (&a != this) + val = a.val; + + return *this; + } + + ~octave_handle (void) { } + + double value (void) const { return val; } + + octave_value as_octave_value (void) const + { + return ok () ? octave_value (val) : octave_value (Matrix ()); + } + + // Prefix increment/decrement operators. + octave_handle& operator ++ (void) + { + ++val; + return *this; + } + + octave_handle& operator -- (void) + { + --val; + return *this; + } + + // Postfix increment/decrement operators. + const octave_handle operator ++ (int) + { + octave_handle old_value = *this; + ++(*this); + return old_value; + } + + const octave_handle operator -- (int) + { + octave_handle old_value = *this; + --(*this); + return old_value; + } + + bool ok (void) const { return ! xisnan (val); } + +private: + double val; +}; + +inline bool +operator == (const octave_handle& a, const octave_handle& b) +{ + return a.value () == b.value (); +} + +inline bool +operator != (const octave_handle& a, const octave_handle& b) +{ + return a.value () != b.value (); +} + +inline bool +operator < (const octave_handle& a, const octave_handle& b) +{ + return a.value () < b.value (); +} + +inline bool +operator <= (const octave_handle& a, const octave_handle& b) +{ + return a.value () <= b.value (); +} + +inline bool +operator >= (const octave_handle& a, const octave_handle& b) +{ + return a.value () >= b.value (); +} + +inline bool +operator > (const octave_handle& a, const octave_handle& b) +{ + return a.value () > b.value (); +} + +#endif