* Bug #8687 fixed - typeof() function failed on uint8, depending on the format (...
[scilab.git] / scilab / modules / core / macros / typeof.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // 
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at    
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10 function [tf]=typeof(object)
11     if exists("object","local")==0 then
12         error(msprintf(_("%s: Wrong value for input argument #%d: Defined variable expected.\n"),"typeof", 1))
13     end
14     select type(object)
15     case 1 then tf='constant';
16     case 2 then tf='polynomial';
17     case 4 then tf='boolean';
18     case 5 then tf='sparse';
19     case 6 then tf='boolean sparse';
20     case 7 then tf='Matlab sparse';
21     case 8 then 
22         it=inttype(object)
23         tf=''
24         f=format();
25         format('v');
26         if int(it/10)==1 then
27             tf='u'
28             it=modulo(it,10)
29         end
30         tf=tf+'int'+string(8*it);
31         if f(1) == 0 then
32             format('e');
33         end
34     case 9 then tf='handle';
35     case 10 then tf='string';
36     case 11 then tf='function';
37     case 13 then tf='function';
38     case 14 then tf='library';
39     case 128 then tf='pointer';
40     case 129 then tf='size implicit';
41     case 15 then tf='list';
42     case 16 then
43         o1=object(1);
44         select o1(1)
45         case 'r' then 
46             tf='rational';
47         case 'lss' then 
48             tf='state-space';
49         else
50             tf=o1(1)
51         end
52     case 17 then
53         o1=getfield(1,object)
54         select o1(1)
55         case 'hm' then
56             tf='hypermat';
57         else
58             tf=o1(1)
59         end
60     else
61         [tp,nm]=typename()
62         k=find(tp==type(object))
63         if k<>[] then
64             tf=nm(k(1))
65         else
66             tf='unknown';
67         end
68     end
69 endfunction