63c1a5c5548f1b31475417776210823966d31f55
[scilab.git] / scilab / modules / integer / macros / %_iconvert.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2012 - DIGITEO - Antoine ELIAS
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 x = %_iconvert(a,typeToConvert)
11
12     if typeof(typeToConvert) <> "constant" | size(typeToConvert, "*") <> 1 then
13         error(msprintf(_("%s: Wrong size for argument #%d: Real scalar expected.\n"), "iconvert", 2));
14     end
15
16     if typeToConvert == 0 then
17         typeToConvert = 19;
18     end
19
20     castFunction(1)  = {int8};
21     castFunction(2)  = {int16};
22     castFunction(4)  = {int32};
23     castFunction(8)  = {int64};
24     castFunction(11) = {uint8};
25     castFunction(12) = {uint16};
26     castFunction(14) = {uint32};
27     castFunction(18) = {uint64};
28     castFunction(19) = {double};
29
30     if or(typeToConvert == [1,2,4,8,11,12,14,18,19]) == %f then
31         error(msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "iconvert", 2, "0, 1, 2, 4, 8, 11, 12, 14, 18"));
32     end
33     castResult = castFunction{typeToConvert};
34     x = castResult(a);
35
36 endfunction