comparison src/load-save.cc @ 6974:9e32bb109980

[project @ 2007-10-08 11:06:47 by jwe]
author jwe
date Mon, 08 Oct 2007 11:06:48 +0000
parents 47f4f4e88166
children 8b0cfeb06365
comparison
equal deleted inserted replaced
6973:6fcc2f5b2c7d 6974:9e32bb109980
1030 } 1030 }
1031 1031
1032 static void 1032 static void
1033 do_save (std::ostream& os, const octave_value& tc, 1033 do_save (std::ostream& os, const octave_value& tc,
1034 const std::string& name, const std::string& help, 1034 const std::string& name, const std::string& help,
1035 int global, load_save_format fmt, bool save_as_floats, 1035 int global, load_save_format fmt, bool save_as_floats)
1036 bool& infnan_warned)
1037 { 1036 {
1038 switch (fmt) 1037 switch (fmt)
1039 { 1038 {
1040 case LS_ASCII: 1039 case LS_ASCII:
1041 save_ascii_data (os, tc, name, infnan_warned, global, 0); 1040 save_ascii_data (os, tc, name, global, 0);
1042 break; 1041 break;
1043 1042
1044 case LS_BINARY: 1043 case LS_BINARY:
1045 save_binary_data (os, tc, name, help, global, save_as_floats); 1044 save_binary_data (os, tc, name, help, global, save_as_floats);
1046 break; 1045 break;
1077 1076
1078 // Save the info from SR on stream OS in the format specified by FMT. 1077 // Save the info from SR on stream OS in the format specified by FMT.
1079 1078
1080 void 1079 void
1081 do_save (std::ostream& os, symbol_record *sr, load_save_format fmt, 1080 do_save (std::ostream& os, symbol_record *sr, load_save_format fmt,
1082 bool save_as_floats, bool& infnan_warned) 1081 bool save_as_floats)
1083 { 1082 {
1084 if (! sr->is_variable ()) 1083 if (! sr->is_variable ())
1085 { 1084 {
1086 error ("save: can only save variables, not functions"); 1085 error ("save: can only save variables, not functions");
1087 return; 1086 return;
1094 std::string name = sr->name (); 1093 std::string name = sr->name ();
1095 std::string help = sr->help (); 1094 std::string help = sr->help ();
1096 1095
1097 int global = sr->is_linked_to_global (); 1096 int global = sr->is_linked_to_global ();
1098 1097
1099 do_save (os, tc, name, help, global, fmt, save_as_floats, 1098 do_save (os, tc, name, help, global, fmt, save_as_floats);
1100 infnan_warned);
1101 } 1099 }
1102 } 1100 }
1103 1101
1104 // Save variables with names matching PATTERN on stream OS in the 1102 // Save variables with names matching PATTERN on stream OS in the
1105 // format specified by FMT. 1103 // format specified by FMT.
1111 Array<symbol_record *> vars = curr_sym_tab->glob 1109 Array<symbol_record *> vars = curr_sym_tab->glob
1112 (pattern, symbol_record::USER_VARIABLE, SYMTAB_ALL_SCOPES); 1110 (pattern, symbol_record::USER_VARIABLE, SYMTAB_ALL_SCOPES);
1113 1111
1114 int saved = vars.length (); 1112 int saved = vars.length ();
1115 1113
1116 bool infnan_warned = false;
1117
1118 for (int i = 0; i < saved; i++) 1114 for (int i = 0; i < saved; i++)
1119 { 1115 {
1120 do_save (os, vars(i), fmt, save_as_floats, infnan_warned); 1116 do_save (os, vars(i), fmt, save_as_floats);
1121 1117
1122 if (error_state) 1118 if (error_state)
1123 break; 1119 break;
1124 } 1120 }
1125 1121
1339 Array<symbol_record *> vars = curr_sym_tab->glob 1335 Array<symbol_record *> vars = curr_sym_tab->glob
1340 ("*", symbol_record::USER_VARIABLE, SYMTAB_ALL_SCOPES); 1336 ("*", symbol_record::USER_VARIABLE, SYMTAB_ALL_SCOPES);
1341 1337
1342 int num_to_save = vars.length (); 1338 int num_to_save = vars.length ();
1343 1339
1344 bool infnan_warned = false;
1345
1346 double save_mem_size = 0; 1340 double save_mem_size = 0;
1347 1341
1348 for (int i = 0; i < num_to_save; i++) 1342 for (int i = 0; i < num_to_save; i++)
1349 { 1343 {
1350 symbol_record *sr = vars(i); 1344 symbol_record *sr = vars(i);
1368 std::string name = sr->name (); 1362 std::string name = sr->name ();
1369 std::string help = sr->help (); 1363 std::string help = sr->help ();
1370 1364
1371 int global = sr->is_linked_to_global (); 1365 int global = sr->is_linked_to_global ();
1372 1366
1373 do_save (os, tc, name, help, global, fmt, save_as_floats, 1367 do_save (os, tc, name, help, global, fmt, save_as_floats);
1374 infnan_warned);
1375 1368
1376 if (error_state) 1369 if (error_state)
1377 break; 1370 break;
1378 } 1371 }
1379 } 1372 }