summaryrefslogtreecommitdiff
path: root/modules/parameters/macros/remove_param.sci
blob: 541ebe6e219be846bad5651eeac53abcb927cb8f (plain)
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
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) DIGITEO 2008-2010 - Yann COLLETTE
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution.  The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt

function [plist,err] = remove_param(list_name,param_name)
    [nargout,nargin] = argn();
    plist = [];
    if typeof(list_name)=="plist" then
        if is_param(list_name,param_name) then
            Index = grep(getfield(1,list_name),param_name);
            Aux = getfield(1,list_name);
            if Index==1 then
                Aux = Aux(:,2:$);
            elseif Index==size(getfield(1,list_name),2) then
                Aux = Aux(:,1:$-1);
            else
                Aux = Aux(:,[1:Index-1 Index+1:size(Aux,2)]);
            end
            new_list = mlist(Aux);
            New_Index = 2;
            for i=2:size(getfield(1,list_name),2)
                if i==Index then continue; end
                new_list(Aux(New_Index)) = getfield(i,list_name);
                New_Index = New_Index + 1;
            end
        else
            plist = list_name;
        end
        plist = new_list;
        if nargout==2 then err = %F; end
    else
        if nargout==2 then
            err = %T;
        else
            error(sprintf(gettext("%s: Wrong type for input argument #%d: %s expected.\n"), "remove_param", 1, "plist"));
        end
    end
endfunction