Merge remote-tracking branch 'origin/master' into windows
[scilab.git] / scilab / modules / core / sci_gateway / cpp / sci_getmodules.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2006 - INRIA - Antoine ELIAS
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15 /*--------------------------------------------------------------------------*/
16
17 #include <list>
18
19 #include "core_gw.hxx"
20 #include "configvariable.hxx"
21 #include "string.hxx"
22 #include "function.hxx"
23
24 types::Function::ReturnValue sci_getmodules(types::typed_list &in, int _iRetCount, types::typed_list &out)
25 {
26     if (in.size() != 0 || _iRetCount > 1)
27     {
28         return types::Function::Error;
29     }
30
31
32     std::list<std::string> sModuleList = ConfigVariable::getModuleList();
33     types::String *pOut = new types::String(static_cast<int>(sModuleList.size()), 1);
34
35     std::list<std::string>::iterator it = sModuleList.begin();
36     for (int i = 0; it != sModuleList.end() ; it++, i++)
37     {
38         pOut->set(i, it->c_str());
39     }
40
41     out.push_back(pOut);
42     return types::Function::OK;
43 }
44 /*--------------------------------------------------------------------------*/