update mode management
[scilab.git] / scilab / modules / output_stream / src / cpp / scilabWrite.cpp
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
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 "scilabWrite.hxx"
15
16 extern "C"
17 {
18 #include <stdio.h>
19 #include "charEncoding.h"
20 #include "sci_malloc.h"
21 #include "diary.h"
22 #include "configvariable_interface.h"
23 }
24
25 static SCILAB_OUTPUT_METHOD _writer;
26
27 void setScilabOutputMethod(SCILAB_OUTPUT_METHOD writer)
28 {
29     _writer = writer;
30 }
31
32 static void scilabPrint(const char* _pstText)
33 {
34     wchar_t* pwstTemp = to_wide_string(_pstText);
35     diaryWrite(pwstTemp, FALSE);
36     FREE(pwstTemp);
37     (*_writer)(const_cast<char*>(_pstText));
38 }
39
40 void scilabWrite(const char* _pstText)
41 {
42     if (isPrintOutput())
43     {
44         scilabPrint(const_cast<char*>(_pstText));
45     }
46 }
47
48 void scilabForcedWrite(const char* _pstText)
49 {
50     scilabPrint(const_cast<char*>(_pstText));
51 }
52
53 void scilabWriteW(const wchar_t* _pwsText)
54 {
55     if (isPrintOutput())
56     {
57         char* pstTemp = wide_string_to_UTF8(_pwsText);
58         scilabWrite(pstTemp);
59         FREE(pstTemp);
60     }
61 }
62
63 void scilabForcedWriteW(const wchar_t* _pwsText)
64 {
65     char* pstTemp = wide_string_to_UTF8(_pwsText);
66     scilabForcedWrite(pstTemp);
67     FREE(pstTemp);
68 }
69
70 void scilabError(const char* _pstText)
71 {
72     if (isSilentError() == 0)
73     {
74         scilabPrint(const_cast<char*>(_pstText));
75     }
76 }
77
78 void scilabErrorW(const wchar_t* _pwsText)
79 {
80     if (isSilentError() == 0)
81     {
82         char* pstTemp = wide_string_to_UTF8(_pwsText);
83         scilabPrint(pstTemp);
84         FREE(pstTemp);
85     }
86 }