Mercurial > octave
changeset 21321:79a51b7e00b6
eliminate some copy and paste code fragments in the Range class
* Range.h, Range.cc (Range::limit_internal, Range::init):
New functions.
(Range::Range, Range::set_base, Range::set_limit, Range::set_inc):
Use them to eliminate copy and paste code fragments.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 22 Feb 2016 21:28:22 -0500 |
parents | 241666557fec |
children | 909129eb77c5 |
files | liboctave/array/Range.cc liboctave/array/Range.h |
diffstat | 2 files changed, 32 insertions(+), 62 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/array/Range.cc Mon Feb 22 08:52:36 2016 -0800 +++ b/liboctave/array/Range.cc Mon Feb 22 21:28:22 2016 -0500 @@ -309,19 +309,8 @@ if (rng_base != b) { rng_base = b; - rng_numel = numel_internal (); - double tmplimit = rng_limit; - - if (rng_inc > 0) - tmplimit = max (); - else - tmplimit = min (); - - if (tmplimit != rng_limit) - rng_limit = tmplimit; - - clear_cache (); + init (); } } @@ -331,19 +320,8 @@ if (rng_limit != l) { rng_limit = l; - rng_numel = numel_internal (); - double tmplimit = rng_limit; - - if (rng_inc > 0) - tmplimit = max (); - else - tmplimit = min (); - - if (tmplimit != rng_limit) - rng_limit = tmplimit; - - clear_cache (); + init (); } } @@ -353,19 +331,8 @@ if (rng_inc != i) { rng_inc = i; - rng_numel = numel_internal (); - double tmplimit = rng_limit; - - if (rng_inc > 0) - tmplimit = max (); - else - tmplimit = min (); - - if (tmplimit != rng_limit) - rng_limit = tmplimit; - - clear_cache (); + init (); } } @@ -593,3 +560,25 @@ return retval; } + +double +Range::limit_internal (void) const +{ + double tmp_limit = rng_limit; + + if (rng_inc > 0) + tmp_limit = max (); + else + tmp_limit = min (); + + return (tmp_limit != rng_limit) ? tmp_limit : rng_limit; +} + +void +Range::init (void) +{ + rng_numel = numel_internal (); + rng_limit = limit_internal (); + + clear_cache (); +}
--- a/liboctave/array/Range.h Mon Feb 22 08:52:36 2016 -0800 +++ b/liboctave/array/Range.h Mon Feb 22 21:28:22 2016 -0500 @@ -47,30 +47,14 @@ : rng_base (b), rng_limit (l), rng_inc (1), rng_numel (numel_internal ()), cache () { - double tmplimit = rng_limit; - - if (rng_inc > 0) - tmplimit = max (); - else - tmplimit = min (); - - if (tmplimit != rng_limit) - rng_limit = tmplimit; + rng_limit = limit_internal (); } Range (double b, double l, double i) : rng_base (b), rng_limit (l), rng_inc (i), rng_numel (numel_internal ()), cache () { - double tmplimit = rng_limit; - - if (rng_inc > 0) - tmplimit = max (); - else - tmplimit = min (); - - if (tmplimit != rng_limit) - rng_limit = tmplimit; + rng_limit = limit_internal (); } // For operators' usage (to preserve element count). @@ -85,15 +69,8 @@ // Code below is only needed if the resulting range must be 100% // correctly constructed. If the Range object created is only // a temporary one used by operators this may be unnecessary. - double tmplimit = rng_limit; - if (rng_inc > 0) - tmplimit = max (); - else - tmplimit = min (); - - if (tmplimit != rng_limit) - rng_limit = tmplimit; + rng_limit = limit_internal (); } } @@ -165,6 +142,10 @@ octave_idx_type numel_internal (void) const; + double limit_internal (void) const; + + void init (void); + void clear_cache (void) const { cache.resize (0, 0); } protected: