changeset 17501:278ef6bd821d

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.
author Rik <rik@octave.org>
date Wed, 25 Sep 2013 11:57:10 -0700
parents be7e8b91c6b1
children fb5bdabb9169
files scripts/plot/isprop.m
diffstat 1 files changed, 16 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/plot/isprop.m
+++ b/scripts/plot/isprop.m
@@ -17,8 +17,11 @@
 ## <http://www.gnu.org/licenses/>.
 
 ## -*- 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 <H must be a graphics handle> isprop ({1}, "visible")
+%!error <PROP name must be a string> isprop (0, {"visible"})
+