80964f9986347e128fd299412566b98500e41bf1
[scilab.git] / scilab / modules / parameters / macros / add_param.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) DIGITEO - 2008-2010 - Yann COLLETTE
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.1-en.txt
9
10 function [plist, err] = add_param(list_name, param_name, param_value)
11
12     [nargout, nargin] = argn();
13
14     if nargin <> 2 & nargin <> 3 then
15         error(sprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"), "add_param", 2, 3));
16     end
17
18     if typeof(list_name) == "plist" then
19         if ~is_param(list_name, param_name) then
20             setfield(1, [getfield(1, list_name) param_name], list_name);
21             if nargout == 2 then
22                 err = %F;
23             end
24             if nargin == 3 then
25                 list_name(param_name) = param_value;
26             end
27         else
28             error(sprintf(gettext("%s: Wrong value for input argument #%d: key ""%s"" already defined.\n"), "add_param", 2, param_name));
29         end
30     else
31         if nargout == 2 then
32             err = %T;
33         end
34         error(sprintf(gettext("%s: Wrong type for input argument #%d: %s expected.\n"), "add_param", 1, "plist"));
35     end
36     plist = list_name;
37
38 endfunction