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)
82 CSerializableFile::is_task_warn(
char rw,
const char* name,
85 if (
m_task ==
'r' && m_reader == NULL) {
88 m_reader = new_reader(dest_version,
STRING_LEN);
89 if (m_reader == NULL) {
90 SG_WARNING(
"`%s' has file-version `%s', which is not "
92 close();
return false;
97 SG_WARNING(
"`%s' not opened (for writing) during writing "
102 SG_WARNING(
"`%s' not opened (for reading) during reading "
111 CSerializableFile::false_warn(
const char* prefix,
const char* name)
114 SG_WARNING(
"Could not write `%s%s' to `%s'!\n", prefix,
117 SG_WARNING(
"Could not read `%s%s' from `%s'!\n", prefix,
120 SG_WARNING(
"Could not read/write `%s%s' from `%s'!\n",
127 CSerializableFile::write_scalar(
128 const TSGDataType* type,
const char* name,
const char* prefix,
131 if (!is_task_warn(
'w', name, prefix))
return false;
133 if (!write_scalar_wrapped(type, param))
134 return false_warn(prefix, name);
140 CSerializableFile::read_scalar(
141 const TSGDataType* type,
const char* name,
const char* prefix,
144 if (!is_task_warn(
'r', name, prefix))
return false;
146 if (!m_reader->read_scalar_wrapped(type, param))
147 return false_warn(prefix, name);
153 CSerializableFile::write_cont_begin(
154 const TSGDataType* type,
const char* name,
const char* prefix,
157 if (!is_task_warn(
'w', name, prefix))
return false;
159 if (!write_cont_begin_wrapped(type, len_real_y, len_real_x))
160 return false_warn(prefix, name);
166 CSerializableFile::read_cont_begin(
167 const TSGDataType* type,
const char* name,
const char* prefix,
170 if (!is_task_warn(
'r', name, prefix))
return false;
172 if (!m_reader->read_cont_begin_wrapped(type, len_read_y,
174 return false_warn(prefix, name);
180 CSerializableFile::write_cont_end(
181 const TSGDataType* type,
const char* name,
const char* prefix,
184 if (!is_task_warn(
'w', name, prefix))
return false;
186 if (!write_cont_end_wrapped(type, len_real_y, len_real_x))
187 return false_warn(prefix, name);
193 CSerializableFile::read_cont_end(
194 const TSGDataType* type,
const char* name,
const char* prefix,
197 if (!is_task_warn(
'r', name, prefix))
return false;
199 if (!m_reader->read_cont_end_wrapped(type, len_read_y, len_read_x))
200 return false_warn(prefix, name);
206 CSerializableFile::write_string_begin(
207 const TSGDataType* type,
const char* name,
const char* prefix,
210 if (!is_task_warn(
'w', name, prefix))
return false;
212 if (!write_string_begin_wrapped(type, length))
213 return false_warn(prefix, name);
219 CSerializableFile::read_string_begin(
220 const TSGDataType* type,
const char* name,
const char* prefix,
223 if (!is_task_warn(
'r', name, prefix))
return false;
225 if (!m_reader->read_string_begin_wrapped(type, length))
226 return false_warn(prefix, name);
232 CSerializableFile::write_string_end(
233 const TSGDataType* type,
const char* name,
const char* prefix,
236 if (!is_task_warn(
'w', name, prefix))
return false;
238 if (!write_string_end_wrapped(type, length))
239 return false_warn(prefix, name);
245 CSerializableFile::read_string_end(
246 const TSGDataType* type,
const char* name,
const char* prefix,
249 if (!is_task_warn(
'r', name, prefix))
return false;
251 if (!m_reader->read_string_end_wrapped(type, length))
252 return false_warn(prefix, name);
258 CSerializableFile::write_stringentry_begin(
259 const TSGDataType* type,
const char* name,
const char* prefix,
262 if (!is_task_warn(
'w', name, prefix))
return false;
264 if (!write_stringentry_begin_wrapped(type, y))
265 return false_warn(prefix, name);
271 CSerializableFile::read_stringentry_begin(
272 const TSGDataType* type,
const char* name,
const char* prefix,
275 if (!is_task_warn(
'r', name, prefix))
return false;
277 if (!m_reader->read_stringentry_begin_wrapped(type, y))
278 return false_warn(prefix, name);
284 CSerializableFile::write_stringentry_end(
285 const TSGDataType* type,
const char* name,
const char* prefix,
288 if (!is_task_warn(
'w', name, prefix))
return false;
290 if (!write_stringentry_end_wrapped(type, y))
291 return false_warn(prefix, name);
297 CSerializableFile::read_stringentry_end(
298 const TSGDataType* type,
const char* name,
const char* prefix,
301 if (!is_task_warn(
'r', name, prefix))
return false;
303 if (!m_reader->read_stringentry_end_wrapped(type, y))
304 return false_warn(prefix, name);
310 CSerializableFile::write_sparse_begin(
311 const TSGDataType* type,
const char* name,
const char* prefix,
314 if (!is_task_warn(
'w', name, prefix))
return false;
316 if (!write_sparse_begin_wrapped(type, length))
317 return false_warn(prefix, name);
323 CSerializableFile::read_sparse_begin(
324 const TSGDataType* type,
const char* name,
const char* prefix,
327 if (!is_task_warn(
'r', name, prefix))
return false;
329 if (!m_reader->read_sparse_begin_wrapped(type, length))
330 return false_warn(prefix, name);
336 CSerializableFile::write_sparse_end(
337 const TSGDataType* type,
const char* name,
const char* prefix,
340 if (!is_task_warn(
'w', name, prefix))
return false;
342 if (!write_sparse_end_wrapped(type, length))
343 return false_warn(prefix, name);
349 CSerializableFile::read_sparse_end(
350 const TSGDataType* type,
const char* name,
const char* prefix,
353 if (!is_task_warn(
'r', name, prefix))
return false;
355 if (!m_reader->read_sparse_end_wrapped(type, length))
356 return false_warn(prefix, name);
362 CSerializableFile::write_sparseentry_begin(
363 const TSGDataType* type,
const char* name,
const char* prefix,
367 if (!is_task_warn(
'w', name, prefix))
return false;
369 if (!write_sparseentry_begin_wrapped(type, first_entry,
371 return false_warn(prefix, name);
377 CSerializableFile::read_sparseentry_begin(
378 const TSGDataType* type,
const char* name,
const char* prefix,
381 if (!is_task_warn(
'r', name, prefix))
return false;
383 if (!m_reader->read_sparseentry_begin_wrapped(type, first_entry,
385 return false_warn(prefix, name);
391 CSerializableFile::write_sparseentry_end(
392 const TSGDataType* type,
const char* name,
const char* prefix,
396 if (!is_task_warn(
'w', name, prefix))
return false;
398 if (!write_sparseentry_end_wrapped(type, first_entry, feat_index,
400 return false_warn(prefix, name);
406 CSerializableFile::read_sparseentry_end(
407 const TSGDataType* type,
const char* name,
const char* prefix,
411 if (!is_task_warn(
'r', name, prefix))
return false;
413 if (!m_reader->read_sparseentry_end_wrapped(type, first_entry,
415 return false_warn(prefix, name);
421 CSerializableFile::write_item_begin(
422 const TSGDataType* type,
const char* name,
const char* prefix,
425 if (!is_task_warn(
'w', name, prefix))
return false;
427 if (!write_item_begin_wrapped(type, y, x))
428 return false_warn(prefix, name);
434 CSerializableFile::read_item_begin(
435 const TSGDataType* type,
const char* name,
const char* prefix,
438 if (!is_task_warn(
'r', name, prefix))
return false;
440 if (!m_reader->read_item_begin_wrapped(type, y, x))
441 return false_warn(prefix, name);
447 CSerializableFile::write_item_end(
448 const TSGDataType* type,
const char* name,
const char* prefix,
451 if (!is_task_warn(
'w', name, prefix))
return false;
453 if (!write_item_end_wrapped(type, y, x))
454 return false_warn(prefix, name);
460 CSerializableFile::read_item_end(
461 const TSGDataType* type,
const char* name,
const char* prefix,
464 if (!is_task_warn(
'r', name, prefix))
return false;
466 if (!m_reader->read_item_end_wrapped(type, y, x))
467 return false_warn(prefix, name);
473 CSerializableFile::write_sgserializable_begin(
474 const TSGDataType* type,
const char* name,
const char* prefix,
475 const char* sgserializable_name, EPrimitiveType
generic)
477 if (!is_task_warn(
'w', name, prefix))
return false;
479 if (!write_sgserializable_begin_wrapped(type, sgserializable_name,
481 return false_warn(prefix, name);
487 CSerializableFile::read_sgserializable_begin(
488 const TSGDataType* type,
const char* name,
const char* prefix,
489 char* sgserializable_name, EPrimitiveType*
generic)
491 if (!is_task_warn(
'r', name, prefix))
return false;
493 if (!m_reader->read_sgserializable_begin_wrapped(
494 type, sgserializable_name,
generic))
495 return false_warn(prefix, name);
501 CSerializableFile::write_sgserializable_end(
502 const TSGDataType* type,
const char* name,
const char* prefix,
503 const char* sgserializable_name, EPrimitiveType
generic)
505 if (!is_task_warn(
'w', name, prefix))
return false;
507 if (!write_sgserializable_end_wrapped(type, sgserializable_name,
509 return false_warn(prefix, name);
515 CSerializableFile::read_sgserializable_end(
516 const TSGDataType* type,
const char* name,
const char* prefix,
517 const char* sgserializable_name, EPrimitiveType
generic)
519 if (!is_task_warn(
'r', name, prefix))
return false;
521 if (!m_reader->read_sgserializable_end_wrapped(
522 type, sgserializable_name,
generic))
523 return false_warn(prefix, name);
529 CSerializableFile::write_type_begin(
530 const TSGDataType* type,
const char* name,
const char* prefix)
532 if (!is_task_warn(
'w', name, prefix))
return false;
534 if (!write_type_begin_wrapped(type, name, prefix))
535 return false_warn(prefix, name);
541 CSerializableFile::read_type_begin(
542 const TSGDataType* type,
const char* name,
const char* prefix)
544 if (!is_task_warn(
'r', name, prefix))
return false;
546 if (!m_reader->read_type_begin_wrapped(type, name, prefix))
547 return false_warn(prefix, name);
553 CSerializableFile::write_type_end(
554 const TSGDataType* type,
const char* name,
const char* prefix)
556 if (!is_task_warn(
'w', name, prefix))
return false;
558 if (!write_type_end_wrapped(type, name, prefix))
559 return false_warn(prefix, name);
565 CSerializableFile::read_type_end(
566 const TSGDataType* type,
const char* name,
const char* prefix)
568 if (!is_task_warn(
'r', name, prefix))
return false;
570 if (!m_reader->read_type_end_wrapped(type, name, prefix))
571 return false_warn(prefix, name);