15 using namespace shogun;
20 init(NULL, 0,
"(file)");
26 init(fstream, rw,
"(file)");
32 char mode[3] = {rw,
'b',
'\0'};
34 init(NULL, rw, fname);
37 SG_WARNING(
"Filename not given for opening file!\n")
41 if (rw !=
'r' && rw !=
'w') {
62 CSerializableFile::init(FILE* fstream,
char task,
const char* filename)
67 m_filename = SG_MALLOC(
char, strlen(filename)+1);
85 CSerializableFile::is_task_warn(
char rw,
const char* name,
88 if (
m_task ==
'r' && m_reader == NULL) {
91 m_reader = new_reader(dest_version,
STRING_LEN);
92 if (m_reader == NULL) {
93 SG_WARNING(
"`%s' has file-version `%s', which is not "
95 close();
return false;
100 SG_WARNING(
"`%s' not opened (for writing) during writing "
105 SG_WARNING(
"`%s' not opened (for reading) during reading "
114 CSerializableFile::false_warn(
const char* prefix,
const char* name)
117 SG_WARNING(
"Could not write `%s%s' to `%s'!\n", prefix,
120 SG_WARNING(
"Could not read `%s%s' from `%s'!\n", prefix,
123 SG_WARNING(
"Could not read/write `%s%s' from `%s'!\n",
130 CSerializableFile::write_scalar(
131 const TSGDataType* type,
const char* name,
const char* prefix,
134 if (!is_task_warn(
'w', name, prefix))
return false;
136 if (!write_scalar_wrapped(type, param))
137 return false_warn(prefix, name);
143 CSerializableFile::read_scalar(
144 const TSGDataType* type,
const char* name,
const char* prefix,
147 if (!is_task_warn(
'r', name, prefix))
return false;
149 if (!m_reader->read_scalar_wrapped(type, param))
150 return false_warn(prefix, name);
156 CSerializableFile::write_cont_begin(
157 const TSGDataType* type,
const char* name,
const char* prefix,
160 if (!is_task_warn(
'w', name, prefix))
return false;
162 if (!write_cont_begin_wrapped(type, len_real_y, len_real_x))
163 return false_warn(prefix, name);
169 CSerializableFile::read_cont_begin(
170 const TSGDataType* type,
const char* name,
const char* prefix,
173 if (!is_task_warn(
'r', name, prefix))
return false;
175 if (!m_reader->read_cont_begin_wrapped(type, len_read_y,
177 return false_warn(prefix, name);
183 CSerializableFile::write_cont_end(
184 const TSGDataType* type,
const char* name,
const char* prefix,
187 if (!is_task_warn(
'w', name, prefix))
return false;
189 if (!write_cont_end_wrapped(type, len_real_y, len_real_x))
190 return false_warn(prefix, name);
196 CSerializableFile::read_cont_end(
197 const TSGDataType* type,
const char* name,
const char* prefix,
200 if (!is_task_warn(
'r', name, prefix))
return false;
202 if (!m_reader->read_cont_end_wrapped(type, len_read_y, len_read_x))
203 return false_warn(prefix, name);
209 CSerializableFile::write_string_begin(
210 const TSGDataType* type,
const char* name,
const char* prefix,
213 if (!is_task_warn(
'w', name, prefix))
return false;
215 if (!write_string_begin_wrapped(type, length))
216 return false_warn(prefix, name);
222 CSerializableFile::read_string_begin(
223 const TSGDataType* type,
const char* name,
const char* prefix,
226 if (!is_task_warn(
'r', name, prefix))
return false;
228 if (!m_reader->read_string_begin_wrapped(type, length))
229 return false_warn(prefix, name);
235 CSerializableFile::write_string_end(
236 const TSGDataType* type,
const char* name,
const char* prefix,
239 if (!is_task_warn(
'w', name, prefix))
return false;
241 if (!write_string_end_wrapped(type, length))
242 return false_warn(prefix, name);
248 CSerializableFile::read_string_end(
249 const TSGDataType* type,
const char* name,
const char* prefix,
252 if (!is_task_warn(
'r', name, prefix))
return false;
254 if (!m_reader->read_string_end_wrapped(type, length))
255 return false_warn(prefix, name);
261 CSerializableFile::write_stringentry_begin(
262 const TSGDataType* type,
const char* name,
const char* prefix,
265 if (!is_task_warn(
'w', name, prefix))
return false;
267 if (!write_stringentry_begin_wrapped(type, y))
268 return false_warn(prefix, name);
274 CSerializableFile::read_stringentry_begin(
275 const TSGDataType* type,
const char* name,
const char* prefix,
278 if (!is_task_warn(
'r', name, prefix))
return false;
280 if (!m_reader->read_stringentry_begin_wrapped(type, y))
281 return false_warn(prefix, name);
287 CSerializableFile::write_stringentry_end(
288 const TSGDataType* type,
const char* name,
const char* prefix,
291 if (!is_task_warn(
'w', name, prefix))
return false;
293 if (!write_stringentry_end_wrapped(type, y))
294 return false_warn(prefix, name);
300 CSerializableFile::read_stringentry_end(
301 const TSGDataType* type,
const char* name,
const char* prefix,
304 if (!is_task_warn(
'r', name, prefix))
return false;
306 if (!m_reader->read_stringentry_end_wrapped(type, y))
307 return false_warn(prefix, name);
313 CSerializableFile::write_sparse_begin(
314 const TSGDataType* type,
const char* name,
const char* prefix,
317 if (!is_task_warn(
'w', name, prefix))
return false;
319 if (!write_sparse_begin_wrapped(type, length))
320 return false_warn(prefix, name);
326 CSerializableFile::read_sparse_begin(
327 const TSGDataType* type,
const char* name,
const char* prefix,
330 if (!is_task_warn(
'r', name, prefix))
return false;
332 if (!m_reader->read_sparse_begin_wrapped(type, length))
333 return false_warn(prefix, name);
339 CSerializableFile::write_sparse_end(
340 const TSGDataType* type,
const char* name,
const char* prefix,
343 if (!is_task_warn(
'w', name, prefix))
return false;
345 if (!write_sparse_end_wrapped(type, length))
346 return false_warn(prefix, name);
352 CSerializableFile::read_sparse_end(
353 const TSGDataType* type,
const char* name,
const char* prefix,
356 if (!is_task_warn(
'r', name, prefix))
return false;
358 if (!m_reader->read_sparse_end_wrapped(type, length))
359 return false_warn(prefix, name);
365 CSerializableFile::write_sparseentry_begin(
366 const TSGDataType* type,
const char* name,
const char* prefix,
370 if (!is_task_warn(
'w', name, prefix))
return false;
372 if (!write_sparseentry_begin_wrapped(type, first_entry,
374 return false_warn(prefix, name);
380 CSerializableFile::read_sparseentry_begin(
381 const TSGDataType* type,
const char* name,
const char* prefix,
384 if (!is_task_warn(
'r', name, prefix))
return false;
386 if (!m_reader->read_sparseentry_begin_wrapped(type, first_entry,
388 return false_warn(prefix, name);
394 CSerializableFile::write_sparseentry_end(
395 const TSGDataType* type,
const char* name,
const char* prefix,
399 if (!is_task_warn(
'w', name, prefix))
return false;
401 if (!write_sparseentry_end_wrapped(type, first_entry, feat_index,
403 return false_warn(prefix, name);
409 CSerializableFile::read_sparseentry_end(
410 const TSGDataType* type,
const char* name,
const char* prefix,
414 if (!is_task_warn(
'r', name, prefix))
return false;
416 if (!m_reader->read_sparseentry_end_wrapped(type, first_entry,
418 return false_warn(prefix, name);
424 CSerializableFile::write_item_begin(
425 const TSGDataType* type,
const char* name,
const char* prefix,
428 if (!is_task_warn(
'w', name, prefix))
return false;
430 if (!write_item_begin_wrapped(type, y, x))
431 return false_warn(prefix, name);
437 CSerializableFile::read_item_begin(
438 const TSGDataType* type,
const char* name,
const char* prefix,
441 if (!is_task_warn(
'r', name, prefix))
return false;
443 if (!m_reader->read_item_begin_wrapped(type, y, x))
444 return false_warn(prefix, name);
450 CSerializableFile::write_item_end(
451 const TSGDataType* type,
const char* name,
const char* prefix,
454 if (!is_task_warn(
'w', name, prefix))
return false;
456 if (!write_item_end_wrapped(type, y, x))
457 return false_warn(prefix, name);
463 CSerializableFile::read_item_end(
464 const TSGDataType* type,
const char* name,
const char* prefix,
467 if (!is_task_warn(
'r', name, prefix))
return false;
469 if (!m_reader->read_item_end_wrapped(type, y, x))
470 return false_warn(prefix, name);
476 CSerializableFile::write_sgserializable_begin(
477 const TSGDataType* type,
const char* name,
const char* prefix,
478 const char* sgserializable_name, EPrimitiveType
generic)
480 if (!is_task_warn(
'w', name, prefix))
return false;
482 if (!write_sgserializable_begin_wrapped(type, sgserializable_name,
484 return false_warn(prefix, name);
490 CSerializableFile::read_sgserializable_begin(
491 const TSGDataType* type,
const char* name,
const char* prefix,
492 char* sgserializable_name, EPrimitiveType*
generic)
494 if (!is_task_warn(
'r', name, prefix))
return false;
496 if (!m_reader->read_sgserializable_begin_wrapped(
497 type, sgserializable_name,
generic))
498 return false_warn(prefix, name);
504 CSerializableFile::write_sgserializable_end(
505 const TSGDataType* type,
const char* name,
const char* prefix,
506 const char* sgserializable_name, EPrimitiveType
generic)
508 if (!is_task_warn(
'w', name, prefix))
return false;
510 if (!write_sgserializable_end_wrapped(type, sgserializable_name,
512 return false_warn(prefix, name);
518 CSerializableFile::read_sgserializable_end(
519 const TSGDataType* type,
const char* name,
const char* prefix,
520 const char* sgserializable_name, EPrimitiveType
generic)
522 if (!is_task_warn(
'r', name, prefix))
return false;
524 if (!m_reader->read_sgserializable_end_wrapped(
525 type, sgserializable_name,
generic))
526 return false_warn(prefix, name);
532 CSerializableFile::write_type_begin(
533 const TSGDataType* type,
const char* name,
const char* prefix)
535 if (!is_task_warn(
'w', name, prefix))
return false;
537 if (!write_type_begin_wrapped(type, name, prefix))
538 return false_warn(prefix, name);
544 CSerializableFile::read_type_begin(
545 const TSGDataType* type,
const char* name,
const char* prefix)
547 if (!is_task_warn(
'r', name, prefix))
return false;
549 if (!m_reader->read_type_begin_wrapped(type, name, prefix))
550 return false_warn(prefix, name);
556 CSerializableFile::write_type_end(
557 const TSGDataType* type,
const char* name,
const char* prefix)
559 if (!is_task_warn(
'w', name, prefix))
return false;
561 if (!write_type_end_wrapped(type, name, prefix))
562 return false_warn(prefix, name);
568 CSerializableFile::read_type_end(
569 const TSGDataType* type,
const char* name,
const char* prefix)
571 if (!is_task_warn(
'r', name, prefix))
return false;
573 if (!m_reader->read_type_end_wrapped(type, name, prefix))
574 return false_warn(prefix, name);
virtual ~CSerializableFile()
Datatypes that shogun supports.
Class SGObject is the base class of all shogun objects.
template class SGSparseVectorEntry
char string_t[STRING_LEN]
void init(FILE *fstream, char task, const char *filename)