* Bug 15858 fixed: size(cblock) had troubles
[scilab.git] / scilab / modules / overloading / macros / %cblock_size.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // Copyright (C) 2012 - 2016 - Scilab Enterprises
4 // Copyright (C) 2018 - Samuel GOUGEON
5 //
6 // This file is hereby licensed under the terms of the GNU GPL v2.0,
7 // pursuant to article 5.3.4 of the CeCILL v.2.1.
8 // This file was originally licensed under the terms of the CeCILL v2.1,
9 // and continues to be available under such terms.
10 // For more information, see the COPYING file which you should have received
11 // along with this program.
12
13 function [m,n] = %cblock_size(M, o)
14     n = size(definedfields(M),"*")-1;
15     if ~isdef("o","l") then
16         o = -1    // [m, n]
17     elseif o=="r" | o==1
18         o = 1
19     elseif o=="c" | o==2
20         o = 2
21     elseif o=="*" | o==0
22         o = 0
23     else // 
24         o = -1
25     end
26     if n==0 then
27         m = 0
28     else
29         m = size(getfield(2,M),1);
30         if o~=1
31             n = 0
32             for k = 2:size(definedfields(M),"*")
33                 n = n + size(getfield(k,M),2);
34             end
35         end
36     end
37     if argn(1)==1 then
38         if o==0
39             m = m*n
40         elseif o==2
41             m = n
42         elseif o==-1
43             m = [m,n]
44         end
45     end
46 endfunction