Use hxx extensions instead of hpp
[scilab.git] / scilab / modules / xml / sci_gateway / cpp / sci_xmlDocument.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 "XMLDocument.hxx"
15
16 extern "C"
17 {
18 #include "gw_xml.h"
19 #include "Scierror.h"
20 #include "api_scilab.h"
21 #include "xml_mlist.h"
22 #include "localization.h"
23 }
24
25 using namespace org_modules_xml;
26
27 /*--------------------------------------------------------------------------*/
28 int sci_xmlDocument(char *fname, unsigned long fname_len)
29 {
30     int *addr = 0;
31     SciErr err;
32
33     org_modules_xml::XMLDocument * doc = 0;
34     char *uri = 0;
35     char *version = 0;
36     int i = 0;
37     char **vars[] = { &uri, &version };
38
39     CheckLhs(1, 1);
40     CheckRhs(0, 2);
41
42     for (; i < Rhs; i++)
43     {
44         err = getVarAddressFromPosition(pvApiCtx, i + 1, &addr);
45         if (err.iErr)
46         {
47             printError(&err, 0);
48             Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, i + 1);
49             return 0;
50         }
51
52         if (!isStringType(pvApiCtx, addr) || !checkVarDimension(pvApiCtx, addr, 1, 1))
53         {
54             Scierror(999, gettext("%s: Wrong type for input argument #%d: A string expected.\n"), fname, i + 1);
55             return 0;
56         }
57
58         if (getAllocatedSingleString(pvApiCtx, addr, vars[i]) != 0)
59         {
60             Scierror(999, _("%s: No more memory.\n"), fname);
61             return 0;
62         }
63     }
64
65     doc = new org_modules_xml::XMLDocument(uri, version);
66
67     for (i = 0; i < Rhs; i++)
68     {
69         freeAllocatedSingleString(*(vars[i]));
70     }
71
72     if (!doc->createOnStack(Rhs + 1, pvApiCtx))
73     {
74         return 0;
75     }
76
77     LhsVar(1) = Rhs + 1;
78     PutLhsVar();
79
80     return 0;
81 }
82
83 /*--------------------------------------------------------------------------*/