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)
80 CSerializableFile::is_task_warn(
char rw,
const char* name,
83 if (
m_task ==
'r' && m_reader == NULL) {
86 m_reader = new_reader(dest_version,
STRING_LEN);
87 if (m_reader == NULL) {
88 SG_WARNING(
"`%s' has file-version `%s', which is not "
90 close();
return false;
95 SG_WARNING(
"`%s' not opened (for writing) during writing "
100 SG_WARNING(
"`%s' not opened (for reading) during reading "
109 CSerializableFile::false_warn(
const char* prefix,
const char* name)
112 SG_WARNING(
"Could not write `%s%s' to `%s'!\n", prefix,
115 SG_WARNING(
"Could not read `%s%s' from `%s'!\n", prefix,
118 SG_WARNING(
"Could not read/write `%s%s' from `%s'!\n",
125 CSerializableFile::write_scalar(
126 const TSGDataType* type,
const char* name,
const char* prefix,
129 if (!is_task_warn(
'w', name, prefix))
return false;
131 if (!write_scalar_wrapped(type, param))
132 return false_warn(prefix, name);
138 CSerializableFile::read_scalar(
139 const TSGDataType* type,
const char* name,
const char* prefix,
142 if (!is_task_warn(
'r', name, prefix))
return false;
144 if (!m_reader->read_scalar_wrapped(type, param))
145 return false_warn(prefix, name);
151 CSerializableFile::write_cont_begin(
152 const TSGDataType* type,
const char* name,
const char* prefix,
155 if (!is_task_warn(
'w', name, prefix))
return false;
157 if (!write_cont_begin_wrapped(type, len_real_y, len_real_x))
158 return false_warn(prefix, name);
164 CSerializableFile::read_cont_begin(
165 const TSGDataType* type,
const char* name,
const char* prefix,
168 if (!is_task_warn(
'r', name, prefix))
return false;
170 if (!m_reader->read_cont_begin_wrapped(type, len_read_y,
172 return false_warn(prefix, name);
178 CSerializableFile::write_cont_end(
179 const TSGDataType* type,
const char* name,
const char* prefix,
182 if (!is_task_warn(
'w', name, prefix))
return false;
184 if (!write_cont_end_wrapped(type, len_real_y, len_real_x))
185 return false_warn(prefix, name);
191 CSerializableFile::read_cont_end(
192 const TSGDataType* type,
const char* name,
const char* prefix,
195 if (!is_task_warn(
'r', name, prefix))
return false;
197 if (!m_reader->read_cont_end_wrapped(type, len_read_y, len_read_x))
198 return false_warn(prefix, name);
204 CSerializableFile::write_string_begin(
205 const TSGDataType* type,
const char* name,
const char* prefix,
208 if (!is_task_warn(
'w', name, prefix))
return false;
210 if (!write_string_begin_wrapped(type, length))
211 return false_warn(prefix, name);
217 CSerializableFile::read_string_begin(
218 const TSGDataType* type,
const char* name,
const char* prefix,
221 if (!is_task_warn(
'r', name, prefix))
return false;
223 if (!m_reader->read_string_begin_wrapped(type, length))
224 return false_warn(prefix, name);
230 CSerializableFile::write_string_end(
231 const TSGDataType* type,
const char* name,
const char* prefix,
234 if (!is_task_warn(
'w', name, prefix))
return false;
236 if (!write_string_end_wrapped(type, length))
237 return false_warn(prefix, name);
243 CSerializableFile::read_string_end(
244 const TSGDataType* type,
const char* name,
const char* prefix,
247 if (!is_task_warn(
'r', name, prefix))
return false;
249 if (!m_reader->read_string_end_wrapped(type, length))
250 return false_warn(prefix, name);
256 CSerializableFile::write_stringentry_begin(
257 const TSGDataType* type,
const char* name,
const char* prefix,
260 if (!is_task_warn(
'w', name, prefix))
return false;
262 if (!write_stringentry_begin_wrapped(type, y))
263 return false_warn(prefix, name);
269 CSerializableFile::read_stringentry_begin(
270 const TSGDataType* type,
const char* name,
const char* prefix,
273 if (!is_task_warn(
'r', name, prefix))
return false;
275 if (!m_reader->read_stringentry_begin_wrapped(type, y))
276 return false_warn(prefix, name);
282 CSerializableFile::write_stringentry_end(
283 const TSGDataType* type,
const char* name,
const char* prefix,
286 if (!is_task_warn(
'w', name, prefix))
return false;
288 if (!write_stringentry_end_wrapped(type, y))
289 return false_warn(prefix, name);
295 CSerializableFile::read_stringentry_end(
296 const TSGDataType* type,
const char* name,
const char* prefix,
299 if (!is_task_warn(
'r', name, prefix))
return false;
301 if (!m_reader->read_stringentry_end_wrapped(type, y))
302 return false_warn(prefix, name);
308 CSerializableFile::write_sparse_begin(
309 const TSGDataType* type,
const char* name,
const char* prefix,
312 if (!is_task_warn(
'w', name, prefix))
return false;
314 if (!write_sparse_begin_wrapped(type, vec_index, length))
315 return false_warn(prefix, name);
321 CSerializableFile::read_sparse_begin(
322 const TSGDataType* type,
const char* name,
const char* prefix,
325 if (!is_task_warn(
'r', name, prefix))
return false;
327 if (!m_reader->read_sparse_begin_wrapped(type, vec_index, length))
328 return false_warn(prefix, name);
334 CSerializableFile::write_sparse_end(
335 const TSGDataType* type,
const char* name,
const char* prefix,
338 if (!is_task_warn(
'w', name, prefix))
return false;
340 if (!write_sparse_end_wrapped(type, vec_index, length))
341 return false_warn(prefix, name);
347 CSerializableFile::read_sparse_end(
348 const TSGDataType* type,
const char* name,
const char* prefix,
351 if (!is_task_warn(
'r', name, prefix))
return false;
353 if (!m_reader->read_sparse_end_wrapped(type, vec_index, length))
354 return false_warn(prefix, name);
360 CSerializableFile::write_sparseentry_begin(
361 const TSGDataType* type,
const char* name,
const char* prefix,
365 if (!is_task_warn(
'w', name, prefix))
return false;
367 if (!write_sparseentry_begin_wrapped(type, first_entry,
369 return false_warn(prefix, name);
375 CSerializableFile::read_sparseentry_begin(
376 const TSGDataType* type,
const char* name,
const char* prefix,
379 if (!is_task_warn(
'r', name, prefix))
return false;
381 if (!m_reader->read_sparseentry_begin_wrapped(type, first_entry,
383 return false_warn(prefix, name);
389 CSerializableFile::write_sparseentry_end(
390 const TSGDataType* type,
const char* name,
const char* prefix,
394 if (!is_task_warn(
'w', name, prefix))
return false;
396 if (!write_sparseentry_end_wrapped(type, first_entry, feat_index,
398 return false_warn(prefix, name);
404 CSerializableFile::read_sparseentry_end(
405 const TSGDataType* type,
const char* name,
const char* prefix,
409 if (!is_task_warn(
'r', name, prefix))
return false;
411 if (!m_reader->read_sparseentry_end_wrapped(type, first_entry,
413 return false_warn(prefix, name);
419 CSerializableFile::write_item_begin(
420 const TSGDataType* type,
const char* name,
const char* prefix,
423 if (!is_task_warn(
'w', name, prefix))
return false;
425 if (!write_item_begin_wrapped(type, y, x))
426 return false_warn(prefix, name);
432 CSerializableFile::read_item_begin(
433 const TSGDataType* type,
const char* name,
const char* prefix,
436 if (!is_task_warn(
'r', name, prefix))
return false;
438 if (!m_reader->read_item_begin_wrapped(type, y, x))
439 return false_warn(prefix, name);
445 CSerializableFile::write_item_end(
446 const TSGDataType* type,
const char* name,
const char* prefix,
449 if (!is_task_warn(
'w', name, prefix))
return false;
451 if (!write_item_end_wrapped(type, y, x))
452 return false_warn(prefix, name);
458 CSerializableFile::read_item_end(
459 const TSGDataType* type,
const char* name,
const char* prefix,
462 if (!is_task_warn(
'r', name, prefix))
return false;
464 if (!m_reader->read_item_end_wrapped(type, y, x))
465 return false_warn(prefix, name);
471 CSerializableFile::write_sgserializable_begin(
472 const TSGDataType* type,
const char* name,
const char* prefix,
473 const char* sgserializable_name, EPrimitiveType
generic)
475 if (!is_task_warn(
'w', name, prefix))
return false;
477 if (!write_sgserializable_begin_wrapped(type, sgserializable_name,
479 return false_warn(prefix, name);
485 CSerializableFile::read_sgserializable_begin(
486 const TSGDataType* type,
const char* name,
const char* prefix,
487 char* sgserializable_name, EPrimitiveType*
generic)
489 if (!is_task_warn(
'r', name, prefix))
return false;
491 if (!m_reader->read_sgserializable_begin_wrapped(
492 type, sgserializable_name,
generic))
493 return false_warn(prefix, name);
499 CSerializableFile::write_sgserializable_end(
500 const TSGDataType* type,
const char* name,
const char* prefix,
501 const char* sgserializable_name, EPrimitiveType
generic)
503 if (!is_task_warn(
'w', name, prefix))
return false;
505 if (!write_sgserializable_end_wrapped(type, sgserializable_name,
507 return false_warn(prefix, name);
513 CSerializableFile::read_sgserializable_end(
514 const TSGDataType* type,
const char* name,
const char* prefix,
515 const char* sgserializable_name, EPrimitiveType
generic)
517 if (!is_task_warn(
'r', name, prefix))
return false;
519 if (!m_reader->read_sgserializable_end_wrapped(
520 type, sgserializable_name,
generic))
521 return false_warn(prefix, name);
527 CSerializableFile::write_type_begin(
528 const TSGDataType* type,
const char* name,
const char* prefix)
530 if (!is_task_warn(
'w', name, prefix))
return false;
532 if (!write_type_begin_wrapped(type, name, prefix))
533 return false_warn(prefix, name);
539 CSerializableFile::read_type_begin(
540 const TSGDataType* type,
const char* name,
const char* prefix)
542 if (!is_task_warn(
'r', name, prefix))
return false;
544 if (!m_reader->read_type_begin_wrapped(type, name, prefix))
545 return false_warn(prefix, name);
551 CSerializableFile::write_type_end(
552 const TSGDataType* type,
const char* name,
const char* prefix)
554 if (!is_task_warn(
'w', name, prefix))
return false;
556 if (!write_type_end_wrapped(type, name, prefix))
557 return false_warn(prefix, name);
563 CSerializableFile::read_type_end(
564 const TSGDataType* type,
const char* name,
const char* prefix)
566 if (!is_task_warn(
'r', name, prefix))
return false;
568 if (!m_reader->read_type_end_wrapped(type, name, prefix))
569 return false_warn(prefix, name);