Bump version numbers to 6.2.0
[scilab.git] / scilab / modules / console / sci_gateway / cpp / sci_prompt.cpp
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2011 - DIGITEO - Cedric DELAMARRE
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 "console_gw.hxx"
18 #include "function.hxx"
19 #include "double.hxx"
20 #include "string.hxx"
21 #include "configvariable.hxx"
22
23 extern "C"
24 {
25 #include "localization.h"
26 #include "Scierror.h"
27 #include "prompt.h"
28 }
29 /*--------------------------------------------------------------------------*/
30
31 types::Function::ReturnValue sci_prompt(types::typed_list &in, int _iRetCount, types::typed_list &out)
32 {
33     const char* currentPrompt;
34
35     if (in.size() > 1)
36     {
37         Scierror(999, _("%s: Wrong number of input argument(s): %d to %d expected.\n"), "prompt", 0, 1);
38         return types::Function::Error;
39     }
40
41     if (in.size() == 0) /* Get current Scilab prompt */
42     {
43         if (_iRetCount > 2)
44         {
45             Scierror(999, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "prompt", 1, 2);
46             return types::Function::Error;
47         }
48
49         currentPrompt = GetCurrentPrompt();
50         out.push_back(new types::String(currentPrompt));
51         if (_iRetCount == 2)
52         {
53             types::Double* pDbl = new types::Double(1, 1);
54             pDbl->set(0, ConfigVariable::getPauseLevel());
55             out.push_back(pDbl);
56         }
57     }
58     else //if(in.size() == 1)
59     {
60         if (_iRetCount > 1)
61         {
62             Scierror(999, _("%s: Wrong number of output argument(s): %d expected.\n"), "prompt", 1);
63             return types::Function::Error;
64         }
65
66         if ((in[0]->isString() == false) || !in[0]->getAs<types::String>()->isScalar())
67         {
68             Scierror(999, _("%s: Wrong type for input argument #%d: string expected.\n"), "prompt", 1);
69             return types::Function::Error;
70         }
71
72         char* pstrPrompt = wide_string_to_UTF8(in[0]->getAs<types::String>()->get(0));
73         SetTemporaryPrompt(pstrPrompt);
74         FREE(pstrPrompt);
75     }
76
77     return types::Function::OK;
78 }
79 /*--------------------------------------------------------------------------*/