Mercurial > hg > octave-nkf
comparison src/variables.cc @ 4435:dd7af4fa1942
[project @ 2003-06-23 17:52:36 by jwe]
author | jwe |
---|---|
date | Mon, 23 Jun 2003 17:52:36 +0000 |
parents | d700cfed902a |
children | 0a59e4de215e |
comparison
equal
deleted
inserted
replaced
4434:d28fa596b886 | 4435:dd7af4fa1942 |
---|---|
34 #include "oct-env.h" | 34 #include "oct-env.h" |
35 #include "glob-match.h" | 35 #include "glob-match.h" |
36 #include "str-vec.h" | 36 #include "str-vec.h" |
37 | 37 |
38 #include <defaults.h> | 38 #include <defaults.h> |
39 #include "Cell.h" | |
39 #include "defun.h" | 40 #include "defun.h" |
40 #include "dirfns.h" | 41 #include "dirfns.h" |
41 #include "error.h" | 42 #include "error.h" |
42 #include "gripes.h" | 43 #include "gripes.h" |
43 #include "help.h" | 44 #include "help.h" |
1057 print_usage ("document"); | 1058 print_usage ("document"); |
1058 | 1059 |
1059 return retval; | 1060 return retval; |
1060 } | 1061 } |
1061 | 1062 |
1062 static octave_value_list | 1063 static octave_value |
1063 do_who (int argc, const string_vector& argv) | 1064 do_who (int argc, const string_vector& argv, int return_list) |
1064 { | 1065 { |
1065 octave_value_list retval; | 1066 octave_value retval; |
1066 | 1067 |
1067 bool show_builtins = false; | 1068 bool show_builtins = false; |
1068 bool show_functions = false; | 1069 bool show_functions = false; |
1069 bool show_variables = false; | 1070 bool show_variables = false; |
1070 bool show_verbose = false; | 1071 bool show_verbose = false; |
1116 { | 1117 { |
1117 show_functions = at_top_level (); | 1118 show_functions = at_top_level (); |
1118 show_variables = 1; | 1119 show_variables = 1; |
1119 } | 1120 } |
1120 | 1121 |
1121 int pad_after = 0; | 1122 if (return_list) |
1122 | 1123 { |
1123 if (show_builtins) | 1124 string_vector names; |
1124 { | 1125 |
1125 pad_after += fbi_sym_tab->maybe_list | 1126 if (show_builtins) |
1126 ("*** built-in constants:", pats, octave_stdout, | 1127 { |
1127 show_verbose, symbol_record::BUILTIN_CONSTANT, SYMTAB_ALL_SCOPES); | 1128 names.append (fbi_sym_tab->name_list |
1128 | 1129 (pats, true, symbol_record::BUILTIN_CONSTANT, |
1129 pad_after += fbi_sym_tab->maybe_list | 1130 SYMTAB_ALL_SCOPES)); |
1130 ("*** built-in variables:", pats, octave_stdout, | 1131 |
1131 show_verbose, symbol_record::BUILTIN_VARIABLE, SYMTAB_ALL_SCOPES); | 1132 names.append (fbi_sym_tab->name_list |
1132 | 1133 (pats, true, symbol_record::BUILTIN_VARIABLE, |
1133 pad_after += fbi_sym_tab->maybe_list | 1134 SYMTAB_ALL_SCOPES)); |
1134 ("*** built-in functions:", pats, octave_stdout, | 1135 |
1135 show_verbose, symbol_record::BUILTIN_FUNCTION, SYMTAB_ALL_SCOPES); | 1136 names.append (fbi_sym_tab->name_list |
1136 } | 1137 (pats, true, symbol_record::BUILTIN_FUNCTION, |
1137 | 1138 SYMTAB_ALL_SCOPES)); |
1138 if (show_functions) | 1139 } |
1139 { | 1140 |
1140 pad_after += fbi_sym_tab->maybe_list | 1141 if (show_functions) |
1141 ("*** dynamically linked functions:", pats, | 1142 { |
1142 octave_stdout, show_verbose, symbol_record::DLD_FUNCTION, | 1143 names.append (fbi_sym_tab->name_list |
1143 SYMTAB_ALL_SCOPES); | 1144 (pats, true, symbol_record::DLD_FUNCTION, |
1144 | 1145 SYMTAB_ALL_SCOPES)); |
1145 pad_after += fbi_sym_tab->maybe_list | 1146 |
1146 ("*** currently compiled functions:", pats, | 1147 names.append (fbi_sym_tab->name_list |
1147 octave_stdout, show_verbose, symbol_record::USER_FUNCTION, | 1148 (pats, true, symbol_record::USER_FUNCTION, |
1148 SYMTAB_ALL_SCOPES); | 1149 SYMTAB_ALL_SCOPES)); |
1149 } | 1150 } |
1150 | 1151 |
1151 if (show_variables) | 1152 if (show_variables) |
1152 { | 1153 { |
1153 pad_after += curr_sym_tab->maybe_list | 1154 names.append (curr_sym_tab->name_list |
1154 ("*** local user variables:", pats, octave_stdout, | 1155 (pats, true, symbol_record::USER_VARIABLE, |
1155 show_verbose, symbol_record::USER_VARIABLE, SYMTAB_LOCAL_SCOPE); | 1156 SYMTAB_LOCAL_SCOPE)); |
1156 | 1157 |
1157 pad_after += curr_sym_tab->maybe_list | 1158 names.append (curr_sym_tab->name_list |
1158 ("*** globally visible user variables:", pats, | 1159 (pats, true, symbol_record::USER_VARIABLE, |
1159 octave_stdout, show_verbose, symbol_record::USER_VARIABLE, | 1160 SYMTAB_GLOBAL_SCOPE)); |
1160 SYMTAB_GLOBAL_SCOPE); | 1161 } |
1161 } | 1162 |
1162 | 1163 if (show_verbose) |
1163 if (pad_after) | 1164 { |
1164 octave_stdout << "\n"; | 1165 int len = names.length (); |
1165 | 1166 |
1166 return retval; | 1167 octave_value_list ovl (len, octave_value ()); |
1167 } | 1168 |
1168 | 1169 for (int i = 0; i < len; i++) |
1169 DEFCMD (who, args, , | 1170 ovl(i) = names(i); |
1171 | |
1172 retval = Octave_map ("name", ovl); | |
1173 } | |
1174 else | |
1175 retval = Cell (names); | |
1176 } | |
1177 else | |
1178 { | |
1179 int pad_after = 0; | |
1180 | |
1181 if (show_builtins) | |
1182 { | |
1183 pad_after += fbi_sym_tab->maybe_list | |
1184 ("*** built-in constants:", pats, octave_stdout, | |
1185 show_verbose, symbol_record::BUILTIN_CONSTANT, SYMTAB_ALL_SCOPES); | |
1186 | |
1187 pad_after += fbi_sym_tab->maybe_list | |
1188 ("*** built-in variables:", pats, octave_stdout, | |
1189 show_verbose, symbol_record::BUILTIN_VARIABLE, SYMTAB_ALL_SCOPES); | |
1190 | |
1191 pad_after += fbi_sym_tab->maybe_list | |
1192 ("*** built-in functions:", pats, octave_stdout, | |
1193 show_verbose, symbol_record::BUILTIN_FUNCTION, SYMTAB_ALL_SCOPES); | |
1194 } | |
1195 | |
1196 if (show_functions) | |
1197 { | |
1198 pad_after += fbi_sym_tab->maybe_list | |
1199 ("*** dynamically linked functions:", pats, | |
1200 octave_stdout, show_verbose, symbol_record::DLD_FUNCTION, | |
1201 SYMTAB_ALL_SCOPES); | |
1202 | |
1203 pad_after += fbi_sym_tab->maybe_list | |
1204 ("*** currently compiled functions:", pats, | |
1205 octave_stdout, show_verbose, symbol_record::USER_FUNCTION, | |
1206 SYMTAB_ALL_SCOPES); | |
1207 } | |
1208 | |
1209 if (show_variables) | |
1210 { | |
1211 pad_after += curr_sym_tab->maybe_list | |
1212 ("*** local user variables:", pats, octave_stdout, | |
1213 show_verbose, symbol_record::USER_VARIABLE, SYMTAB_LOCAL_SCOPE); | |
1214 | |
1215 pad_after += curr_sym_tab->maybe_list | |
1216 ("*** globally visible user variables:", pats, | |
1217 octave_stdout, show_verbose, symbol_record::USER_VARIABLE, | |
1218 SYMTAB_GLOBAL_SCOPE); | |
1219 } | |
1220 | |
1221 if (pad_after) | |
1222 octave_stdout << "\n"; | |
1223 } | |
1224 | |
1225 return retval; | |
1226 } | |
1227 | |
1228 DEFCMD (who, args, nargout, | |
1170 "-*- texinfo -*-\n\ | 1229 "-*- texinfo -*-\n\ |
1171 @deffn {Command} who options pattern @dots{}\n\ | 1230 @deffn {Command} who options pattern @dots{}\n\ |
1172 @deffnx {Command} whos options pattern @dots{}\n\ | 1231 @deffnx {Command} whos options pattern @dots{}\n\ |
1173 List currently defined symbols matching the given patterns. The\n\ | 1232 List currently defined symbols matching the given patterns. The\n\ |
1174 following are valid options. They may be shortened to one character but\n\ | 1233 following are valid options. They may be shortened to one character but\n\ |
1202 visible in the local scope are displayed.\n\ | 1261 visible in the local scope are displayed.\n\ |
1203 \n\ | 1262 \n\ |
1204 The command @kbd{whos} is equivalent to @kbd{who -long}.\n\ | 1263 The command @kbd{whos} is equivalent to @kbd{who -long}.\n\ |
1205 @end deffn") | 1264 @end deffn") |
1206 { | 1265 { |
1207 octave_value_list retval; | 1266 octave_value retval; |
1208 | 1267 |
1209 int argc = args.length () + 1; | 1268 if (nargout < 2) |
1210 | 1269 { |
1211 string_vector argv = args.make_argv ("who"); | 1270 int argc = args.length () + 1; |
1212 | 1271 |
1213 if (error_state) | 1272 string_vector argv = args.make_argv ("who"); |
1214 return retval; | 1273 |
1215 | 1274 if (error_state) |
1216 retval = do_who (argc, argv); | 1275 return retval; |
1217 | 1276 |
1218 return retval; | 1277 retval = do_who (argc, argv, nargout == 1); |
1219 } | 1278 } |
1220 | 1279 else |
1221 DEFCMD (whos, args, , | 1280 print_usage ("who"); |
1281 | |
1282 return retval; | |
1283 } | |
1284 | |
1285 DEFCMD (whos, args, nargout, | |
1222 "-*- texinfo -*-\n\ | 1286 "-*- texinfo -*-\n\ |
1223 @deffn {Command} whos options pattern @dots{}\n\ | 1287 @deffn {Command} whos options pattern @dots{}\n\ |
1224 See who.\n\ | 1288 See who.\n\ |
1225 @end deffn") | 1289 @end deffn") |
1226 { | 1290 { |
1227 octave_value_list retval; | 1291 octave_value retval; |
1228 | 1292 |
1229 int nargin = args.length (); | 1293 if (nargout < 2) |
1230 | 1294 { |
1231 octave_value_list tmp_args; | 1295 int nargin = args.length (); |
1232 for (int i = nargin; i > 0; i--) | 1296 |
1233 tmp_args(i) = args(i-1); | 1297 octave_value_list tmp_args; |
1234 tmp_args(0) = "-long"; | 1298 |
1235 | 1299 for (int i = nargin; i > 0; i--) |
1236 int argc = tmp_args.length () + 1; | 1300 tmp_args(i) = args(i-1); |
1237 | 1301 |
1238 string_vector argv = tmp_args.make_argv ("whos"); | 1302 tmp_args(0) = "-long"; |
1239 | 1303 |
1240 if (error_state) | 1304 int argc = tmp_args.length () + 1; |
1241 return retval; | 1305 |
1242 | 1306 string_vector argv = tmp_args.make_argv ("whos"); |
1243 retval = do_who (argc, argv); | 1307 |
1308 if (error_state) | |
1309 return retval; | |
1310 | |
1311 retval = do_who (argc, argv, nargout == 1); | |
1312 } | |
1313 else | |
1314 print_usage ("whos"); | |
1244 | 1315 |
1245 return retval; | 1316 return retval; |
1246 } | 1317 } |
1247 | 1318 |
1248 // Defining variables. | 1319 // Defining variables. |