2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2009 - DIGITEO - Allan CORNET
5 * Copyright (C) 2012 - 2016 - Scilab Enterprises
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.
16 /*--------------------------------------------------------------------------*/
17 #include "diary_manager.hxx"
18 #include "DiaryList.hxx"
20 #include "sci_malloc.h"
21 /*--------------------------------------------------------------------------*/
22 static DiaryList *SCIDIARY = NULL;
23 /*--------------------------------------------------------------------------*/
24 static int createDiaryManager(void)
28 SCIDIARY = new DiaryList();
33 /*--------------------------------------------------------------------------*/
34 static int destroyDiaryManager(void)
44 /*--------------------------------------------------------------------------*/
45 wchar_t *getDiaryFilename(int _Id)
47 wchar_t *wcFilename = NULL;
50 if (SCIDIARY->getFilename(_Id).compare(L""))
52 wcFilename = (wchar_t*) MALLOC(sizeof(wchar_t) * (SCIDIARY->getFilename(_Id).length() + 1));
55 wcscpy(wcFilename, SCIDIARY->getFilename(_Id).c_str());
61 /*--------------------------------------------------------------------------*/
62 wchar_t **getDiaryFilenames(int *array_size)
67 std::list<std::wstring> wstringFilenames = SCIDIARY->getFilenames();
68 *array_size = (int)wstringFilenames.size();
71 wchar_t **wcFilenames = (wchar_t **) MALLOC (sizeof(wchar_t*) * (*array_size));
73 for (const auto& filename : wstringFilenames)
75 wcFilenames[i] = (wchar_t*)MALLOC(sizeof(wchar_t) * (filename.length() + 1));
76 wcscpy(wcFilenames[i], filename.data());
84 /*--------------------------------------------------------------------------*/
85 int *getDiaryIDs(int *array_size)
90 int *iIDs = SCIDIARY->getIDs(array_size);
95 /*--------------------------------------------------------------------------*/
96 double *getDiaryIDsAsDouble(int *array_size)
98 int *iIDs = getDiaryIDs(array_size);
103 double *dIDs = new double[*array_size];
104 for (int i = 0; i < *array_size; i++)
106 dIDs[i] = (double)iIDs[i];
118 /*--------------------------------------------------------------------------*/
119 int diaryCloseAll(void)
121 destroyDiaryManager();
124 /*--------------------------------------------------------------------------*/
125 int diaryClose(int _iId)
131 if (SCIDIARY->closeDiary(_iId))
139 /*--------------------------------------------------------------------------*/
140 int diaryClose(wchar_t *filename)
144 int iID = SCIDIARY->getID(filename);
147 if (SCIDIARY->closeDiary(iID))
155 /*--------------------------------------------------------------------------*/
156 int diaryPauseAll(void)
160 SCIDIARY->setSuspendWrite(true);
165 /*--------------------------------------------------------------------------*/
166 int diaryPause(int _iId)
170 SCIDIARY->setSuspendWrite(_iId, true);
175 /*--------------------------------------------------------------------------*/
176 int diaryPause(wchar_t *filename)
180 int iID = SCIDIARY->getID(std::wstring(filename));
183 SCIDIARY->setSuspendWrite(iID, true);
189 /*--------------------------------------------------------------------------*/
190 int diaryResumeAll(void)
194 SCIDIARY->setSuspendWrite(false);
199 /*--------------------------------------------------------------------------*/
200 int diaryResume(int _iId)
204 SCIDIARY->setSuspendWrite(_iId, false);
209 /*--------------------------------------------------------------------------*/
210 int diaryResume(wchar_t *filename)
214 int iID = SCIDIARY->getID(std::wstring(filename));
217 SCIDIARY->setSuspendWrite(iID, false);
223 /*--------------------------------------------------------------------------*/
224 int diaryExists(int _iId)
228 if (SCIDIARY->exists(_iId))
235 /*--------------------------------------------------------------------------*/
236 int diaryExists(wchar_t *filename)
240 if (SCIDIARY->exists(std::wstring(filename)))
247 /*--------------------------------------------------------------------------*/
248 int diaryNew(wchar_t *filename, bool autorename)
250 createDiaryManager();
254 return SCIDIARY->openDiary(std::wstring(filename), autorename);
259 /*--------------------------------------------------------------------------*/
260 int diaryAppend(wchar_t *filename)
262 createDiaryManager();
265 return SCIDIARY->openDiary(std::wstring(filename), 1, false);
269 /*--------------------------------------------------------------------------*/
270 int diaryWrite(const wchar_t *wstr, BOOL bInput)
276 SCIDIARY->write(std::wstring(wstr), true);
280 SCIDIARY->write(std::wstring(wstr), false);
286 /*--------------------------------------------------------------------------*/
287 int diaryWriteln(const wchar_t *wstr, BOOL bInput)
293 SCIDIARY->writeln(std::wstring(wstr), true);
297 SCIDIARY->writeln(std::wstring(wstr), false);
303 /*--------------------------------------------------------------------------*/
304 int diarySetFilterMode(int _iId, diary_filter mode)
308 SCIDIARY->setFilterMode(_iId, mode);
313 /*--------------------------------------------------------------------------*/
314 int diarySetPrefixMode(int ID_diary, diary_prefix_time_format iPrefixMode)
318 SCIDIARY->setPrefixMode(ID_diary, iPrefixMode);
323 /*--------------------------------------------------------------------------*/
324 int diaryGetPrefixMode(int ID_diary)
328 return SCIDIARY->getPrefixMode(ID_diary);
332 /*--------------------------------------------------------------------------*/
333 int diarySetPrefixIoModeFilter(int ID_diary, diary_prefix_time_filter mode)
337 SCIDIARY->setPrefixIoModeFilter(ID_diary, mode);
342 /*--------------------------------------------------------------------------*/
343 diary_prefix_time_filter diaryGetPrefixIoModeFilter(int ID_diary)
347 return SCIDIARY->getPrefixIoModeFilter(ID_diary);
349 return PREFIX_FILTER_ERROR;
351 /*--------------------------------------------------------------------------*/