14 using namespace shogun;
19 init(NULL, 0,
"(file)");
25 init(fstream, rw,
"(file)");
31 char mode[3] = {rw,
'b',
'\0'};
33 init(NULL, rw, fname);
36 SG_WARNING(
"Filename not given for opening file!\n")
40 if (rw !=
'r' && rw !=
'w') {
61 CSerializableFile::init(FILE* fstream,
char task,
const char* filename)
66 m_filename = SG_MALLOC(
char, strlen(filename)+1);
84 CSerializableFile::is_task_warn(
char rw,
const char* name,
87 if (
m_task ==
'r' && m_reader == NULL) {
90 m_reader = new_reader(dest_version,
STRING_LEN);
91 if (m_reader == NULL) {
92 SG_WARNING(
"`%s' has file-version `%s', which is not "
94 close();
return false;
99 SG_WARNING(
"`%s' not opened (for writing) during writing "
104 SG_WARNING(
"`%s' not opened (for reading) during reading "
113 CSerializableFile::false_warn(
const char* prefix,
const char* name)
116 SG_WARNING(
"Could not write `%s%s' to `%s'!\n", prefix,
119 SG_WARNING(
"Could not read `%s%s' from `%s'!\n", prefix,
122 SG_WARNING(
"Could not read/write `%s%s' from `%s'!\n",
129 CSerializableFile::write_scalar(
130 const TSGDataType* type,
const char* name,
const char* prefix,
133 if (!is_task_warn(
'w', name, prefix))
return false;
135 if (!write_scalar_wrapped(type, param))
136 return false_warn(prefix, name);
142 CSerializableFile::read_scalar(
143 const TSGDataType* type,
const char* name,
const char* prefix,
146 if (!is_task_warn(
'r', name, prefix))
return false;
148 if (!m_reader->read_scalar_wrapped(type, param))
149 return false_warn(prefix, name);
155 CSerializableFile::write_cont_begin(
156 const TSGDataType* type,
const char* name,
const char* prefix,
159 if (!is_task_warn(
'w', name, prefix))
return false;
161 if (!write_cont_begin_wrapped(type, len_real_y, len_real_x))
162 return false_warn(prefix, name);
168 CSerializableFile::read_cont_begin(
169 const TSGDataType* type,
const char* name,
const char* prefix,
172 if (!is_task_warn(
'r', name, prefix))
return false;
174 if (!m_reader->read_cont_begin_wrapped(type, len_read_y,
176 return false_warn(prefix, name);
182 CSerializableFile::write_cont_end(
183 const TSGDataType* type,
const char* name,
const char* prefix,
186 if (!is_task_warn(
'w', name, prefix))
return false;
188 if (!write_cont_end_wrapped(type, len_real_y, len_real_x))
189 return false_warn(prefix, name);
195 CSerializableFile::read_cont_end(
196 const TSGDataType* type,
const char* name,
const char* prefix,
199 if (!is_task_warn(
'r', name, prefix))
return false;
201 if (!m_reader->read_cont_end_wrapped(type, len_read_y, len_read_x))
202 return false_warn(prefix, name);
208 CSerializableFile::write_string_begin(
209 const TSGDataType* type,
const char* name,
const char* prefix,
212 if (!is_task_warn(
'w', name, prefix))
return false;
214 if (!write_string_begin_wrapped(type, length))
215 return false_warn(prefix, name);
221 CSerializableFile::read_string_begin(
222 const TSGDataType* type,
const char* name,
const char* prefix,
225 if (!is_task_warn(
'r', name, prefix))
return false;
227 if (!m_reader->read_string_begin_wrapped(type, length))
228 return false_warn(prefix, name);
234 CSerializableFile::write_string_end(
235 const TSGDataType* type,
const char* name,
const char* prefix,
238 if (!is_task_warn(
'w', name, prefix))
return false;
240 if (!write_string_end_wrapped(type, length))
241 return false_warn(prefix, name);
247 CSerializableFile::read_string_end(
248 const TSGDataType* type,
const char* name,
const char* prefix,
251 if (!is_task_warn(
'r', name, prefix))
return false;
253 if (!m_reader->read_string_end_wrapped(type, length))
254 return false_warn(prefix, name);
260 CSerializableFile::write_stringentry_begin(
261 const TSGDataType* type,
const char* name,
const char* prefix,
264 if (!is_task_warn(
'w', name, prefix))
return false;
266 if (!write_stringentry_begin_wrapped(type, y))
267 return false_warn(prefix, name);
273 CSerializableFile::read_stringentry_begin(
274 const TSGDataType* type,
const char* name,
const char* prefix,
277 if (!is_task_warn(
'r', name, prefix))
return false;
279 if (!m_reader->read_stringentry_begin_wrapped(type, y))
280 return false_warn(prefix, name);
286 CSerializableFile::write_stringentry_end(
287 const TSGDataType* type,
const char* name,
const char* prefix,
290 if (!is_task_warn(
'w', name, prefix))
return false;
292 if (!write_stringentry_end_wrapped(type, y))
293 return false_warn(prefix, name);
299 CSerializableFile::read_stringentry_end(
300 const TSGDataType* type,
const char* name,
const char* prefix,
303 if (!is_task_warn(
'r', name, prefix))
return false;
305 if (!m_reader->read_stringentry_end_wrapped(type, y))
306 return false_warn(prefix, name);
312 CSerializableFile::write_sparse_begin(
313 const TSGDataType* type,
const char* name,
const char* prefix,
316 if (!is_task_warn(
'w', name, prefix))
return false;
318 if (!write_sparse_begin_wrapped(type, length))
319 return false_warn(prefix, name);
325 CSerializableFile::read_sparse_begin(
326 const TSGDataType* type,
const char* name,
const char* prefix,
329 if (!is_task_warn(
'r', name, prefix))
return false;
331 if (!m_reader->read_sparse_begin_wrapped(type, length))
332 return false_warn(prefix, name);
338 CSerializableFile::write_sparse_end(
339 const TSGDataType* type,
const char* name,
const char* prefix,
342 if (!is_task_warn(
'w', name, prefix))
return false;
344 if (!write_sparse_end_wrapped(type, length))
345 return false_warn(prefix, name);
351 CSerializableFile::read_sparse_end(
352 const TSGDataType* type,
const char* name,
const char* prefix,
355 if (!is_task_warn(
'r', name, prefix))
return false;
357 if (!m_reader->read_sparse_end_wrapped(type, length))
358 return false_warn(prefix, name);
364 CSerializableFile::write_sparseentry_begin(
365 const TSGDataType* type,
const char* name,
const char* prefix,
369 if (!is_task_warn(
'w', name, prefix))
return false;
371 if (!write_sparseentry_begin_wrapped(type, first_entry,
373 return false_warn(prefix, name);
379 CSerializableFile::read_sparseentry_begin(
380 const TSGDataType* type,
const char* name,
const char* prefix,
383 if (!is_task_warn(
'r', name, prefix))
return false;
385 if (!m_reader->read_sparseentry_begin_wrapped(type, first_entry,
387 return false_warn(prefix, name);
393 CSerializableFile::write_sparseentry_end(
394 const TSGDataType* type,
const char* name,
const char* prefix,
398 if (!is_task_warn(
'w', name, prefix))
return false;
400 if (!write_sparseentry_end_wrapped(type, first_entry, feat_index,
402 return false_warn(prefix, name);
408 CSerializableFile::read_sparseentry_end(
409 const TSGDataType* type,
const char* name,
const char* prefix,
413 if (!is_task_warn(
'r', name, prefix))
return false;
415 if (!m_reader->read_sparseentry_end_wrapped(type, first_entry,
417 return false_warn(prefix, name);
423 CSerializableFile::write_item_begin(
424 const TSGDataType* type,
const char* name,
const char* prefix,
427 if (!is_task_warn(
'w', name, prefix))
return false;
429 if (!write_item_begin_wrapped(type, y, x))
430 return false_warn(prefix, name);
436 CSerializableFile::read_item_begin(
437 const TSGDataType* type,
const char* name,
const char* prefix,
440 if (!is_task_warn(
'r', name, prefix))
return false;
442 if (!m_reader->read_item_begin_wrapped(type, y, x))
443 return false_warn(prefix, name);
449 CSerializableFile::write_item_end(
450 const TSGDataType* type,
const char* name,
const char* prefix,
453 if (!is_task_warn(
'w', name, prefix))
return false;
455 if (!write_item_end_wrapped(type, y, x))
456 return false_warn(prefix, name);
462 CSerializableFile::read_item_end(
463 const TSGDataType* type,
const char* name,
const char* prefix,
466 if (!is_task_warn(
'r', name, prefix))
return false;
468 if (!m_reader->read_item_end_wrapped(type, y, x))
469 return false_warn(prefix, name);
475 CSerializableFile::write_sgserializable_begin(
476 const TSGDataType* type,
const char* name,
const char* prefix,
477 const char* sgserializable_name, EPrimitiveType
generic)
479 if (!is_task_warn(
'w', name, prefix))
return false;
481 if (!write_sgserializable_begin_wrapped(type, sgserializable_name,
483 return false_warn(prefix, name);
489 CSerializableFile::read_sgserializable_begin(
490 const TSGDataType* type,
const char* name,
const char* prefix,
491 char* sgserializable_name, EPrimitiveType*
generic)
493 if (!is_task_warn(
'r', name, prefix))
return false;
495 if (!m_reader->read_sgserializable_begin_wrapped(
496 type, sgserializable_name,
generic))
497 return false_warn(prefix, name);
503 CSerializableFile::write_sgserializable_end(
504 const TSGDataType* type,
const char* name,
const char* prefix,
505 const char* sgserializable_name, EPrimitiveType
generic)
507 if (!is_task_warn(
'w', name, prefix))
return false;
509 if (!write_sgserializable_end_wrapped(type, sgserializable_name,
511 return false_warn(prefix, name);
517 CSerializableFile::read_sgserializable_end(
518 const TSGDataType* type,
const char* name,
const char* prefix,
519 const char* sgserializable_name, EPrimitiveType
generic)
521 if (!is_task_warn(
'r', name, prefix))
return false;
523 if (!m_reader->read_sgserializable_end_wrapped(
524 type, sgserializable_name,
generic))
525 return false_warn(prefix, name);
531 CSerializableFile::write_type_begin(
532 const TSGDataType* type,
const char* name,
const char* prefix)
534 if (!is_task_warn(
'w', name, prefix))
return false;
536 if (!write_type_begin_wrapped(type, name, prefix))
537 return false_warn(prefix, name);
543 CSerializableFile::read_type_begin(
544 const TSGDataType* type,
const char* name,
const char* prefix)
546 if (!is_task_warn(
'r', name, prefix))
return false;
548 if (!m_reader->read_type_begin_wrapped(type, name, prefix))
549 return false_warn(prefix, name);
555 CSerializableFile::write_type_end(
556 const TSGDataType* type,
const char* name,
const char* prefix)
558 if (!is_task_warn(
'w', name, prefix))
return false;
560 if (!write_type_end_wrapped(type, name, prefix))
561 return false_warn(prefix, name);
567 CSerializableFile::read_type_end(
568 const TSGDataType* type,
const char* name,
const char* prefix)
570 if (!is_task_warn(
'r', name, prefix))
return false;
572 if (!m_reader->read_type_end_wrapped(type, name, prefix))
573 return false_warn(prefix, name);