# HG changeset patch # User Rik # Date 1380135430 25200 # Node ID 278ef6bd821d43da42e88a355d34fdbae2d3827f # Parent be7e8b91c6b162823be73e0d1635f0cc9db2c4bd isprop.m: Overhaul function. * scripts/plot/isprop.m: Add note that input may also be an array of object handles. Use variable names in error() messages. Avoid unnecessary catch block in try/catch statement. Add %!error input validation tests. diff --git a/scripts/plot/isprop.m b/scripts/plot/isprop.m --- a/scripts/plot/isprop.m +++ b/scripts/plot/isprop.m @@ -17,8 +17,11 @@ ## . ## -*- texinfo -*- -## @deftypefn {Function File} {@var{res} =} isprop (@var{h}, @var{prop}) +## @deftypefn {Function File} {@var{res} =} isprop (@var{h}, "@var{prop}") ## Return true if @var{prop} is a property of the object with handle @var{h}. +## +## @var{h} may also be an array of handles in which case @var{res} will be a +## logical array indicating whether each handle has the property @var{prop}. ## @seealso{get, set} ## @end deftypefn @@ -26,23 +29,21 @@ function res = isprop (h, prop) - if (nargin < 1 || nargin > 2) + if (nargin != 2) print_usage (); endif if (! all (ishandle (h))) - error ("isprop: first input argument must be a handle"); + error ("isprop: H must be a graphics handle or vector of handles"); elseif (! ischar (prop)) - error ("isprop: second input argument must be string"); + error ("isprop: PROP name must be a string"); endif res = false (size (h)); - for n = 1:numel (res) - res(n) = true; + for i = 1:numel (res) try - v = get (h(n), prop); - catch - res(n) = false; + v = get (h(i), prop); + res(i) = true; end_try_catch endfor endfunction @@ -52,3 +53,9 @@ %!assert (isprop (0, "screenpixelsperinch"), true) %!assert (isprop (zeros (2, 3), "visible"), true (2, 3)) +%!error isprop () +%!error isprop (1) +%!error isprop (1,2,3) +%!error isprop ({1}, "visible") +%!error isprop (0, {"visible"}) +