Mercurial > hg > octave-nkf
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 } |