Use hxx extensions instead of hpp
[scilab.git] / scilab / modules / xml / sci_gateway / cpp / sci_xmlAddNs.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 "XMLElement.hxx"
15 #include "XMLNs.hxx"
16
17 extern "C"
18 {
19 #include "gw_xml.h"
20 #include "Scierror.h"
21 #include "api_scilab.h"
22 #include "xml_mlist.h"
23 #include "localization.h"
24 }
25
26 using namespace org_modules_xml;
27
28 /*--------------------------------------------------------------------------*/
29 int sci_xmlAddNs(char *fname, unsigned long fname_len)
30 {
31     XMLElement *elem = 0;
32     XMLNs *ns = 0;
33     SciErr err;
34     int *addr = 0;
35     int i = 2;
36
37     CheckLhs(1, 1);
38     if (Rhs < 2)
39     {
40         Scierror(999, gettext("%s: Wrong number of input arguments: at least %d expected.\n"), fname, 2);
41         return 0;
42     }
43
44     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
45     if (err.iErr)
46     {
47         printError(&err, 0);
48         Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
49         return 0;
50     }
51
52     if (!isXMLElem(addr, pvApiCtx))
53     {
54         Scierror(999, gettext("%s: Wrong type for input argument #%d: A %s expected.\n"), fname, 1, "XMLElem");
55         return 0;
56     }
57
58     elem = XMLObject::getFromId < XMLElement > (getXMLObjectId(addr, pvApiCtx));
59     if (!elem)
60     {
61         Scierror(999, gettext("%s: XML Element does not exist.\n"), fname);
62         return 0;
63     }
64
65     for (; i <= Rhs; i++)
66     {
67         err = getVarAddressFromPosition(pvApiCtx, i, &addr);
68         if (err.iErr)
69         {
70             printError(&err, 0);
71             Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, i);
72             return 0;
73         }
74
75         if (!isXMLNs(addr, pvApiCtx))
76         {
77             Scierror(999, gettext("%s: Wrong type for input argument #%d: A %s expected.\n"), fname, i, "XMLNs");
78             return 0;
79         }
80
81         ns = XMLObject::getFromId < XMLNs > (getXMLObjectId(addr, pvApiCtx));
82         if (!ns)
83         {
84             Scierror(999, gettext("%s: XML Namespace does not exist.\n"), fname);
85             return 0;
86         }
87
88         elem->addNamespace(*ns);
89     }
90
91     LhsVar(1) = 0;
92     PutLhsVar();
93
94     return 0;
95 }