# HG changeset patch # User John W. Eaton # Date 1388722725 18000 # Node ID 0d5721873d6bbc5ad4e56ac5b47750477afc1509 # Parent 1b6db9303933d99a35d21e8914c02a82ccd21c5e avoid some tests that rely on ordering of enum values * ov-base-sparse.cc (octave_base_sparse::map): Use explicit list of umap_X cases instead of relying on specific ordering of enum values. * ov-float.cc (octave_float_scalar::map): Likewise. * ov-flt-re-mat.cc (octave_float_matrix::map): Likewise. * ov-re-mat.cc (octave_matrix::map): Likewise. * ov-scalar.cc (octave_scalar::map): Likewise. diff -r 1b6db9303933 -r 0d5721873d6b libinterp/octave-value/ov-base-sparse.cc --- a/libinterp/octave-value/ov-base-sparse.cc Thu Jan 02 22:44:37 2014 -0500 +++ b/libinterp/octave-value/ov-base-sparse.cc Thu Jan 02 23:18:45 2014 -0500 @@ -450,25 +450,46 @@ // Sparsify the result if possible. - // FIXME: intentionally skip this step for string mappers. Is this wanted? - // FIXME: this will break if some well-meaning person rearranges the - // enum list in ov-base.h. - if (umap >= umap_xisalnum && umap <= umap_xtoupper) - return retval; - - switch (retval.builtin_type ()) + switch (umap) { - case btyp_double: - retval = retval.sparse_matrix_value (); - break; - case btyp_complex: - retval = retval.sparse_complex_matrix_value (); + case umap_xisalnum: + case umap_xisalpha: + case umap_xisascii: + case umap_xiscntrl: + case umap_xisdigit: + case umap_xisgraph: + case umap_xislower: + case umap_xisprint: + case umap_xispunct: + case umap_xisspace: + case umap_xisupper: + case umap_xisxdigit: + case umap_xsignbit: + case umap_xtoascii: + // FIXME: intentionally skip this step for string mappers. + // Is this wanted? break; - case btyp_bool: - retval = retval.sparse_bool_matrix_value (); - break; + default: - break; + { + switch (retval.builtin_type ()) + { + case btyp_double: + retval = retval.sparse_matrix_value (); + break; + + case btyp_complex: + retval = retval.sparse_complex_matrix_value (); + break; + + case btyp_bool: + retval = retval.sparse_bool_matrix_value (); + break; + + default: + break; + } + } } return retval; diff -r 1b6db9303933 -r 0d5721873d6b libinterp/octave-value/ov-float.cc --- a/libinterp/octave-value/ov-float.cc Thu Jan 02 22:44:37 2014 -0500 +++ b/libinterp/octave-value/ov-float.cc Thu Jan 02 23:18:45 2014 -0500 @@ -332,15 +332,26 @@ case umap_xtoupper: return scalar; + case umap_xisalnum: + case umap_xisalpha: + case umap_xisascii: + case umap_xiscntrl: + case umap_xisdigit: + case umap_xisgraph: + case umap_xislower: + case umap_xisprint: + case umap_xispunct: + case umap_xisspace: + case umap_xisupper: + case umap_xisxdigit: + case umap_xsignbit: + case umap_xtoascii: + { + octave_value str_conv = convert_to_str (true, true); + return error_state ? octave_value () : str_conv.map (umap); + } + default: - // FIXME: this will break if some well-meaning person rearranges - // the enum list in ov-base.h. - if (umap >= umap_xisalnum && umap <= umap_xtoupper) - { - octave_value str_conv = convert_to_str (true, true); - return error_state ? octave_value () : str_conv.map (umap); - } - else return octave_base_value::map (umap); } } diff -r 1b6db9303933 -r 0d5721873d6b libinterp/octave-value/ov-flt-re-mat.cc --- a/libinterp/octave-value/ov-flt-re-mat.cc Thu Jan 02 22:44:37 2014 -0500 +++ b/libinterp/octave-value/ov-flt-re-mat.cc Thu Jan 02 23:18:45 2014 -0500 @@ -817,16 +817,27 @@ case umap_xtoupper: return matrix; + case umap_xisalnum: + case umap_xisalpha: + case umap_xisascii: + case umap_xiscntrl: + case umap_xisdigit: + case umap_xisgraph: + case umap_xislower: + case umap_xisprint: + case umap_xispunct: + case umap_xisspace: + case umap_xisupper: + case umap_xisxdigit: + case umap_xsignbit: + case umap_xtoascii: + { + octave_value str_conv = convert_to_str (true, true); + return error_state ? octave_value () : str_conv.map (umap); + } + default: - // FIXME: this will break if some well-meaning person rearranges - // the enum list in ov-base.h. - if (umap >= umap_xisalnum && umap <= umap_xtoupper) - { - octave_value str_conv = convert_to_str (true, true); - return error_state ? octave_value () : str_conv.map (umap); - } - else - return octave_base_value::map (umap); + return octave_base_value::map (umap); } } diff -r 1b6db9303933 -r 0d5721873d6b libinterp/octave-value/ov-re-mat.cc --- a/libinterp/octave-value/ov-re-mat.cc Thu Jan 02 22:44:37 2014 -0500 +++ b/libinterp/octave-value/ov-re-mat.cc Thu Jan 02 23:18:45 2014 -0500 @@ -940,15 +940,26 @@ case umap_xtoupper: return matrix; + case umap_xisalnum: + case umap_xisalpha: + case umap_xisascii: + case umap_xiscntrl: + case umap_xisdigit: + case umap_xisgraph: + case umap_xislower: + case umap_xisprint: + case umap_xispunct: + case umap_xisspace: + case umap_xisupper: + case umap_xisxdigit: + case umap_xsignbit: + case umap_xtoascii: + { + octave_value str_conv = convert_to_str (true, true); + return error_state ? octave_value () : str_conv.map (umap); + } + default: - // FIXME: this will break if some well-meaning person rearranges - // the enum list in ov-base.h. - if (umap >= umap_xisalnum && umap <= umap_xtoupper) - { - octave_value str_conv = convert_to_str (true, true); - return error_state ? octave_value () : str_conv.map (umap); - } - else return octave_base_value::map (umap); } } diff -r 1b6db9303933 -r 0d5721873d6b libinterp/octave-value/ov-scalar.cc --- a/libinterp/octave-value/ov-scalar.cc Thu Jan 02 22:44:37 2014 -0500 +++ b/libinterp/octave-value/ov-scalar.cc Thu Jan 02 23:18:45 2014 -0500 @@ -348,16 +348,27 @@ case umap_xtoupper: return scalar; + case umap_xisalnum: + case umap_xisalpha: + case umap_xisascii: + case umap_xiscntrl: + case umap_xisdigit: + case umap_xisgraph: + case umap_xislower: + case umap_xisprint: + case umap_xispunct: + case umap_xisspace: + case umap_xisupper: + case umap_xisxdigit: + case umap_xsignbit: + case umap_xtoascii: + { + octave_value str_conv = convert_to_str (true, true); + return error_state ? octave_value () : str_conv.map (umap); + } + default: - // FIXME: this will break if some well-meaning person rearranges - // the enum list in ov-base.h. - if (umap >= umap_xisalnum && umap <= umap_xtoupper) - { - octave_value str_conv = convert_to_str (true, true); - return error_state ? octave_value () : str_conv.map (umap); - } - else - return octave_base_value::map (umap); + return octave_base_value::map (umap); } }