`#ifexists f' or `#ifeval is_defined("f")' => `#ifeval __get_reference("f")!=NULL'
`is_defined("f")' may be 0 even if `f' is defined, in these cases one might have to test `is_defined(current_namespace()+"->f")' (and vice versa). To avoid complex constructions like `is_defined("f") || is_defined(current_namespace()+"->f")', I test `__get_reference("f")!=NULL' instead. Example 1: require("xfig"); variable rx = is_defined("xfig_plot_new"); require("png"); variable rp = is_defined("png_write"); ()=evalfile("png.sl"); variable ep = is_defined("png_write"); print([rx, rp, ep]); % 2 % 0 % from require("png"); % 1 % from evalfile("png.sl"); Example 2: (to be run in another shell) require("xfig"); variable rx = __get_reference("xfig_plot_new"); ()=evalfile("png.sl"); variable ep = __get_reference("png_write"); require("png"); variable rp = __get_reference("png_write"); print([rx, ep, rp]); % &xfig_plot_new % &png_write % from evalfile("png.sl"); % &isis->png_write % from require("png");
Loading
Please register or sign in to comment