1 /*--------------------------------------------------------------------------*/
3 * ( http://www.scilab.org/ ) - This file is part of Scilab
4 * Copyright (C) DIGITEO - 2009 - Allan CORNET
6 * This file must be used under the terms of the CeCILL.
7 * This source file is licensed as described in the file COPYING, which
8 * you should have received as part of this distribution. The terms
9 * are also available at
10 * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
13 /*--------------------------------------------------------------------------*/
14 #include "DiaryList.hxx"
15 #include "getFullFilename.hxx"
16 /*--------------------------------------------------------------------------*/
17 DiaryList::DiaryList()
20 /*--------------------------------------------------------------------------*/
21 DiaryList::~DiaryList()
25 /*--------------------------------------------------------------------------*/
26 int DiaryList::openDiary(std::wstring _wfilename)
28 return openDiary(_wfilename,0);
30 /*--------------------------------------------------------------------------*/
31 int DiaryList::openDiary(std::wstring _wfilename,int _mode)
34 Diary newDiary(_wfilename, _mode,findFreeID());
35 if (newDiary.getID() != -1)
37 LSTDIARY.push_back(newDiary);
38 ID = newDiary.getID();
42 /*--------------------------------------------------------------------------*/
43 bool DiaryList::closeDiary(int ID_diary)
45 std::list<Diary>::iterator iter = LSTDIARY.begin();
46 while(iter != LSTDIARY.end())
48 if(iter->getID() == ID_diary)
50 LSTDIARY.erase(iter++);
60 /*--------------------------------------------------------------------------*/
61 void DiaryList::closeAllDiaries(void)
65 /*--------------------------------------------------------------------------*/
66 int * DiaryList::getIDs(int *sizeID)
71 LSTDIARY.sort(compareDiary);
73 *sizeID = (int)LSTDIARY.size();
77 std::list<Diary>::iterator iter;
79 IDs = new int[*sizeID];
80 for( iter = LSTDIARY.begin(); iter != LSTDIARY.end(); iter++)
82 IDs[i++] = iter->getID();
87 /*--------------------------------------------------------------------------*/
88 std::wstring DiaryList::getFilename(int ID_diary)
90 std::wstring wFilename(L"");
91 std::list<Diary>::iterator i;
92 for( i = LSTDIARY.begin(); i != LSTDIARY.end(); i++)
94 if ( i->getID() == ID_diary ) wFilename = i->getFilename();
98 /*--------------------------------------------------------------------------*/
99 std::wstring * DiaryList::getFilenames(int *sizeFilenames)
101 std::wstring *wFilenames = NULL;
104 LSTDIARY.sort(compareDiary);
106 *sizeFilenames = (int)LSTDIARY.size();
107 if (*sizeFilenames > 0)
110 std::list<Diary>::iterator iter;
111 wFilenames = new std::wstring[*sizeFilenames];
113 for( iter = LSTDIARY.begin(); iter != LSTDIARY.end(); iter++)
115 wFilenames[i++] = iter->getFilename();
120 /*--------------------------------------------------------------------------*/
121 void DiaryList::write(std::wstring _wstr, bool bInput)
123 std::list<Diary>::iterator i;
124 for( i = LSTDIARY.begin(); i != LSTDIARY.end(); i++)
126 i->write(_wstr, bInput);
129 /*--------------------------------------------------------------------------*/
130 void DiaryList::writeln(std::wstring _wstr, bool bInput)
132 std::list<Diary>::iterator i;
133 for( i = LSTDIARY.begin(); i != LSTDIARY.end(); i++)
135 i->writeln(_wstr, bInput);
138 /*--------------------------------------------------------------------------*/
139 bool DiaryList::exists(int ID_diary)
141 std::list<Diary>::iterator i;
142 for( i = LSTDIARY.begin(); i != LSTDIARY.end(); i++)
144 if ( i->getID() == ID_diary ) return true;
148 /*--------------------------------------------------------------------------*/
149 bool DiaryList::exists(std::wstring _wfilename)
151 std::list<Diary>::iterator i;
152 for( i = LSTDIARY.begin(); i != LSTDIARY.end(); i++)
154 if ( i->getFilename().compare(getFullFilename(_wfilename)) == 0 ) return true;
158 /*--------------------------------------------------------------------------*/
159 int DiaryList::findFreeID(void)
162 std::list<Diary>::iterator i;
164 LSTDIARY.sort(compareDiary);
166 for( i = LSTDIARY.begin(); i != LSTDIARY.end(); i++)
168 if ( freeID >= i->getID() )
175 /*--------------------------------------------------------------------------*/
176 void DiaryList::setSuspendWrite(bool bWith)
178 std::list<Diary>::iterator iter;
180 for( iter = LSTDIARY.begin(); iter != LSTDIARY.end(); iter++)
182 iter->setSuspendWrite(bWith);
185 /*--------------------------------------------------------------------------*/
186 bool *DiaryList::getSuspendWrite(int *sizeboolArray)
188 bool *bSuspend = NULL;
191 LSTDIARY.sort(compareDiary);
193 *sizeboolArray = (int)LSTDIARY.size();
194 if (*sizeboolArray > 0)
197 bSuspend = new bool[*sizeboolArray];
198 std::list<Diary>::iterator iter;
199 for( iter = LSTDIARY.begin(); iter != LSTDIARY.end(); iter++)
201 bSuspend[i++] = iter->getSuspendWrite();
206 /*--------------------------------------------------------------------------*/
207 void DiaryList::setSuspendWrite(int ID_diary, bool bWith)
209 std::list<Diary>::iterator iter;
211 for( iter = LSTDIARY.begin(); iter != LSTDIARY.end(); iter++)
213 if (iter->getID() == ID_diary)
215 iter->setSuspendWrite(bWith);
219 /*--------------------------------------------------------------------------*/
220 bool DiaryList::getSuspendWrite(int ID_diary)
222 std::list<Diary>::iterator iter;
224 for( iter = LSTDIARY.begin(); iter != LSTDIARY.end(); iter++)
226 if (iter->getID() == ID_diary)
228 return iter->getSuspendWrite();
233 /*--------------------------------------------------------------------------*/
234 int DiaryList::getID(std::wstring _wfilename)
236 std::list<Diary>::iterator i;
237 for( i = LSTDIARY.begin(); i != LSTDIARY.end(); i++)
239 if ( i->getFilename().compare(getFullFilename(_wfilename)) == 0 ) return i->getID();
243 /*--------------------------------------------------------------------------*/
244 void DiaryList::setFilterMode(int ID_diary, diary_filter mode)
246 std::list<Diary>::iterator iter;
248 for( iter = LSTDIARY.begin(); iter != LSTDIARY.end(); iter++)
250 if (iter->getID() == ID_diary)
252 return iter->setIOMode(mode);
256 /*--------------------------------------------------------------------------*/
257 void DiaryList::setPrefixMode(int ID_diary,diary_prefix_time_format iPrefixMode)
259 std::list<Diary>::iterator iter;
261 for( iter = LSTDIARY.begin(); iter != LSTDIARY.end(); iter++)
263 if (iter->getID() == ID_diary)
265 iter->setPrefixMode(iPrefixMode);
270 /*--------------------------------------------------------------------------*/
271 diary_prefix_time_format DiaryList::getPrefixMode(int ID_diary)
273 std::list<Diary>::iterator iter;
275 for( iter = LSTDIARY.begin(); iter != LSTDIARY.end(); iter++)
277 if (iter->getID() == ID_diary)
279 return iter->getPrefixMode();
282 return PREFIX_TIME_FORMAT_ERROR;
284 /*--------------------------------------------------------------------------*/
285 void DiaryList::setPrefixIoModeFilter(int ID_diary,diary_prefix_time_filter mode)
287 std::list<Diary>::iterator iter;
289 for( iter = LSTDIARY.begin(); iter != LSTDIARY.end(); iter++)
291 if (iter->getID() == ID_diary)
293 iter->setPrefixIoModeFilter(mode);
298 /*--------------------------------------------------------------------------*/
299 diary_prefix_time_filter DiaryList::getPrefixIoModeFilter(int ID_diary)
301 std::list<Diary>::iterator iter;
303 for( iter = LSTDIARY.begin(); iter != LSTDIARY.end(); iter++)
305 if (iter->getID() == ID_diary)
307 return iter->getPrefixIoModeFilter();
310 return PREFIX_FILTER_ERROR;
312 /*--------------------------------------------------------------------------*/