f81bbdf76bbcf5197c80727750d301c6a0e3db43
[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   if int(it/10)==1 then
25     tf='u'
26     it=modulo(it,10)
27   end
28   tf=tf+'int'+string(8*it)
29 case 9 then tf='handle';
30 case 10 then tf='string';
31 case 11 then tf='function';
32 case 13 then tf='function';
33 case 14 then tf='library';
34 case 128 then tf='pointer';
35 case 129 then tf='size implicit';
36 case 15 then tf='list';
37 case 16 then
38   o1=object(1);
39   select o1(1)
40   case 'r' then 
41     tf='rational';
42   case 'lss' then 
43     tf='state-space';
44   else
45     tf=o1(1)
46   end
47 case 17 then
48    o1=getfield(1,object)
49    select o1(1)
50    case 'hm' then
51      tf='hypermat';
52    else
53      tf=o1(1)
54    end
55  else
56    [tp,nm]=typename()
57    k=find(tp==type(object))
58    if k<>[] then
59      tf=nm(k(1))
60    else
61      tf='unknown';
62    end
63  end
64 endfunction