annotate scripts/general/isa.m @ 9010:f914834836e7

Partial implementation of derived classes using the old form with "@" files.
author rtshort@smoketree.phaselocked.com
date Tue, 24 Mar 2009 11:29:53 -0400
parents eb63fbe60fab
children 5579998f8acf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8920
eb63fbe60fab update copyright notices
John W. Eaton <jwe@octave.org>
parents: 7778
diff changeset
1 ## Copyright (C) 2004, 2005, 2007, 2008 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 -*-
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
20 ## @deftypefn {Function File} {} isa (@var{x}, @var{class})
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
21 ## Return true if @var{x} is a value from the class @var{class}.
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
22 ## @end deftypefn
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
23
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
24 ## Author: Paul Kienzle <pkienzle@users.sf.net>
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
25 ## Adapted-by: jwe
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
26
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
27 function retval = isa (x, cname)
7125
f084ba47812b [project @ 2007-11-08 02:29:23 by jwe]
jwe
parents: 7017
diff changeset
28
f084ba47812b [project @ 2007-11-08 02:29:23 by jwe]
jwe
parents: 7017
diff changeset
29 if (nargin != 2)
f084ba47812b [project @ 2007-11-08 02:29:23 by jwe]
jwe
parents: 7017
diff changeset
30 print_usage ();
f084ba47812b [project @ 2007-11-08 02:29:23 by jwe]
jwe
parents: 7017
diff changeset
31 endif
f084ba47812b [project @ 2007-11-08 02:29:23 by jwe]
jwe
parents: 7017
diff changeset
32
7773
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
33 persistent float_classes = {"double", "single"};
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
34
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
35 persistent fnum_classes = {"double", "single", ...
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
36 "uint8", "uint16", "uint32", "uint64", ...
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
37 "int8", "int16", "int32", "int64"};
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
38
7772
ff717f2f9feb Treat numeric and float argument in the isa function.
David Bateman <dbateman@free.fr>
parents: 7125
diff changeset
39 if (strcmp (cname, "float"))
7773
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
40 retval = any (strcmp (class (x), float_classes));
7778
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
41 elseif (strcmp (cname, "numeric"))
7773
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
42 retval = any (strcmp (class (x), fnum_classes));
7772
ff717f2f9feb Treat numeric and float argument in the isa function.
David Bateman <dbateman@free.fr>
parents: 7125
diff changeset
43 else
9010
f914834836e7 Partial implementation of derived classes using the old form with "@" files.
rtshort@smoketree.phaselocked.com
parents: 8920
diff changeset
44 class_of_x = class (x);
f914834836e7 Partial implementation of derived classes using the old form with "@" files.
rtshort@smoketree.phaselocked.com
parents: 8920
diff changeset
45 retval = strcmp (class_of_x, cname);
f914834836e7 Partial implementation of derived classes using the old form with "@" files.
rtshort@smoketree.phaselocked.com
parents: 8920
diff changeset
46 if (! retval && isobject (x))
f914834836e7 Partial implementation of derived classes using the old form with "@" files.
rtshort@smoketree.phaselocked.com
parents: 8920
diff changeset
47 parent_classes_of_x = __parent_classes__ (x);
f914834836e7 Partial implementation of derived classes using the old form with "@" files.
rtshort@smoketree.phaselocked.com
parents: 8920
diff changeset
48 if (! isempty (parent_classes_of_x))
f914834836e7 Partial implementation of derived classes using the old form with "@" files.
rtshort@smoketree.phaselocked.com
parents: 8920
diff changeset
49 retval = any (strcmp (parent_classes_of_x, cname));
f914834836e7 Partial implementation of derived classes using the old form with "@" files.
rtshort@smoketree.phaselocked.com
parents: 8920
diff changeset
50 endif
f914834836e7 Partial implementation of derived classes using the old form with "@" files.
rtshort@smoketree.phaselocked.com
parents: 8920
diff changeset
51 endif
7772
ff717f2f9feb Treat numeric and float argument in the isa function.
David Bateman <dbateman@free.fr>
parents: 7125
diff changeset
52 endif
7773
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
53
4950
0896307b1b48 [project @ 2004-08-31 21:26:35 by jwe]
jwe
parents:
diff changeset
54 endfunction
7773
f83be206eca1 isa.m: simplify with persistent variables
Bill Denney
parents: 7772
diff changeset
55
7777
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
56 %!assert (isa ("char", "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
57 %!assert (isa (double (13), "float"), true)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
58 %!assert (isa (single (13), "float"), true)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
59 %!assert (isa (int8 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
60 %!assert (isa (int16 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
61 %!assert (isa (int32 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
62 %!assert (isa (int64 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
63 %!assert (isa (uint8 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
64 %!assert (isa (uint16 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
65 %!assert (isa (uint32 (13), "float"), false)
221fe75ac5c9 isa.m: fix tests
John W. Eaton <jwe@octave.org>
parents: 7773
diff changeset
66 %!assert (isa (uint64 (13), "float"), false)
7778
97b7ba81e1c3 isa.m: fnumeric -> numeric
David Bateman <dbateman@free.fr>
parents: 7777
diff changeset
67 %!assert (isa ("char", "numeric"), false)
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)