changeset 24620:f5ad5d6f16fd

Deprecate toascii function * scripts/deprecated/toascii.m: New m-file to emit warning and compute toascii which was previously a C++ function. * scripts/deprecated/module.mk: Add toascii.m to build system. * NEWS: Anounce deprecation and replacement functionality in double(). * strings.txi: Remove DOCSTRING entry. Change instances of "toascii" to "double" in manual. * Cell.h (xtoascii): Delete. * mappers.cc (Ftoascii): Delete function. Replace all uses of toascii with double in other string function BIST tests. * ov-base-sparse.cc (map): Delete case for umap_xtoascii. * ov-base.cc (get_umap_name): Remove "toascii" from list of umap names. * ov-base.h (enum unary_mapper_t): Remove umap_xtoascii from enum. * ov-cell.cc (map): Remove FORWARD_MAPPER (xtoascii). * ov-ch-mat.cc (xtoascii): Delete function. * ov-float.cc (map), ov-flt-re-mat.cc (map), ov-re-mat.cc (map), ov-scalar.cc (map): Delete case for umap_xtoascii. * ov.h: Remove MAPPER_FORWARD (xtoascii)
author Rik <rik@octave.org>
date Fri, 19 Jan 2018 10:17:36 -0800
parents c241918d4c92
children 2bb3f3de0b4e
files NEWS doc/interpreter/strings.txi libinterp/corefcn/Cell.h libinterp/corefcn/mappers.cc libinterp/octave-value/ov-base-sparse.cc libinterp/octave-value/ov-base.cc libinterp/octave-value/ov-base.h libinterp/octave-value/ov-cell.cc libinterp/octave-value/ov-ch-mat.cc libinterp/octave-value/ov-float.cc libinterp/octave-value/ov-flt-re-mat.cc libinterp/octave-value/ov-re-mat.cc libinterp/octave-value/ov-scalar.cc libinterp/octave-value/ov.h scripts/deprecated/module.mk scripts/deprecated/toascii.m
diffstat 16 files changed, 89 insertions(+), 73 deletions(-) [+]
line wrap: on
line diff
--- a/NEWS	Fri Jan 19 08:09:21 2018 -0800
+++ b/NEWS	Fri Jan 19 10:17:36 2018 -0800
@@ -266,6 +266,7 @@
       ---------------------|------------------
       chop                 | sprintf for visual results
       desktop              | isguirunning
+      toascii              | double
 
  ** The following functions were deprecated in Octave 4.0 and have been
     removed from Octave 4.4.
--- a/doc/interpreter/strings.txi	Fri Jan 19 08:09:21 2018 -0800
+++ b/doc/interpreter/strings.txi	Fri Jan 19 10:17:36 2018 -0800
@@ -74,9 +74,9 @@
 
 @example
 @group
-toascii ("\n")
+double ("\n")
     @result{} 10
-toascii ('\n')
+double ('\n')
     @result{} [ 92 110 ]
 @end group
 @end example
@@ -504,8 +504,6 @@
 
 @DOCSTRING(str2num)
 
-@DOCSTRING(toascii)
-
 @DOCSTRING(tolower)
 
 @DOCSTRING(toupper)
--- a/libinterp/corefcn/Cell.h	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/corefcn/Cell.h	Fri Jan 19 10:17:36 2018 -0800
@@ -149,7 +149,6 @@
   Cell xisspace (void) const { return map (&octave_value::xisspace); }
   Cell xisupper (void) const { return map (&octave_value::xisupper); }
   Cell xisxdigit (void) const { return map (&octave_value::xisxdigit); }
-  Cell xtoascii (void) const { return map (&octave_value::xtoascii); }
   Cell xtolower (void) const { return map (&octave_value::xtolower); }
   Cell xtoupper (void) const { return map (&octave_value::xtoupper); }
 
--- a/libinterp/corefcn/mappers.cc	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/corefcn/mappers.cc	Fri Jan 19 10:17:36 2018 -0800
@@ -1210,9 +1210,9 @@
 %!test
 %! charset = char (0:127);
 %! result = false (1, 128);
-%! result(toascii ("A":"Z") + 1) = true;
-%! result(toascii ("0":"9") + 1) = true;
-%! result(toascii ("a":"z") + 1) = true;
+%! result(double ("A":"Z") + 1) = true;
+%! result(double ("0":"9") + 1) = true;
+%! result(double ("a":"z") + 1) = true;
 %! assert (isalnum (charset), result);
 
 %!error isalnum ()
@@ -1239,8 +1239,8 @@
 %!test
 %! charset = char (0:127);
 %! result = false (1, 128);
-%! result(toascii ("A":"Z") + 1) = true;
-%! result(toascii ("a":"z") + 1) = true;
+%! result(double ("A":"Z") + 1) = true;
+%! result(double ("a":"z") + 1) = true;
 %! assert (isalpha (charset), result);
 
 %!error isalpha ()
@@ -1315,7 +1315,7 @@
 %!test
 %! charset = char (0:127);
 %! result = false (1, 128);
-%! result(toascii ("0":"9") + 1) = true;
+%! result(double ("0":"9") + 1) = true;
 %! assert (isdigit (charset), result);
 
 %!error isdigit ()
@@ -1406,7 +1406,7 @@
 %!test
 %! charset = char (0:127);
 %! result = false (1, 128);
-%! result(toascii ("a":"z") + 1) = true;
+%! result(double ("a":"z") + 1) = true;
 %! assert (islower (charset), result);
 
 %!error islower ()
@@ -1566,7 +1566,7 @@
 %!test
 %! charset = char (0:127);
 %! result = false (1, 128);
-%! result(toascii (" \f\n\r\t\v") + 1) = true;
+%! result(double (" \f\n\r\t\v") + 1) = true;
 %! assert (isspace (charset), result);
 
 %!error isspace ()
@@ -1591,7 +1591,7 @@
 %!test
 %! charset = char (0:127);
 %! result = false (1, 128);
-%! result(toascii ("A":"Z") + 1) = true;
+%! result(double ("A":"Z") + 1) = true;
 %! assert (isupper (charset), result);
 
 %!error isupper ()
@@ -1616,9 +1616,9 @@
 %!test
 %! charset = char (0:127);
 %! result = false (1, 128);
-%! result(toascii ("A":"F") + 1) = true;
-%! result(toascii ("0":"9") + 1) = true;
-%! result(toascii ("a":"f") + 1) = true;
+%! result(double ("A":"F") + 1) = true;
+%! result(double ("0":"9") + 1) = true;
+%! result(double ("a":"f") + 1) = true;
 %! assert (isxdigit (charset), result);
 
 %!error isxdigit ()
@@ -2106,41 +2106,6 @@
 %!error tanh (1, 2)
 */
 
-DEFUNX ("toascii", Ftoascii, args, ,
-        doc: /* -*- texinfo -*-
-@deftypefn {} {} toascii (@var{s})
-Return ASCII representation of @var{s} in a matrix.
-
-For example:
-
-@example
-@group
-toascii ("ASCII")
-     @result{} [ 65, 83, 67, 73, 73 ]
-@end group
-
-@end example
-@seealso{char}
-@end deftypefn */)
-{
-  if (args.length () != 1)
-    print_usage ();
-
-  return ovl (args(0).xtoascii ());
-}
-
-/*
-%!assert (toascii (char (0:127)), 0:127)
-%!assert (toascii (" ":"@"), 32:64)
-%!assert (toascii ("A":"Z"), 65:90)
-%!assert (toascii ("[":"`"), 91:96)
-%!assert (toascii ("a":"z"), 97:122)
-%!assert (toascii ("{":"~"), 123:126)
-
-%!error toascii ()
-%!error toascii (1, 2)
-*/
-
 DEFUNX ("tolower", Ftolower, args, ,
         doc: /* -*- texinfo -*-
 @deftypefn  {} {} tolower (@var{s})
@@ -2197,7 +2162,7 @@
 %!test
 %! charset = char (0:127);
 %! result = charset;
-%! result (toascii ("A":"Z") + 1) = result (toascii ("a":"z") + 1);
+%! result (double ("A":"Z") + 1) = result (double ("a":"z") + 1);
 %! assert (tolower (charset), result);
 
 %!error <Invalid call to tolower> lower ()
@@ -2261,7 +2226,7 @@
 %!test
 %! charset = char (0:127);
 %! result = charset;
-%! result (toascii  ("a":"z") + 1) = result (toascii  ("A":"Z") + 1);
+%! result (double  ("a":"z") + 1) = result (double  ("A":"Z") + 1);
 %! assert (toupper (charset), result);
 
 %!error <Invalid call to toupper> toupper ()
--- a/libinterp/octave-value/ov-base-sparse.cc	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/octave-value/ov-base-sparse.cc	Fri Jan 19 10:17:36 2018 -0800
@@ -511,7 +511,6 @@
     case umap_xisspace:
     case umap_xisupper:
     case umap_xisxdigit:
-    case umap_xtoascii:
       // FIXME: intentionally skip this step for string mappers.
       // Is this wanted?
       break;
--- a/libinterp/octave-value/ov-base.cc	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/octave-value/ov-base.cc	Fri Jan 19 10:17:36 2018 -0800
@@ -1076,7 +1076,6 @@
     "isupper",
     "isxdigit",
     "signbit",
-    "toascii",
     "tolower",
     "toupper"
   };
--- a/libinterp/octave-value/ov-base.h	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/octave-value/ov-base.h	Fri Jan 19 10:17:36 2018 -0800
@@ -778,7 +778,6 @@
     umap_xisupper,
     umap_xisxdigit,
     umap_xsignbit,
-    umap_xtoascii,
     umap_xtolower,
     umap_xtoupper,
     umap_unknown,
--- a/libinterp/octave-value/ov-cell.cc	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/octave-value/ov-cell.cc	Fri Jan 19 10:17:36 2018 -0800
@@ -1429,7 +1429,6 @@
     FORWARD_MAPPER (xisspace);
     FORWARD_MAPPER (xisupper);
     FORWARD_MAPPER (xisxdigit);
-    FORWARD_MAPPER (xtoascii);
     FORWARD_MAPPER (xtolower);
     FORWARD_MAPPER (xtoupper);
 
--- a/libinterp/octave-value/ov-ch-mat.cc	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/octave-value/ov-ch-mat.cc	Fri Jan 19 10:17:36 2018 -0800
@@ -247,15 +247,6 @@
 #endif
 }
 
-static inline int xtoascii (int c)
-{
-#if defined (HAVE_TOASCII)
-  return toascii (c);
-#else
-  return (c & 0x7F);
-#endif
-}
-
 octave_value
 octave_char_matrix::map (unary_mapper_t umap) const
 {
@@ -279,7 +270,6 @@
     STRING_MAPPER (xisspace, std::isspace, bool);
     STRING_MAPPER (xisupper, std::isupper, bool);
     STRING_MAPPER (xisxdigit, std::isxdigit, bool);
-    STRING_MAPPER (xtoascii, xtoascii, double);
     STRING_MAPPER (xtolower, std::tolower, char);
     STRING_MAPPER (xtoupper, std::toupper, char);
 
--- a/libinterp/octave-value/ov-float.cc	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/octave-value/ov-float.cc	Fri Jan 19 10:17:36 2018 -0800
@@ -419,7 +419,6 @@
     case umap_xisspace:
     case umap_xisupper:
     case umap_xisxdigit:
-    case umap_xtoascii:
       {
         octave_value str_conv = convert_to_str (true, true);
         return str_conv.map (umap);
--- a/libinterp/octave-value/ov-flt-re-mat.cc	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/octave-value/ov-flt-re-mat.cc	Fri Jan 19 10:17:36 2018 -0800
@@ -856,7 +856,6 @@
     case umap_xisspace:
     case umap_xisupper:
     case umap_xisxdigit:
-    case umap_xtoascii:
       {
         octave_value str_conv = convert_to_str (true, true);
         return str_conv.map (umap);
--- a/libinterp/octave-value/ov-re-mat.cc	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/octave-value/ov-re-mat.cc	Fri Jan 19 10:17:36 2018 -0800
@@ -982,7 +982,6 @@
     case umap_xisspace:
     case umap_xisupper:
     case umap_xisxdigit:
-    case umap_xtoascii:
       {
         octave_value str_conv = convert_to_str (true, true);
         return str_conv.map (umap);
--- a/libinterp/octave-value/ov-scalar.cc	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/octave-value/ov-scalar.cc	Fri Jan 19 10:17:36 2018 -0800
@@ -440,7 +440,6 @@
     case umap_xisspace:
     case umap_xisupper:
     case umap_xisxdigit:
-    case umap_xtoascii:
       {
         octave_value str_conv = convert_to_str (true, true);
         return str_conv.map (umap);
--- a/libinterp/octave-value/ov.h	Fri Jan 19 08:09:21 2018 -0800
+++ b/libinterp/octave-value/ov.h	Fri Jan 19 10:17:36 2018 -0800
@@ -1456,7 +1456,6 @@
   MAPPER_FORWARD (xisupper)
   MAPPER_FORWARD (xisxdigit)
   MAPPER_FORWARD (xsignbit)
-  MAPPER_FORWARD (xtoascii)
   MAPPER_FORWARD (xtolower)
   MAPPER_FORWARD (xtoupper)
 
--- a/scripts/deprecated/module.mk	Fri Jan 19 08:09:21 2018 -0800
+++ b/scripts/deprecated/module.mk	Fri Jan 19 10:17:36 2018 -0800
@@ -13,6 +13,7 @@
   %reldir%/paren.m \
   %reldir%/semicolon.m \
   %reldir%/sleep.m \
+  %reldir%/toascii.m \
   %reldir%/usleep.m \
   %reldir%/wavread.m \
   %reldir%/wavwrite.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/deprecated/toascii.m	Fri Jan 19 10:17:36 2018 -0800
@@ -0,0 +1,71 @@
+## Copyright (C) 2018 Rik Wehbring
+##
+## 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
+## <https://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn {} {} toascii (@var{s})
+##
+## @code{toascii} is deprecated and will be removed in Octave version 4.8.
+## Use @code{double} instead.
+##
+## Return ASCII representation of @var{s} in a matrix.
+## 
+## For example:
+## 
+## @example
+## @group
+## toascii ("ASCII"
+##      @result{} [ 65, 83, 67, 73, 73 ]
+## @end group
+## 
+## @end example
+## @seealso{double, char}
+## @end deftypefn
+
+## Remove in version 4.8.
+
+function retval = toascii (str)
+
+  persistent warned = false;
+  if (! warned)
+    warned = true;
+    warning ("Octave:deprecated-function",
+             "toascii is obsolete and will be removed from a future version of Octave, please use double instead");
+  endif
+
+  if (nargin != 1)
+    print_usage ();
+  endif
+
+  if (iscell (str))
+    retval = cellfun (@(x) bitand (double (x), 0x7F), str, "uniformoutput", 0);
+  else
+    retval = bitand (double (str), 0x7F);  # Restrict to 7-bit ASCII
+  endif
+
+endfunction
+
+
+%!assert (toascii (char (0:127)), 0:127)
+%!assert (toascii (" ":"@"), 32:64)
+%!assert (toascii ("A":"Z"), 65:90)
+%!assert (toascii ("[":"`"), 91:96)
+%!assert (toascii ("a":"z"), 97:122)
+%!assert (toascii ("{":"~"), 123:126)
+
+%!error toascii ()
+%!error toascii (1, 2)