# HG changeset patch # User Rik # Date 1439828403 25200 # Node ID c6224b4e7774e94beb142e2c5e1e79e4b89e9c98 # Parent ab2c5e84954a04ab260d4bb900b586a04c5fe843 maint: Rename instances of LS_ASCII to LS_TEXT for clarity. Octave's default save format is '-text' which is confusingly referred to in the code base as LS_ASCII (looks like '-ascii' mode). * ls-oct-text.cc, ls-oct-text.h: Renamed from ls-oct-ascii.[cc|h]. * ls-oct-ascii.cc, ls-oct-ascii.h: Removed files. * libinterp/corefcn/module.mk: Add ls-oct-text.cc, ls-oct-text.h to build system. * load-save.h (load_save_format_type): Change first value of enum from LS_ASCII to LS_TEXT. * load-save.cc: Rename instances of LS_ASCII to LS_TEXT. Rename instances of read_ascii_data to read_text_data. * ov-base-diag.cc, ov-base-int.cc, ov-base-sparse.cc, ov-bool-mat.cc, ov-bool.cc, ov-complex.cc, ov-cx-mat.cc ov-fcn-inline.cc, ov-float.cc, ov-flt-complex.cc, ov-flt-cx-mat.cc, ov-flt-re-mat.cc, ov-int16.cc, ov-int32.cc, ov-int64.cc, ov-int8.cc, ov-perm.cc, ov-re-mat.cc, ov-scalar.cc, ov-str-mat.cc, ov-uint16.cc, ov-uint32.cc, ov-uint64.cc, ov-uint8.cc: Use '#include "ls-oct-text.h"' rather than ls-oct-ascii.h. ov-cell.cc, ov-class.cc, ov-fcn-handle.cc, ov-lazy-idx.cc, ov-struct.cc: Use '#include "ls-oct-text.h"' rather than ls-oct-ascii.h. Rename save_ascii_data to save_text_data, read_ascii_data to read_text_data. diff -r ab2c5e84954a -r c6224b4e7774 libinterp/corefcn/load-save.cc --- a/libinterp/corefcn/load-save.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/corefcn/load-save.cc Mon Aug 17 09:20:03 2015 -0700 @@ -77,7 +77,7 @@ #include "ls-mat-ascii.h" #include "ls-mat4.h" #include "ls-mat5.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-oct-binary.h" // Remove gnulib definitions, if any. @@ -270,7 +270,7 @@ std::string type_val = extract_keyword (file, "type"); if (name_val.empty () != true && type_val.empty () != true) - retval = LS_ASCII; + retval = LS_TEXT; else { file.clear (); @@ -363,8 +363,8 @@ switch (format.type) { - case LS_ASCII: - name = read_ascii_data (stream, orig_fname, global, tc, count); + case LS_TEXT: + name = read_text_data (stream, orig_fname, global, tc, count); break; case LS_BINARY: @@ -709,7 +709,7 @@ } else if (argv[i] == "-text" || argv[i] == "-t") { - format = LS_ASCII; + format = LS_TEXT; } else break; @@ -928,8 +928,8 @@ { switch (fmt.type) { - case LS_ASCII: - save_ascii_data (os, tc, name, global, 0); + case LS_TEXT: + save_text_data (os, tc, name, global, 0); break; case LS_BINARY: @@ -1070,7 +1070,7 @@ } else if (argv[i] == "-text" || argv[i] == "-t") { - format = LS_ASCII; + format = LS_TEXT; } else if (argv[i] == "-binary" || argv[i] == "-b") { @@ -1229,7 +1229,7 @@ #ifdef HAVE_HDF5 case LS_HDF5: #endif /* HAVE_HDF5 */ - case LS_ASCII: + case LS_TEXT: { octave_localtime now; @@ -1615,7 +1615,7 @@ bool save_as_floats = false; - load_save_format format = LS_ASCII; + load_save_format format = LS_TEXT; bool append = false; @@ -1640,7 +1640,7 @@ return retval; } - if (save_as_floats && format == LS_ASCII) + if (save_as_floats && format == LS_TEXT) { error ("save: cannot specify both -ascii and -float-binary"); return retval; diff -r ab2c5e84954a -r c6224b4e7774 libinterp/corefcn/load-save.h --- a/libinterp/corefcn/load-save.h Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/corefcn/load-save.h Mon Aug 17 09:20:03 2015 -0700 @@ -35,7 +35,7 @@ // Similarly, save_as_floats may be an option for LS_BINARY, LS_HDF5 etc. enum load_save_format_type { - LS_ASCII, + LS_TEXT, LS_BINARY, LS_MAT_ASCII, LS_MAT_BINARY, diff -r ab2c5e84954a -r c6224b4e7774 libinterp/corefcn/ls-oct-ascii.cc --- a/libinterp/corefcn/ls-oct-ascii.cc Fri Aug 14 14:26:31 2015 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,433 +0,0 @@ -/* - -Copyright (C) 1996-2015 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 -. - -*/ - -// Author: John W. Eaton. - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include - -#include -#include -#include -#include -#include - -#include "byte-swap.h" -#include "data-conv.h" -#include "file-ops.h" -#include "glob-match.h" -#include "lo-mappers.h" -#include "mach-info.h" -#include "oct-env.h" -#include "oct-time.h" -#include "quit.h" -#include "str-vec.h" - -#include "Cell.h" -#include "defun.h" -#include "error.h" -#include "gripes.h" -#include "load-save.h" -#include "ls-ascii-helper.h" -#include "ls-oct-ascii.h" -#include "oct-obj.h" -#include "oct-map.h" -#include "ov-cell.h" -#include "pager.h" -#include "pt-exp.h" -#include "unwind-prot.h" -#include "utils.h" -#include "variables.h" -#include "version.h" -#include "dMatrix.h" - -// The number of decimal digits to use when writing ascii data. -static int Vsave_precision = 16; - -// Functions for reading ascii data. - -// Extract a KEYWORD and its value from stream IS, returning the -// associated value in a new string. -// -// Input should look something like: -// -// [%#][ \t]*keyword[ \t]*:[ \t]*string-value[ \t]*\n - -std::string -extract_keyword (std::istream& is, const char *keyword, const bool next_only) -{ - std::string retval; - - int ch = is.peek (); - if (next_only && ch != '%' && ch != '#') - return retval; - - char c; - while (is.get (c)) - { - if (c == '%' || c == '#') - { - std::ostringstream buf; - - while (is.get (c) && (c == ' ' || c == '\t' || c == '%' || c == '#')) - ; // Skip whitespace and comment characters. - - if (isalpha (c)) - buf << c; - - while (is.get (c) && isalpha (c)) - buf << c; - - std::string tmp = buf.str (); - bool match = (tmp.compare (0, strlen (keyword), keyword) == 0); - - if (match) - { - std::ostringstream value; - while (is.get (c) && (c == ' ' || c == '\t' || c == ':')) - ; // Skip whitespace and the colon. - - is.putback (c); - retval = read_until_newline (is, false); - break; - } - else if (next_only) - break; - else - skip_until_newline (is, false); - } - } - - int len = retval.length (); - - if (len > 0) - { - while (len) - { - c = retval[len-1]; - - if (c == ' ' || c == '\t') - len--; - else - { - retval.resize (len); - break; - } - } - } - - return retval; -} - -// Extract one value (scalar, matrix, string, etc.) from stream IS and -// place it in TC, returning the name of the variable. If the value -// is tagged as global in the file, return TRUE in GLOBAL. -// -// Each type supplies its own function to load the data, and so this -// function is extensible. -// -// FILENAME is used for error messages. -// -// The data is expected to be in the following format: -// -// The input file must have a header followed by some data. -// -// All lines in the header must begin with a '#' character. -// -// The header must contain a list of keyword and value pairs with the -// keyword and value separated by a colon. -// -// Keywords must appear in the following order: -// -// # name: -// # type: -// # -// -// Where, for the built in types are: -// -// : a valid identifier -// -// : -// | global -// -// : scalar -// | complex scalar -// | matrix -// | complex matrix -// | bool -// | bool matrix -// | string -// | range -// -// : -// | -// -// : # rows: -// : # columns: -// -// : # elements: -// : # length: (once before each string) -// -// For backward compatibility the type "string array" is treated as a -// "string" type. Also "string" can have a single element with no elements -// line such that -// -// : # length: -// -// Formatted ASCII data follows the header. -// -// Example: -// -// # name: foo -// # type: matrix -// # rows: 2 -// # columns: 2 -// 2 4 -// 1 3 -// -// Example: -// -// # name: foo -// # type: string -// # elements: 5 -// # length: 4 -// this -// # length: 2 -// is -// # length: 1 -// a -// # length: 6 -// string -// # length: 5 -// array -// -// FIXME: this format is fairly rigid, and doesn't allow for -// arbitrary comments. Someone should fix that. It does allow arbitrary -// types however. - -// Ugh. The signature of the compare method is not standard in older -// versions of the GNU libstdc++. Do this instead: - -#define SUBSTRING_COMPARE_EQ(s, pos, n, t) (s.substr (pos, n) == t) - -std::string -read_ascii_data (std::istream& is, const std::string& filename, bool& global, - octave_value& tc, octave_idx_type count) -{ - // Read name for this entry or break on EOF. - - std::string name = extract_keyword (is, "name"); - - if (name.empty ()) - { - if (count == 0) - error ("load: empty name keyword or no data found in file '%s'", - filename.c_str ()); - - return std::string (); - } - - if (! (name == ".nargin." || name == ".nargout." - || name == CELL_ELT_TAG || valid_identifier (name))) - { - error ("load: bogus identifier '%s' found in file '%s'", - name.c_str (), filename.c_str ()); - return std::string (); - } - - // Look for type keyword. - - std::string tag = extract_keyword (is, "type"); - - if (! tag.empty ()) - { - std::string typ; - size_t pos = tag.rfind (' '); - - if (pos != std::string::npos) - { - global = SUBSTRING_COMPARE_EQ (tag, 0, 6, "global"); - - typ = global ? tag.substr (7) : tag; - } - else - typ = tag; - - // Special case for backward compatiablity. A small bit of cruft - if (SUBSTRING_COMPARE_EQ (typ, 0, 12, "string array")) - tc = charMatrix (); - else - tc = octave_value_typeinfo::lookup_type (typ); - - if (! tc.load_ascii (is)) - error ("load: trouble reading ascii file '%s'", filename.c_str ()); - } - else - error ("load: failed to extract keyword specifying value type"); - - if (error_state) - { - error ("load: reading file %s", filename.c_str ()); - return std::string (); - } - - return name; -} - -// Save the data from TC along with the corresponding NAME, and global -// flag MARK_AS_GLOBAL on stream OS in the plain text format described -// above for load_ascii_data. If NAME is empty, the name: line is not -// generated. PRECISION specifies the number of decimal digits to print. -// -// Assumes ranges and strings cannot contain Inf or NaN values. -// -// Returns 1 for success and 0 for failure. - -// FIXME: should probably write the help string here too. - -bool -save_ascii_data (std::ostream& os, const octave_value& val_arg, - const std::string& name, bool mark_as_global, - int precision) -{ - bool success = true; - - if (! name.empty ()) - os << "# name: " << name << "\n"; - - octave_value val = val_arg; - - if (mark_as_global) - os << "# type: global " << val.type_name () << "\n"; - else - os << "# type: " << val.type_name () << "\n"; - - if (! precision) - precision = Vsave_precision; - - long old_precision = os.precision (); - os.precision (precision); - - success = val.save_ascii (os); - - // Insert an extra pair of newline characters after the data so that - // multiple data elements may be handled separately by gnuplot (see - // the description of the index qualifier for the plot command in the - // gnuplot documentation). - os << "\n\n"; - - os.precision (old_precision); - - return (os && success); -} - -bool -save_ascii_data_for_plotting (std::ostream& os, const octave_value& t, - const std::string& name) -{ - return save_ascii_data (os, t, name, false, 6); -} - -// Maybe this should be a static function in tree-plot.cc? - -// If TC is matrix, save it on stream OS in a format useful for -// making a 3-dimensional plot with gnuplot. If PARAMETRIC is -// TRUE, assume a parametric 3-dimensional plot will be generated. - -bool -save_three_d (std::ostream& os, const octave_value& tc, bool parametric) -{ - bool fail = false; - - octave_idx_type nr = tc.rows (); - octave_idx_type nc = tc.columns (); - - if (tc.is_real_matrix ()) - { - os << "# 3-D data...\n" - << "# type: matrix\n" - << "# total rows: " << nr << "\n" - << "# total columns: " << nc << "\n"; - - long old_precision = os.precision (); - os.precision (6); - - if (parametric) - { - octave_idx_type extras = nc % 3; - if (extras) - warning ("ignoring last %d columns", extras); - - Matrix tmp = tc.matrix_value (); - nr = tmp.rows (); - - for (octave_idx_type i = 0; i < nc-extras; i += 3) - { - os << tmp.extract (0, i, nr-1, i+2); - if (i+3 < nc-extras) - os << "\n"; - } - } - else - { - Matrix tmp = tc.matrix_value (); - nr = tmp.rows (); - - for (octave_idx_type i = 0; i < nc; i++) - { - os << tmp.extract (0, i, nr-1, i); - if (i+1 < nc) - os << "\n"; - } - } - - os.precision (old_precision); - } - else - { - error ("for now, I can only save real matrices in 3-D format"); - fail = true; - } - - return (os && ! fail); -} - -DEFUN (save_precision, args, nargout, - "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {@var{val} =} save_precision ()\n\ -@deftypefnx {Built-in Function} {@var{old_val} =} save_precision (@var{new_val})\n\ -@deftypefnx {Built-in Function} {} save_precision (@var{new_val}, \"local\")\n\ -Query or set the internal variable that specifies the number of digits to\n\ -keep when saving data in text format.\n\ -\n\ -When called from inside a function with the @qcode{\"local\"} option, the\n\ -variable is changed locally for the function and any subroutines it calls.\n\ -The original variable value is restored when exiting the function.\n\ -@end deftypefn") -{ - return SET_INTERNAL_VARIABLE_WITH_LIMITS (save_precision, -1, - std::numeric_limits::max ()); -} diff -r ab2c5e84954a -r c6224b4e7774 libinterp/corefcn/ls-oct-ascii.h --- a/libinterp/corefcn/ls-oct-ascii.h Fri Aug 14 14:26:31 2015 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,189 +0,0 @@ -/* - -Copyright (C) 2003-2015 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 -. - -*/ - -#if !defined (octave_ls_oct_ascii_h) -#define octave_ls_oct_ascii_h 1 - -#include - -#include -#include - -#include "str-vec.h" - -#include "ls-ascii-helper.h" - -// Flag for cell elements -#define CELL_ELT_TAG "" - -// Used when converting Inf to something that gnuplot can read. - -#ifndef OCT_RBV -#define OCT_RBV (std::numeric_limits::max () / 100.0) -#endif - -extern OCTINTERP_API std::string -extract_keyword (std::istream& is, const char *keyword, - const bool next_only = false); - -extern OCTINTERP_API std::string -read_ascii_data (std::istream& is, const std::string& filename, bool& global, - octave_value& tc, octave_idx_type count); - -extern OCTINTERP_API bool -save_ascii_data (std::ostream& os, const octave_value& val_arg, - const std::string& name, bool mark_as_global, int precision); - -extern OCTINTERP_API bool -save_ascii_data_for_plotting (std::ostream& os, const octave_value& t, - const std::string& name); - -extern OCTINTERP_API bool -save_three_d (std::ostream& os, const octave_value& t, - bool parametric = false); - -// Match KEYWORD on stream IS, placing the associated value in VALUE, -// returning TRUE if successful and FALSE otherwise. -// -// Input should look something like: -// -// [%#][ \t]*keyword[ \t]*int-value.*\n - -template -bool -extract_keyword (std::istream& is, const char *keyword, T& value, - const bool next_only = false) -{ - bool status = false; - value = T (); - - char c; - while (is.get (c)) - { - if (c == '%' || c == '#') - { - std::ostringstream buf; - - while (is.get (c) && (c == ' ' || c == '\t' || c == '%' || c == '#')) - ; // Skip whitespace and comment characters. - - if (isalpha (c)) - buf << c; - - while (is.get (c) && isalpha (c)) - buf << c; - - std::string tmp = buf.str (); - bool match = (tmp.compare (0, strlen (keyword), keyword) == 0); - - if (match) - { - while (is.get (c) && (c == ' ' || c == '\t' || c == ':')) - ; // Skip whitespace and the colon. - - is.putback (c); - if (c != '\n' && c != '\r') - is >> value; - if (is) - status = true; - skip_until_newline (is, false); - break; - } - else if (next_only) - break; - } - } - return status; -} - -template -bool -extract_keyword (std::istream& is, const std::string& kw, T& value, - const bool next_only = false) -{ - return extract_keyword (is, kw.c_str (), value, next_only); -} - -// Match one of the elements in KEYWORDS on stream IS, placing the -// matched keyword in KW and the associated value in VALUE, -// returning TRUE if successful and FALSE otherwise. -// -// Input should look something like: -// -// [%#][ \t]*keyword[ \t]*int-value.*\n - -template -bool -extract_keyword (std::istream& is, const string_vector& keywords, - std::string& kw, T& value, const bool next_only = false) -{ - bool status = false; - kw = ""; - value = 0; - - char c; - while (is.get (c)) - { - if (c == '%' || c == '#') - { - std::ostringstream buf; - - while (is.get (c) && (c == ' ' || c == '\t' || c == '%' || c == '#')) - ; // Skip whitespace and comment characters. - - if (isalpha (c)) - buf << c; - - while (is.get (c) && isalpha (c)) - buf << c; - - std::string tmp = buf.str (); - - for (int i = 0; i < keywords.numel (); i++) - { - int match = (tmp == keywords[i]); - - if (match) - { - kw = keywords[i]; - - while (is.get (c) && (c == ' ' || c == '\t' || c == ':')) - ; // Skip whitespace and the colon. - - is.putback (c); - if (c != '\n' && c != '\r') - is >> value; - if (is) - status = true; - skip_until_newline (is, false); - return status; - } - } - - if (next_only) - break; - } - } - return status; -} - -#endif diff -r ab2c5e84954a -r c6224b4e7774 libinterp/corefcn/ls-oct-text.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libinterp/corefcn/ls-oct-text.cc Mon Aug 17 09:20:03 2015 -0700 @@ -0,0 +1,432 @@ +/* + +Copyright (C) 1996-2015 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 +. + +*/ + +// Author: John W. Eaton. + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +#include +#include +#include +#include +#include + +#include "byte-swap.h" +#include "data-conv.h" +#include "file-ops.h" +#include "glob-match.h" +#include "lo-mappers.h" +#include "mach-info.h" +#include "oct-env.h" +#include "oct-time.h" +#include "quit.h" +#include "str-vec.h" + +#include "Cell.h" +#include "defun.h" +#include "error.h" +#include "gripes.h" +#include "load-save.h" +#include "ls-ascii-helper.h" +#include "ls-oct-text.h" +#include "oct-obj.h" +#include "oct-map.h" +#include "ov-cell.h" +#include "pager.h" +#include "pt-exp.h" +#include "unwind-prot.h" +#include "utils.h" +#include "variables.h" +#include "version.h" +#include "dMatrix.h" + +// The number of decimal digits to use when writing ascii data. +static int Vsave_precision = 16; + +// Functions for reading octave format text data. + +// Extract a KEYWORD and its value from stream IS, returning the +// associated value in a new string. +// +// Input should look something like: +// +// [%#][ \t]*keyword[ \t]*:[ \t]*string-value[ \t]*\n + +std::string +extract_keyword (std::istream& is, const char *keyword, const bool next_only) +{ + std::string retval; + + int ch = is.peek (); + if (next_only && ch != '%' && ch != '#') + return retval; + + char c; + while (is.get (c)) + { + if (c == '%' || c == '#') + { + std::ostringstream buf; + + while (is.get (c) && (c == ' ' || c == '\t' || c == '%' || c == '#')) + ; // Skip whitespace and comment characters. + + if (isalpha (c)) + buf << c; + + while (is.get (c) && isalpha (c)) + buf << c; + + std::string tmp = buf.str (); + bool match = (tmp.compare (0, strlen (keyword), keyword) == 0); + + if (match) + { + std::ostringstream value; + while (is.get (c) && (c == ' ' || c == '\t' || c == ':')) + ; // Skip whitespace and the colon. + + is.putback (c); + retval = read_until_newline (is, false); + break; + } + else if (next_only) + break; + else + skip_until_newline (is, false); + } + } + + int len = retval.length (); + + if (len > 0) + { + while (len) + { + c = retval[len-1]; + + if (c == ' ' || c == '\t') + len--; + else + { + retval.resize (len); + break; + } + } + } + + return retval; +} + +// Extract one value (scalar, matrix, string, etc.) from stream IS and +// place it in TC, returning the name of the variable. If the value +// is tagged as global in the file, return TRUE in GLOBAL. +// +// Each type supplies its own function to load the data, and so this +// function is extensible. +// +// FILENAME is used for error messages. +// +// The data is expected to be in the following format: +// +// The input file must have a header followed by some data. +// +// All lines in the header must begin with a '#' character. +// +// The header must contain a list of keyword and value pairs with the +// keyword and value separated by a colon. +// +// Keywords must appear in the following order: +// +// # name: +// # type: +// # +// +// Where, for the built in types are: +// +// : a valid identifier +// +// : +// | global +// +// : scalar +// | complex scalar +// | matrix +// | complex matrix +// | bool +// | bool matrix +// | string +// | range +// +// : +// | +// +// : # rows: +// : # columns: +// +// : # elements: +// : # length: (once before each string) +// +// For backward compatibility the type "string array" is treated as a +// "string" type. Also "string" can have a single element with no elements +// line such that +// +// : # length: +// +// Formatted ASCII data follows the header. +// +// Example: +// +// # name: foo +// # type: matrix +// # rows: 2 +// # columns: 2 +// 2 4 +// 1 3 +// +// Example: +// +// # name: foo +// # type: string +// # elements: 5 +// # length: 4 +// this +// # length: 2 +// is +// # length: 1 +// a +// # length: 6 +// string +// # length: 5 +// array +// +// FIXME: This format is fairly rigid, and doesn't allow for arbitrary comments. +// Someone should fix that. It does allow arbitrary types however. + +// Ugh. The signature of the compare method is not standard in older +// versions of the GNU libstdc++. Do this instead: + +#define SUBSTRING_COMPARE_EQ(s, pos, n, t) (s.substr (pos, n) == t) + +std::string +read_text_data (std::istream& is, const std::string& filename, bool& global, + octave_value& tc, octave_idx_type count) +{ + // Read name for this entry or break on EOF. + + std::string name = extract_keyword (is, "name"); + + if (name.empty ()) + { + if (count == 0) + error ("load: empty name keyword or no data found in file '%s'", + filename.c_str ()); + + return std::string (); + } + + if (! (name == ".nargin." || name == ".nargout." + || name == CELL_ELT_TAG || valid_identifier (name))) + { + error ("load: bogus identifier '%s' found in file '%s'", + name.c_str (), filename.c_str ()); + return std::string (); + } + + // Look for type keyword. + + std::string tag = extract_keyword (is, "type"); + + if (! tag.empty ()) + { + std::string typ; + size_t pos = tag.rfind (' '); + + if (pos != std::string::npos) + { + global = SUBSTRING_COMPARE_EQ (tag, 0, 6, "global"); + + typ = global ? tag.substr (7) : tag; + } + else + typ = tag; + + // Special case for backward compatiablity. A small bit of cruft + if (SUBSTRING_COMPARE_EQ (typ, 0, 12, "string array")) + tc = charMatrix (); + else + tc = octave_value_typeinfo::lookup_type (typ); + + if (! tc.load_ascii (is)) + error ("load: trouble reading ascii file '%s'", filename.c_str ()); + } + else + error ("load: failed to extract keyword specifying value type"); + + if (error_state) + { + error ("load: reading file %s", filename.c_str ()); + return std::string (); + } + + return name; +} + +// Save the data from TC along with the corresponding NAME, and global +// flag MARK_AS_GLOBAL on stream OS in the plain text format described +// above for load_text_data. If NAME is empty, the name: line is not +// generated. PRECISION specifies the number of decimal digits to print. +// +// Assumes ranges and strings cannot contain Inf or NaN values. +// +// Returns 1 for success and 0 for failure. + +// FIXME: should probably write the help string here too. + +bool +save_text_data (std::ostream& os, const octave_value& val_arg, + const std::string& name, bool mark_as_global, + int precision) +{ + bool success = true; + + if (! name.empty ()) + os << "# name: " << name << "\n"; + + octave_value val = val_arg; + + if (mark_as_global) + os << "# type: global " << val.type_name () << "\n"; + else + os << "# type: " << val.type_name () << "\n"; + + if (! precision) + precision = Vsave_precision; + + long old_precision = os.precision (); + os.precision (precision); + + success = val.save_ascii (os); + + // Insert an extra pair of newline characters after the data so that + // multiple data elements may be handled separately by gnuplot (see + // the description of the index qualifier for the plot command in the + // gnuplot documentation). + os << "\n\n"; + + os.precision (old_precision); + + return (os && success); +} + +bool +save_text_data_for_plotting (std::ostream& os, const octave_value& t, + const std::string& name) +{ + return save_text_data (os, t, name, false, 6); +} + +// Maybe this should be a static function in tree-plot.cc? + +// If TC is matrix, save it on stream OS in a format useful for +// making a 3-dimensional plot with gnuplot. If PARAMETRIC is +// TRUE, assume a parametric 3-dimensional plot will be generated. + +bool +save_three_d (std::ostream& os, const octave_value& tc, bool parametric) +{ + bool fail = false; + + octave_idx_type nr = tc.rows (); + octave_idx_type nc = tc.columns (); + + if (tc.is_real_matrix ()) + { + os << "# 3-D data...\n" + << "# type: matrix\n" + << "# total rows: " << nr << "\n" + << "# total columns: " << nc << "\n"; + + long old_precision = os.precision (); + os.precision (6); + + if (parametric) + { + octave_idx_type extras = nc % 3; + if (extras) + warning ("ignoring last %d columns", extras); + + Matrix tmp = tc.matrix_value (); + nr = tmp.rows (); + + for (octave_idx_type i = 0; i < nc-extras; i += 3) + { + os << tmp.extract (0, i, nr-1, i+2); + if (i+3 < nc-extras) + os << "\n"; + } + } + else + { + Matrix tmp = tc.matrix_value (); + nr = tmp.rows (); + + for (octave_idx_type i = 0; i < nc; i++) + { + os << tmp.extract (0, i, nr-1, i); + if (i+1 < nc) + os << "\n"; + } + } + + os.precision (old_precision); + } + else + { + error ("for now, I can only save real matrices in 3-D format"); + fail = true; + } + + return (os && ! fail); +} + +DEFUN (save_precision, args, nargout, + "-*- texinfo -*-\n\ +@deftypefn {Built-in Function} {@var{val} =} save_precision ()\n\ +@deftypefnx {Built-in Function} {@var{old_val} =} save_precision (@var{new_val})\n\ +@deftypefnx {Built-in Function} {} save_precision (@var{new_val}, \"local\")\n\ +Query or set the internal variable that specifies the number of digits to\n\ +keep when saving data in text format.\n\ +\n\ +When called from inside a function with the @qcode{\"local\"} option, the\n\ +variable is changed locally for the function and any subroutines it calls.\n\ +The original variable value is restored when exiting the function.\n\ +@end deftypefn") +{ + return SET_INTERNAL_VARIABLE_WITH_LIMITS (save_precision, -1, + std::numeric_limits::max ()); +} diff -r ab2c5e84954a -r c6224b4e7774 libinterp/corefcn/ls-oct-text.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libinterp/corefcn/ls-oct-text.h Mon Aug 17 09:20:03 2015 -0700 @@ -0,0 +1,189 @@ +/* + +Copyright (C) 2003-2015 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 +. + +*/ + +#if !defined (octave_ls_oct_text_h) +#define octave_ls_oct_text_h 1 + +#include + +#include +#include + +#include "str-vec.h" + +#include "ls-ascii-helper.h" + +// Flag for cell elements +#define CELL_ELT_TAG "" + +// Used when converting Inf to something that gnuplot can read. + +#ifndef OCT_RBV +#define OCT_RBV (std::numeric_limits::max () / 100.0) +#endif + +extern OCTINTERP_API std::string +extract_keyword (std::istream& is, const char *keyword, + const bool next_only = false); + +extern OCTINTERP_API std::string +read_text_data (std::istream& is, const std::string& filename, bool& global, + octave_value& tc, octave_idx_type count); + +extern OCTINTERP_API bool +save_text_data (std::ostream& os, const octave_value& val_arg, + const std::string& name, bool mark_as_global, int precision); + +extern OCTINTERP_API bool +save_text_data_for_plotting (std::ostream& os, const octave_value& t, + const std::string& name); + +extern OCTINTERP_API bool +save_three_d (std::ostream& os, const octave_value& t, + bool parametric = false); + +// Match KEYWORD on stream IS, placing the associated value in VALUE, +// returning TRUE if successful and FALSE otherwise. +// +// Input should look something like: +// +// [%#][ \t]*keyword[ \t]*int-value.*\n + +template +bool +extract_keyword (std::istream& is, const char *keyword, T& value, + const bool next_only = false) +{ + bool status = false; + value = T (); + + char c; + while (is.get (c)) + { + if (c == '%' || c == '#') + { + std::ostringstream buf; + + while (is.get (c) && (c == ' ' || c == '\t' || c == '%' || c == '#')) + ; // Skip whitespace and comment characters. + + if (isalpha (c)) + buf << c; + + while (is.get (c) && isalpha (c)) + buf << c; + + std::string tmp = buf.str (); + bool match = (tmp.compare (0, strlen (keyword), keyword) == 0); + + if (match) + { + while (is.get (c) && (c == ' ' || c == '\t' || c == ':')) + ; // Skip whitespace and the colon. + + is.putback (c); + if (c != '\n' && c != '\r') + is >> value; + if (is) + status = true; + skip_until_newline (is, false); + break; + } + else if (next_only) + break; + } + } + return status; +} + +template +bool +extract_keyword (std::istream& is, const std::string& kw, T& value, + const bool next_only = false) +{ + return extract_keyword (is, kw.c_str (), value, next_only); +} + +// Match one of the elements in KEYWORDS on stream IS, placing the +// matched keyword in KW and the associated value in VALUE, +// returning TRUE if successful and FALSE otherwise. +// +// Input should look something like: +// +// [%#][ \t]*keyword[ \t]*int-value.*\n + +template +bool +extract_keyword (std::istream& is, const string_vector& keywords, + std::string& kw, T& value, const bool next_only = false) +{ + bool status = false; + kw = ""; + value = 0; + + char c; + while (is.get (c)) + { + if (c == '%' || c == '#') + { + std::ostringstream buf; + + while (is.get (c) && (c == ' ' || c == '\t' || c == '%' || c == '#')) + ; // Skip whitespace and comment characters. + + if (isalpha (c)) + buf << c; + + while (is.get (c) && isalpha (c)) + buf << c; + + std::string tmp = buf.str (); + + for (int i = 0; i < keywords.numel (); i++) + { + int match = (tmp == keywords[i]); + + if (match) + { + kw = keywords[i]; + + while (is.get (c) && (c == ' ' || c == '\t' || c == ':')) + ; // Skip whitespace and the colon. + + is.putback (c); + if (c != '\n' && c != '\r') + is >> value; + if (is) + status = true; + skip_until_newline (is, false); + return status; + } + } + + if (next_only) + break; + } + } + return status; +} + +#endif diff -r ab2c5e84954a -r c6224b4e7774 libinterp/corefcn/module.mk --- a/libinterp/corefcn/module.mk Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/corefcn/module.mk Mon Aug 17 09:20:03 2015 -0700 @@ -53,7 +53,7 @@ libinterp/corefcn/ls-mat-ascii.h \ libinterp/corefcn/ls-mat4.h \ libinterp/corefcn/ls-mat5.h \ - libinterp/corefcn/ls-oct-ascii.h \ + libinterp/corefcn/ls-oct-text.h \ libinterp/corefcn/ls-oct-binary.h \ libinterp/corefcn/ls-utils.h \ libinterp/corefcn/mex.h \ @@ -182,7 +182,7 @@ libinterp/corefcn/ls-mat-ascii.cc \ libinterp/corefcn/ls-mat4.cc \ libinterp/corefcn/ls-mat5.cc \ - libinterp/corefcn/ls-oct-ascii.cc \ + libinterp/corefcn/ls-oct-text.cc \ libinterp/corefcn/ls-oct-binary.cc \ libinterp/corefcn/ls-utils.cc \ libinterp/corefcn/lsode.cc \ diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-base-diag.cc --- a/libinterp/octave-value/ov-base-diag.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-base-diag.cc Mon Aug 17 09:20:03 2015 -0700 @@ -38,7 +38,7 @@ #include "oct-stream.h" #include "ops.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" template octave_value diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-base-int.cc --- a/libinterp/octave-value/ov-base-int.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-base-int.cc Mon Aug 17 09:20:03 2015 -0700 @@ -52,7 +52,7 @@ #include "variables.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-base-sparse.cc --- a/libinterp/octave-value/ov-base-sparse.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-base-sparse.cc Mon Aug 17 09:20:03 2015 -0700 @@ -35,7 +35,7 @@ #include "pr-output.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-bool-mat.cc --- a/libinterp/octave-value/ov-bool-mat.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-bool-mat.cc Mon Aug 17 09:20:03 2015 -0700 @@ -47,7 +47,7 @@ #include "pr-output.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-hdf5.h" #include "ls-utils.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-bool.cc --- a/libinterp/octave-value/ov-bool.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-bool.cc Mon Aug 17 09:20:03 2015 -0700 @@ -42,7 +42,7 @@ #include "ov-scalar.h" #include "pr-output.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-hdf5.h" template class octave_base_scalar; diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-cell.cc --- a/libinterp/octave-value/ov-cell.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-cell.cc Mon Aug 17 09:20:03 2015 -0700 @@ -53,7 +53,7 @@ #include "ov-scalar.h" #include "gripes.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-oct-binary.h" #include "ls-hdf5.h" #include "ls-utils.h" @@ -777,7 +777,7 @@ octave_value o_val = tmp.elem (i); // Recurse to print sub-value. - bool b = save_ascii_data (os, o_val, CELL_ELT_TAG, false, 0); + bool b = save_text_data (os, o_val, CELL_ELT_TAG, false, 0); if (! b) return ! os.fail (); @@ -799,7 +799,7 @@ octave_value o_val = tmp.elem (i, j); // Recurse to print sub-value. - bool b = save_ascii_data (os, o_val, CELL_ELT_TAG, false, 0); + bool b = save_text_data (os, o_val, CELL_ELT_TAG, false, 0); if (! b) return ! os.fail (); @@ -849,7 +849,7 @@ bool dummy; // recurse to read cell elements - std::string nm = read_ascii_data (is, std::string (), + std::string nm = read_text_data (is, std::string (), dummy, t2, i); if (nm == CELL_ELT_TAG) @@ -898,7 +898,7 @@ bool dummy; // recurse to read cell elements - std::string nm = read_ascii_data (is, std::string (), + std::string nm = read_text_data (is, std::string (), dummy, t2, i); if (nm == CELL_ELT_TAG) diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-class.cc --- a/libinterp/octave-value/ov-class.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-class.cc Mon Aug 17 09:20:03 2015 -0700 @@ -39,7 +39,7 @@ #include "gripes.h" #include "load-path.h" #include "ls-hdf5.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-oct-binary.h" #include "ls-utils.h" #include "mxarray.h" @@ -1277,7 +1277,7 @@ { octave_value val = map.contents (i); - bool b = save_ascii_data (os, val, m.key (i), false, 0); + bool b = save_text_data (os, val, m.key (i), false, 0); if (! b) return ! os.fail (); @@ -1310,7 +1310,7 @@ // recurse to read cell elements std::string nm - = read_ascii_data (is, std::string (), dummy, t2, j); + = read_text_data (is, std::string (), dummy, t2, j); if (! is) break; diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-complex.cc --- a/libinterp/octave-value/ov-complex.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-complex.cc Mon Aug 17 09:20:03 2015 -0700 @@ -46,7 +46,7 @@ #include "pr-output.h" #include "ops.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-hdf5.h" template class octave_base_scalar; diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-cx-mat.cc --- a/libinterp/octave-value/ov-cx-mat.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-cx-mat.cc Mon Aug 17 09:20:03 2015 -0700 @@ -53,7 +53,7 @@ #include "pr-output.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-hdf5.h" #include "ls-utils.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-fcn-handle.cc --- a/libinterp/octave-value/ov-fcn-handle.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-fcn-handle.cc Mon Aug 17 09:20:03 2015 -0700 @@ -61,7 +61,7 @@ #include "byte-swap.h" #include "ls-ascii-helper.h" #include "ls-hdf5.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-oct-binary.h" #include "ls-utils.h" @@ -379,7 +379,7 @@ for (std::list::const_iterator p = vars.begin (); p != vars.end (); p++) { - if (! save_ascii_data (os, p->varval (0), p->name (), false, 0)) + if (! save_text_data (os, p->varval (0), p->name (), false, 0)) return ! os.fail (); } } @@ -462,7 +462,7 @@ bool dummy; std::string name - = read_ascii_data (is, std::string (), dummy, t2, i); + = read_text_data (is, std::string (), dummy, t2, i); if (!is) { diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-fcn-inline.cc --- a/libinterp/octave-value/ov-fcn-inline.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-fcn-inline.cc Mon Aug 17 09:20:03 2015 -0700 @@ -50,7 +50,7 @@ #include "byte-swap.h" #include "ls-ascii-helper.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-hdf5.h" #include "ls-utils.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-float.cc --- a/libinterp/octave-value/ov-float.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-float.cc Mon Aug 17 09:20:03 2015 -0700 @@ -49,7 +49,7 @@ #include "xpow.h" #include "ops.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-hdf5.h" template class octave_base_scalar; diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-flt-complex.cc --- a/libinterp/octave-value/ov-flt-complex.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-flt-complex.cc Mon Aug 17 09:20:03 2015 -0700 @@ -46,7 +46,7 @@ #include "pr-output.h" #include "ops.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-hdf5.h" template class octave_base_scalar; diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-flt-cx-mat.cc --- a/libinterp/octave-value/ov-flt-cx-mat.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-flt-cx-mat.cc Mon Aug 17 09:20:03 2015 -0700 @@ -57,7 +57,7 @@ #include "ops.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-hdf5.h" #include "ls-utils.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-flt-re-mat.cc --- a/libinterp/octave-value/ov-flt-re-mat.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-flt-re-mat.cc Mon Aug 17 09:20:03 2015 -0700 @@ -65,7 +65,7 @@ #include "ops.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-int16.cc --- a/libinterp/octave-value/ov-int16.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-int16.cc Mon Aug 17 09:20:03 2015 -0700 @@ -52,7 +52,7 @@ #include "variables.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-int32.cc --- a/libinterp/octave-value/ov-int32.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-int32.cc Mon Aug 17 09:20:03 2015 -0700 @@ -52,7 +52,7 @@ #include "variables.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-int64.cc --- a/libinterp/octave-value/ov-int64.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-int64.cc Mon Aug 17 09:20:03 2015 -0700 @@ -52,7 +52,7 @@ #include "variables.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-int8.cc --- a/libinterp/octave-value/ov-int8.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-int8.cc Mon Aug 17 09:20:03 2015 -0700 @@ -52,7 +52,7 @@ #include "variables.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-lazy-idx.cc --- a/libinterp/octave-value/ov-lazy-idx.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-lazy-idx.cc Mon Aug 17 09:20:03 2015 -0700 @@ -27,7 +27,7 @@ #include "ov-lazy-idx.h" #include "ops.h" #include "ov-scalar.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-oct-binary.h" DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (octave_lazy_index, "lazy_index", "double"); @@ -161,14 +161,14 @@ bool octave_lazy_index::save_ascii (std::ostream& os) { - return save_ascii_data (os, make_value (), value_save_tag, false, 0); + return save_text_data (os, make_value (), value_save_tag, false, 0); } bool octave_lazy_index::load_ascii (std::istream& is) { bool dummy; - std::string nm = read_ascii_data (is, std::string (), dummy, value, 0); + std::string nm = read_text_data (is, std::string (), dummy, value, 0); if (nm != value_save_tag) error ("lazy_index: corrupted data on load"); diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-perm.cc --- a/libinterp/octave-value/ov-perm.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-perm.cc Mon Aug 17 09:20:03 2015 -0700 @@ -36,7 +36,7 @@ #include "ops.h" #include "pr-output.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" octave_value octave_perm_matrix::subsref (const std::string& type, diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-re-mat.cc --- a/libinterp/octave-value/ov-re-mat.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-re-mat.cc Mon Aug 17 09:20:03 2015 -0700 @@ -65,7 +65,7 @@ #include "variables.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-scalar.cc --- a/libinterp/octave-value/ov-scalar.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-scalar.cc Mon Aug 17 09:20:03 2015 -0700 @@ -49,7 +49,7 @@ #include "xpow.h" #include "ops.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-hdf5.h" template class octave_base_scalar; diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-str-mat.cc --- a/libinterp/octave-value/ov-str-mat.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-str-mat.cc Mon Aug 17 09:20:03 2015 -0700 @@ -41,7 +41,7 @@ #include "gripes.h" #include "ls-ascii-helper.h" #include "ls-hdf5.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "oct-obj.h" #include "oct-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-struct.cc --- a/libinterp/octave-value/ov-struct.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-struct.cc Mon Aug 17 09:20:03 2015 -0700 @@ -42,7 +42,7 @@ #include "oct-locbuf.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-oct-binary.h" #include "ls-hdf5.h" #include "ls-utils.h" @@ -766,7 +766,7 @@ octave_value val = map.contents (key); - bool b = save_ascii_data (os, val, key, false, 0); + bool b = save_text_data (os, val, key, false, 0); if (! b) return ! os.fail (); @@ -820,7 +820,7 @@ // recurse to read cell elements std::string nm - = read_ascii_data (is, std::string (), dummy, t2, j); + = read_text_data (is, std::string (), dummy, t2, j); if (!is) break; @@ -1476,7 +1476,7 @@ octave_value val = map.contents (key); - bool b = save_ascii_data (os, val, key, false, 0); + bool b = save_text_data (os, val, key, false, 0); if (! b) return ! os.fail (); @@ -1504,7 +1504,7 @@ // recurse to read cell elements std::string nm - = read_ascii_data (is, std::string (), dummy, t2, j); + = read_text_data (is, std::string (), dummy, t2, j); if (!is) break; diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-uint16.cc --- a/libinterp/octave-value/ov-uint16.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-uint16.cc Mon Aug 17 09:20:03 2015 -0700 @@ -52,7 +52,7 @@ #include "variables.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-uint32.cc --- a/libinterp/octave-value/ov-uint32.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-uint32.cc Mon Aug 17 09:20:03 2015 -0700 @@ -52,7 +52,7 @@ #include "variables.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-uint64.cc --- a/libinterp/octave-value/ov-uint64.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-uint64.cc Mon Aug 17 09:20:03 2015 -0700 @@ -52,7 +52,7 @@ #include "variables.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h" diff -r ab2c5e84954a -r c6224b4e7774 libinterp/octave-value/ov-uint8.cc --- a/libinterp/octave-value/ov-uint8.cc Fri Aug 14 14:26:31 2015 -0700 +++ b/libinterp/octave-value/ov-uint8.cc Mon Aug 17 09:20:03 2015 -0700 @@ -52,7 +52,7 @@ #include "variables.h" #include "byte-swap.h" -#include "ls-oct-ascii.h" +#include "ls-oct-text.h" #include "ls-utils.h" #include "ls-hdf5.h"