rollback %ls to %s, it was better before
[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 * 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
14 #include "console_gw.hxx"
15 #include "function.hxx"
16 #include "double.hxx"
17 #include "string.hxx"
18 #include "configvariable.hxx"
19
20 extern "C"
21 {
22 #include "localization.h"
23 #include "Scierror.h"
24 #include "prompt.h"
25 }
26 /*--------------------------------------------------------------------------*/
27
28 types::Function::ReturnValue sci_prompt(types::typed_list &in, int _iRetCount, types::typed_list &out)
29 {
30     char currentPrompt[PROMPT_SIZE_MAX];
31
32     if (in.size() > 1)
33     {
34         Scierror(77, _("%s: Wrong number of input argument(s): %d to %d expected.\n"), "prompt", 0, 1);
35         return types::Function::Error;
36     }
37
38     if (in.size() == 0) /* Get current Scilab prompt */
39     {
40         if (_iRetCount > 2)
41         {
42             Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "prompt", 1, 2);
43             return types::Function::Error;
44         }
45
46         GetCurrentPrompt(currentPrompt);
47         out.push_back(new types::String(currentPrompt));
48         if (_iRetCount == 2)
49         {
50             types::Double* pDbl = new types::Double(1, 1);
51             pDbl->set(0, ConfigVariable::getPauseLevel());
52             out.push_back(pDbl);
53         }
54     }
55     else //if(in.size() == 1)
56     {
57         if (_iRetCount > 1)
58         {
59             Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "prompt", 1);
60             return types::Function::Error;
61         }
62
63         if ((in[0]->isString() == false) || !in[0]->getAs<types::String>()->isScalar())
64         {
65             Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), "prompt", 1);
66             return types::Function::Error;
67         }
68         SetTemporaryPrompt(wide_string_to_UTF8(in[0]->getAs<types::String>()->get(0)));
69     }
70
71     return types::Function::OK;
72 }
73 /*--------------------------------------------------------------------------*/