annotate scripts/general/isa.m @ 12604:132c89bb44e3

maint: Refactor general/isXXX.m scripts to put input validation first. * general/isdir.m, general/isequal.m, general/isequalwithequalnans.m, general/isscalar.m, general/issquare.m, general/isvector.m: Refactor code to put input validation first. * general/iscolumn.m, general/isrow.m : Remove useless initialization of output variable. * general/isa.m: Add additional tests for various classes.
author Rik <octave@nomad.inbox5.com>
date Wed, 13 Apr 2011 09:32:10 -0700
parents fd0a3ac60b0e
children 72c96de7a403
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11523
fd0a3ac60b0e update copyright notices
John W. Eaton <jwe@octave.org>
parents: 11449
diff changeset
1 ## Copyright (C) 2004-2011 John W. Eaton
4950
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
2 ##
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
3 ## This file is part of Octave.
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
4 ##
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5307
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5307
diff changeset
8 ## your option) any later version.
4950
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
9 ##
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
13 ## General Public License for more details.
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
14 ##
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5307
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 5307
diff changeset
17 ## <http://www.gnu.org/licenses/>.
4950
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
18
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
19 ## -*- texinfo -*-
11431
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
20 ## @deftypefn {Function File} {} isa (@var{obj}, @var{class})
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
21 ## Return true if @var{obj} is an object from the class @var{class}.
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
22 ## @seealso{class, typeinfo}
4950
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
23 ## @end deftypefn
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
24
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
25 ## Author: Paul Kienzle <pkienzle@users.sf.net>
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
26 ## Adapted-by: jwe
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
27
11431
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
28 function retval = isa (obj, cname)
7125
f084ba47812b [project @ 2007-11-08 02:29:23 by jwe]
jwe
parents: 7017
diff changeset
29
f084ba47812b [project @ 2007-11-08 02:29:23 by jwe]
jwe
parents: 7017
diff changeset
30 if (nargin != 2)
f084ba47812b [project @ 2007-11-08 02:29:23 by jwe]
jwe
parents: 7017
diff changeset
31 print_usage ();
f084ba47812b [project @ 2007-11-08 02:29:23 by jwe]
jwe
parents: 7017
diff changeset
32 endif
f084ba47812b [project @ 2007-11-08 02:29:23 by jwe]
jwe
parents: 7017
diff changeset
33
7773
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
34 persistent float_classes = {"double", "single"};
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
35
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
36 persistent fnum_classes = {"double", "single", ...
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9245
diff changeset
37 "uint8", "uint16", "uint32", "uint64", ...
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9245
diff changeset
38 "int8", "int16", "int32", "int64"};
7773
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
39
7772
ff717f2f9feb Treat numeric and float argument in the isa function.
David Bateman <dbateman@free.fr>
parents: 7125
diff changeset
40 if (strcmp (cname, "float"))
11431
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
41 retval = any (strcmp (class (obj), float_classes));
7778
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
42 elseif (strcmp (cname, "numeric"))
11431
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
43 retval = any (strcmp (class (obj), fnum_classes));
7772
ff717f2f9feb Treat numeric and float argument in the isa function.
David Bateman <dbateman@free.fr>
parents: 7125
diff changeset
44 else
11431
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
45 class_of_x = class (obj);
9010
f914834836e7 Partial implementation of derived classes using the old form with "@" files.
rtshort@smoketree.phaselocked.com
parents: 8920
diff changeset
46 retval = strcmp (class_of_x, cname);
11431
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
47 if (! retval && isobject (obj))
0d9640d755b1 Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
48 retval = __isa_parent__ (obj, cname);
9010
f914834836e7 Partial implementation of derived classes using the old form with "@" files.
rtshort@smoketree.phaselocked.com
parents: 8920
diff changeset
49 endif
7772
ff717f2f9feb Treat numeric and float argument in the isa function.
David Bateman <dbateman@free.fr>
parents: 7125
diff changeset
50 endif
7773
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
51
4950
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
52 endfunction
7773
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
53
7777
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
54 %!assert (isa ("char", "float"), false)
11449
93b8c7ca211f isa.m: Add tests against logical types
Rik <octave@nomad.inbox5.com>
parents: 11431
diff changeset
55 %!assert (isa (logical (1), "float"), false)
7777
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
56 %!assert (isa (double (13), "float"), true)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
57 %!assert (isa (single (13), "float"), true)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
58 %!assert (isa (int8 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
59 %!assert (isa (int16 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
60 %!assert (isa (int32 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
61 %!assert (isa (int64 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
62 %!assert (isa (uint8 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
63 %!assert (isa (uint16 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
64 %!assert (isa (uint32 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
65 %!assert (isa (uint64 (13), "float"), false)
7778
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
66 %!assert (isa ("char", "numeric"), false)
11449
93b8c7ca211f isa.m: Add tests against logical types
Rik <octave@nomad.inbox5.com>
parents: 11431
diff changeset
67 %!assert (isa (logical (1), "numeric"), false)
7778
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
68 %!assert (isa (double (13), "numeric"), true)
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
69 %!assert (isa (single (13), "numeric"), true)
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
70 %!assert (isa (int8 (13), "numeric"), true)
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
71 %!assert (isa (int16 (13), "numeric"), true)
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
72 %!assert (isa (int32 (13), "numeric"), true)
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
73 %!assert (isa (int64 (13), "numeric"), true)
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
74 %!assert (isa (uint8 (13), "numeric"), true)
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
75 %!assert (isa (uint16 (13), "numeric"), true)
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
76 %!assert (isa (uint32 (13), "numeric"), true)
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
77 %!assert (isa (uint64 (13), "numeric"), true)
12604
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
78
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
79 %!assert (isa (double (13), "double"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
80 %!assert (isa (single (13), "single"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
81 %!assert (isa (int8 (13), "int8"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
82 %!assert (isa (int16 (13), "int16"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
83 %!assert (isa (int32 (13), "int32"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
84 %!assert (isa (int64 (13), "int64"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
85 %!assert (isa (uint8 (13), "uint8"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
86 %!assert (isa (uint16 (13), "uint16"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
87 %!assert (isa (uint32 (13), "uint32"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
88 %!assert (isa (uint64 (13), "uint64"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
89 %!assert (isa ("string", "char"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
90 %!assert (isa (true, "logical"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
91 %!assert (isa (false, "logical"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
92 %!assert (isa ({1, 2}, "cell"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
93 %!test
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
94 %! a.b = 1;
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
95 %! assert (isa (a, "struct"));
132c89bb44e3 maint: Refactor general/isXXX.m scripts to put input validation first.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
96