2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2009 - DIGITEO - Allan CORNET
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.1-en.txt
12 /*--------------------------------------------------------------------------*/
13 #include "diary_manager.hxx"
14 #include "DiaryList.hxx"
16 #include "sci_malloc.h"
17 /*--------------------------------------------------------------------------*/
18 static DiaryList *SCIDIARY = NULL;
19 /*--------------------------------------------------------------------------*/
20 static int createDiaryManager(void)
24 SCIDIARY = new DiaryList();
29 /*--------------------------------------------------------------------------*/
30 static int destroyDiaryManager(void)
40 /*--------------------------------------------------------------------------*/
41 wchar_t *getDiaryFilename(int _Id)
43 wchar_t *wcFilename = NULL;
46 if (SCIDIARY->getFilename(_Id).compare(L""))
48 wcFilename = (wchar_t*) MALLOC(sizeof(wchar_t) * (SCIDIARY->getFilename(_Id).length() + 1));
51 wcscpy(wcFilename, SCIDIARY->getFilename(_Id).c_str());
57 /*--------------------------------------------------------------------------*/
58 wchar_t **getDiaryFilenames(int *array_size)
63 std::list<std::wstring> wstringFilenames = SCIDIARY->getFilenames();
64 *array_size = (int)wstringFilenames.size();
67 wchar_t **wcFilenames = (wchar_t **) MALLOC (sizeof(wchar_t*) * (*array_size));
69 for (const auto& filename : wstringFilenames)
71 wcFilenames[i] = (wchar_t*)MALLOC(sizeof(wchar_t) * (filename.length() + 1));
72 wcscpy(wcFilenames[i], filename.data());
80 /*--------------------------------------------------------------------------*/
81 int *getDiaryIDs(int *array_size)
86 int *iIDs = SCIDIARY->getIDs(array_size);
91 /*--------------------------------------------------------------------------*/
92 double *getDiaryIDsAsDouble(int *array_size)
94 int *iIDs = getDiaryIDs(array_size);
99 double *dIDs = new double[*array_size];
100 for (int i = 0; i < *array_size; i++)
102 dIDs[i] = (double)iIDs[i];
114 /*--------------------------------------------------------------------------*/
115 int diaryCloseAll(void)
117 destroyDiaryManager();
120 /*--------------------------------------------------------------------------*/
121 int diaryClose(int _iId)
127 if (SCIDIARY->closeDiary(_iId))
135 /*--------------------------------------------------------------------------*/
136 int diaryClose(wchar_t *filename)
140 int iID = SCIDIARY->getID(filename);
143 if (SCIDIARY->closeDiary(iID))
151 /*--------------------------------------------------------------------------*/
152 int diaryPauseAll(void)
156 SCIDIARY->setSuspendWrite(true);
161 /*--------------------------------------------------------------------------*/
162 int diaryPause(int _iId)
166 SCIDIARY->setSuspendWrite(_iId, true);
171 /*--------------------------------------------------------------------------*/
172 int diaryPause(wchar_t *filename)
176 int iID = SCIDIARY->getID(std::wstring(filename));
179 SCIDIARY->setSuspendWrite(iID, true);
185 /*--------------------------------------------------------------------------*/
186 int diaryResumeAll(void)
190 SCIDIARY->setSuspendWrite(false);
195 /*--------------------------------------------------------------------------*/
196 int diaryResume(int _iId)
200 SCIDIARY->setSuspendWrite(_iId, false);
205 /*--------------------------------------------------------------------------*/
206 int diaryResume(wchar_t *filename)
210 int iID = SCIDIARY->getID(std::wstring(filename));
213 SCIDIARY->setSuspendWrite(iID, false);
219 /*--------------------------------------------------------------------------*/
220 int diaryExists(int _iId)
224 if (SCIDIARY->exists(_iId))
231 /*--------------------------------------------------------------------------*/
232 int diaryExists(wchar_t *filename)
236 if (SCIDIARY->exists(std::wstring(filename)))
243 /*--------------------------------------------------------------------------*/
244 int diaryNew(wchar_t *filename, bool autorename)
246 createDiaryManager();
250 return SCIDIARY->openDiary(std::wstring(filename), autorename);
255 /*--------------------------------------------------------------------------*/
256 int diaryAppend(wchar_t *filename)
258 createDiaryManager();
261 return SCIDIARY->openDiary(std::wstring(filename), 1, false);
265 /*--------------------------------------------------------------------------*/
266 int diaryWrite(const wchar_t *wstr, BOOL bInput)
272 SCIDIARY->write(std::wstring(wstr), true);
276 SCIDIARY->write(std::wstring(wstr), false);
282 /*--------------------------------------------------------------------------*/
283 int diaryWriteln(const wchar_t *wstr, BOOL bInput)
289 SCIDIARY->writeln(std::wstring(wstr), true);
293 SCIDIARY->writeln(std::wstring(wstr), false);
299 /*--------------------------------------------------------------------------*/
300 int diarySetFilterMode(int _iId, diary_filter mode)
304 SCIDIARY->setFilterMode(_iId, mode);
309 /*--------------------------------------------------------------------------*/
310 int diarySetPrefixMode(int ID_diary, diary_prefix_time_format iPrefixMode)
314 SCIDIARY->setPrefixMode(ID_diary, iPrefixMode);
319 /*--------------------------------------------------------------------------*/
320 int diaryGetPrefixMode(int ID_diary)
324 return SCIDIARY->getPrefixMode(ID_diary);
328 /*--------------------------------------------------------------------------*/
329 int diarySetPrefixIoModeFilter(int ID_diary, diary_prefix_time_filter mode)
333 SCIDIARY->setPrefixIoModeFilter(ID_diary, mode);
338 /*--------------------------------------------------------------------------*/
339 diary_prefix_time_filter diaryGetPrefixIoModeFilter(int ID_diary)
343 return SCIDIARY->getPrefixIoModeFilter(ID_diary);
345 return PREFIX_FILTER_ERROR;
347 /*--------------------------------------------------------------------------*/