Update of the copyrights
[scilab.git] / scilab / modules / xml / sci_gateway / cpp / sci_xmlRemove.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2011 - Scilab Enterprises - Calixte DENIZET
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 #include "XMLObject.hxx"
14 #include "XMLRemovable.hxx"
15
16 extern "C"
17 {
18 #include "xml.h"
19 #include "gw_xml.h"
20 #include "stack-c.h"
21 #include "Scierror.h"
22 #include "api_scilab.h"
23 #include "xml_mlist.h"
24 #include "localization.h"
25 }
26
27 using namespace org_modules_xml;
28
29 /*--------------------------------------------------------------------------*/
30 int sci_xmlRemove(char *fname, unsigned long fname_len)
31 {
32     XMLRemovable *rem;
33     SciErr err;
34     int id;
35     int *addr = 0;
36
37     CheckLhs(1, 1);
38     CheckRhs(1, 1);
39
40     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
41     if (err.iErr)
42     {
43         printError(&err, 0);
44         Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
45         return 0;
46     }
47
48     if (!isXMLElem(addr, pvApiCtx) && !isXMLList(addr, pvApiCtx) && !isXMLSet(addr, pvApiCtx))
49     {
50         Scierror(999, gettext("%s: Wrong type for input argument #%d: A XMLElem or a XMLList or a XMLSet expected.\n"), fname, 1);
51         return 0;
52     }
53
54     id = getXMLObjectId(addr, pvApiCtx);
55     rem = dynamic_cast < XMLRemovable * >(XMLObject::getFromId < XMLObject > (id));
56     if (!rem)
57     {
58         Scierror(999, gettext("%s: XML object does not exist.\n"), fname);
59         return 0;
60     }
61
62     rem->remove();
63
64     LhsVar(1) = 0;
65     PutLhsVar();
66
67     return 0;
68 }
69
70 /*--------------------------------------------------------------------------*/