Update of the copyrights
[scilab.git] / scilab / modules / xml / sci_gateway / cpp / sci_xmlGetOpenDocs.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 #include "XMLValidation.hxx"
16
17 extern "C"
18 {
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_xmlGetOpenDocs(char *fname, unsigned long fname_len)
31 {
32     int j = 1;
33     SciErr err;
34     int *addr = 0;
35
36     CheckLhs(1, 1);
37     CheckRhs(0, 0);
38
39     const std::list < org_modules_xml::XMLDocument * >&openDocs = org_modules_xml::XMLDocument::getOpenDocuments();
40     const std::list < org_modules_xml::XMLValidation * >&openValidationFiles = org_modules_xml::XMLValidation::getOpenValidationFiles();
41
42     err = createList(pvApiCtx, Rhs + 1, (int)openDocs.size() + (int)openValidationFiles.size(), &addr);
43     if (err.iErr)
44     {
45         printError(&err, 0);
46         Scierror(999, _("%s: Memory allocation error.\n"), fname);
47         return 0;
48     }
49
50     for (std::list < org_modules_xml::XMLDocument * >::const_iterator i = openDocs.begin(); i != openDocs.end(); i++, j++)
51     {
52         createXMLObjectAtPosInList(addr, Rhs + 1, XMLDOCUMENT, j, (*i)->getId(), pvApiCtx);
53     }
54
55     for (std::list < org_modules_xml::XMLValidation * >::const_iterator i = openValidationFiles.begin(); i != openValidationFiles.end(); i++, j++)
56     {
57         createXMLObjectAtPosInList(addr, Rhs + 1, XMLVALID, j, (*i)->getId(), pvApiCtx);
58     }
59
60     LhsVar(1) = Rhs + 1;
61     PutLhsVar();
62     return 0;
63 }
64
65 /*--------------------------------------------------------------------------*/