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);