1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
// Copyright (C) 2010 - DIGITEO - Michael Baudin
//
// This file must be used under the terms of the GNU LGPL license.
function errmsg = Checktype ( funname , var , varname , ivar , expectedtype )
// Generates an error if the given variable is not of expected type.
//
// Calling Sequence
// errmsg = Checktype ( funname , var , varname , ivar , expectedtype )
//
// Parameters
// funname : a 1 x 1 matrix of strings, the name of the calling function.
// var : a 1 x 1 matrix of valid Scilab data type, the variable
// varname : a 1 x 1 matrix of string, the name of the variable
// ivar : a 1 x 1 matrix of floating point integers, the index of the input argument in the calling sequence
// expectedtype : a n x 1 or 1 x n matrix of strings, the available types for the variable #ivar
// errmsg : a 1 x 1 matrix of strings, the error message. If there was no error, the error message is the empty matrix.
//
// Description
// This function is designed to be used to design functions with
// input arguments with variable type.
// We use the typeof function to compute the type of the variable:
// see help typeof to get the list of all available values for expectedtype.
// Last update : 29/07/2010.
//
// Examples
// // The function takes a string argument.
// function myfunction ( x )
// Checktype ( "myfunction" , x , "x" , 1 , "string" )
// disp("This is a string")
// endfunction
// // Calling sequences which work
// myfunction ( "Scilab" )
// // Calling sequences which generate an error
// myfunction ( 123456 )
//
// // The function takes a string or a matrix of doubles argument.
// function myfunction ( x )
// Checktype ( "myfunction" , x , "x" , 1 , [ "string" "constant" ] )
// if ( typeof(x) == "string" ) then
// disp("This is a matrix of strings")
// else
// disp("This is a matrix of doubles")
// end
// endfunction
// // Calling sequences which work
// myfunction ( "Scilab" )
// myfunction ( 123456 )
// // Calling sequences which generate an error
// myfunction ( uint8(2) )
//
// Authors
// Michael Baudin - 2010 - DIGITEO
//
errmsg = []
if ( and ( typeof ( var ) <> expectedtype ) ) then
strexp = """" + strcat(expectedtype,""" or """) + """"
errmsg = msprintf(gettext("%s: Expected type [%s] for input argument %s at input #%d, but got ""%s"" instead."),funname, strexp, varname , ivar , typeof(var) );
error(errmsg);
end
endfunction
|