18 SerializableHdf5Reader00::SerializableHdf5Reader00(
 
   19     CSerializableHdf5File* file) { m_file = file; }
 
   21 SerializableHdf5Reader00::~SerializableHdf5Reader00() {}
 
   24 SerializableHdf5Reader00::read_scalar_wrapped(
 
   30     CSerializableHdf5File::type_item_t* m
 
   31         = m_file->m_stack_type.back();
 
   35         if (m->y != 0 || m->x != 0) 
return true;
 
   38         if (m->y == -1 || m->x == -1) 
break;
 
   40         if (m->sub_y != 0) 
return true;
 
   43         memcpy(param, m->vltype[m->x*m->dims[1] + m->y].p,
 
   44                m->vltype[m->x*m->dims[1] + m->y].len
 
   49         if (m->sub_y != 0) 
return true;
 
   56     if ((mem_type_id = CSerializableHdf5File::new_stype2hdf5(
 
   61         if (H5Dread(m->dset, mem_type_id, H5S_ALL, H5S_ALL,
 
   62                     H5P_DEFAULT, param) < 0) 
return false;
 
   65         if (H5Dread(m->dset, mem_type_id, H5S_ALL, H5S_ALL,
 
   66                     H5P_DEFAULT, m->vltype) < 0) 
return false;
 
   69         if (H5Dread(m->dset, m->dtype, H5S_ALL, H5S_ALL,
 
   70                     H5P_DEFAULT, m->sparse_ptr) < 0) 
return false;
 
   76     if (H5Tclose(mem_type_id) < 0) 
return false;
 
   82 SerializableHdf5Reader00::read_cont_begin_wrapped(
 
   85     CSerializableHdf5File::type_item_t* m
 
   86         = m_file->m_stack_type.back();
 
   88     if (type->
m_ptype != PT_SGOBJECT) {
 
   93             SG_ERROR(
"read_cont_begin_wrapped(): Implementation error" 
   94                      " during writing Hdf5File (0)!");
 
   96         case CT_VECTOR: 
case CT_SGVECTOR: *len_read_y = m->dims[0]; 
break;
 
   97         case CT_MATRIX: 
case CT_SGMATRIX:
 
   98             *len_read_x = m->dims[0]; *len_read_y = m->dims[1];
 
  100         default: 
return false;
 
  106     if (!m_file->attr_exists(STR_IS_CONT)) 
return false;
 
  110     if (!m_file->attr_read_string(STR_CTYPE_NAME, buf, 
STRING_LEN))
 
  112     if (strcmp(ctype_buf, buf) != 0) 
return false;
 
  118         SG_ERROR(
"read_cont_begin_wrapped(): Implementation error" 
  119                  " during writing Hdf5File (1)!");
 
  121     case CT_MATRIX: 
case CT_SGMATRIX:
 
  122         if (!m_file->attr_read_scalar(TYPE_INDEX, STR_LENGTH_X,
 
  126     case CT_VECTOR: 
case CT_SGVECTOR:
 
  127         if (!m_file->attr_read_scalar(TYPE_INDEX, STR_LENGTH_Y,
 
  131     default: 
return false;
 
  138 SerializableHdf5Reader00::read_cont_end_wrapped(
 
  145 SerializableHdf5Reader00::read_string_begin_wrapped(
 
  148     CSerializableHdf5File::type_item_t* m
 
  149         = m_file->m_stack_type.back();
 
  151     if (m->y == 0 && m->x == 0) {
 
  152         m->y = -1; m->x = -1;
 
  153         read_scalar_wrapped(type, NULL);
 
  157     *length = m->vltype[m->x*m->dims[1] + m->y].len;
 
  163 SerializableHdf5Reader00::read_string_end_wrapped(
 
  170 SerializableHdf5Reader00::read_stringentry_begin_wrapped(
 
  173     CSerializableHdf5File::type_item_t* m
 
  174         = m_file->m_stack_type.back();
 
  182 SerializableHdf5Reader00::read_stringentry_end_wrapped(
 
  189 SerializableHdf5Reader00::read_sparse_begin_wrapped(
 
  192     CSerializableHdf5File::type_item_t* m_prev
 
  193         = m_file->m_stack_type.back();
 
  195     if(!m_file->dspace_select(type->
m_ctype, m_prev->y, m_prev->x))
 
  198     CSerializableHdf5File::type_item_t* m = 
new CSerializableHdf5File
 
  199         ::type_item_t(m_prev->name);
 
  200     m_file->m_stack_type.push_back(m);
 
  204     if (!m_file->group_open(m->name, STR_GROUP_PREFIX)) 
return false;
 
  205     if (!m_file->attr_exists(STR_IS_SPARSE)) 
return false;
 
  208     CSerializableHdf5File::index2string(
 
  210     if ((m->dset = H5Dopen2(m_file->m_stack_h5stream.back(), name,
 
  214     if ((m->dtype = H5Dget_type(m->dset)) < 0) 
return false;
 
  215     if (!CSerializableHdf5File::isequal_stype2hdf5(
 
  218     if ((m->dspace = H5Dget_space(m->dset)) < 0) 
return false;
 
  219     if (H5Sget_simple_extent_ndims(m->dspace) != 1) 
return false;
 
  222     if ((m->rank = H5Sget_simple_extent_dims(m->dspace, m->dims, NULL)
 
  225     if (H5Sget_simple_extent_type(m->dspace) != H5S_NULL
 
  226         && m->rank != 1) 
return false;
 
  228     *length = m->dims[0];
 
  232     char* buf = SG_MALLOC(
char, CSerializableHdf5File::sizeof_sparsetype());
 
  235     if ((mem_type_id = CSerializableHdf5File::new_sparsetype()) < 0)
 
  239     if ((mem_space_id = H5Screate_simple(0, NULL, NULL)) < 0)
 
  242     if (H5Dread(m_prev->dset, mem_type_id, mem_space_id,
 
  243                 m_prev->dspace, H5P_DEFAULT, buf) < 0) 
return false;
 
  245     if (H5Sclose(mem_space_id) < 0) 
return false;
 
  246     if (H5Tclose(mem_type_id) < 0) 
return false;
 
  254 SerializableHdf5Reader00::read_sparse_end_wrapped(
 
  257     if (!m_file->group_close()) 
return false;
 
  259     delete m_file->m_stack_type.back();
 
  260     m_file->m_stack_type.pop_back();
 
  266 SerializableHdf5Reader00::read_sparseentry_begin_wrapped(
 
  270     CSerializableHdf5File::type_item_t* m
 
  271         = m_file->m_stack_type.back();
 
  273     m->sparse_ptr = first_entry;
 
  280 SerializableHdf5Reader00::read_sparseentry_end_wrapped(
 
  288 SerializableHdf5Reader00::read_item_begin_wrapped(
 
  291     CSerializableHdf5File::type_item_t* m
 
  292         = m_file->m_stack_type.back();
 
  295     if (type->
m_ptype != PT_SGOBJECT) 
return true;
 
  298     if (!CSerializableHdf5File::index2string(
 
  300     if (!m_file->group_open(name, 
"")) 
return false;
 
  306 SerializableHdf5Reader00::read_item_end_wrapped(
 
  309     if (type->
m_ptype == PT_SGOBJECT)
 
  310         if (!m_file->group_close()) 
return false;
 
  316 SerializableHdf5Reader00::read_sgserializable_begin_wrapped(
 
  317     const TSGDataType* type, 
char* sgserializable_name,
 
  318     EPrimitiveType* 
generic)
 
  320     if (!m_file->attr_exists(STR_IS_SGSERIALIZABLE)) 
return false;
 
  322     if (m_file->attr_exists(STR_IS_NULL)) {
 
  323         *sgserializable_name = 
'\0'; 
return true;
 
  326     if (!m_file->attr_read_string(
 
  327             STR_INSTANCE_NAME, sgserializable_name, 
STRING_LEN))
 
  330     if (m_file->attr_exists(STR_GENERIC_NAME)) {
 
  332         if (!m_file->attr_read_string(
 
  333                 STR_GENERIC_NAME, buf, 
STRING_LEN)) 
return false;
 
  342 SerializableHdf5Reader00::read_sgserializable_end_wrapped(
 
  343     const TSGDataType* type, 
const char* sgserializable_name,
 
  344     EPrimitiveType 
generic)
 
  350 SerializableHdf5Reader00::read_type_begin_wrapped(
 
  351     const TSGDataType* type, 
const char* name, 
const char* prefix)
 
  353     CSerializableHdf5File::type_item_t* m = 
new CSerializableHdf5File
 
  355     m_file->m_stack_type.push_back(m);
 
  357     if (type->
m_ptype == PT_SGOBJECT) {
 
  358         if (!m_file->group_open(name, 
"")) 
return false;
 
  362     if ((m->dset = H5Dopen2(m_file->m_stack_h5stream.back(), name,
 
  366     if ((m->dtype = H5Dget_type(m->dset)) < 0) 
return false;
 
  367     if (!CSerializableHdf5File::isequal_stype2hdf5(
 
  370     if ((m->dspace = H5Dget_space(m->dset)) < 0) 
return false;
 
  372     if (H5Sget_simple_extent_ndims(m->dspace) > 2) 
return false;
 
  373     if ((m->rank = H5Sget_simple_extent_dims(m->dspace, m->dims, NULL)
 
  380         if (m->rank != 0) 
return false;
 
  381         if (type->
m_stype == ST_STRING) m->vltype = SG_MALLOC(hvl_t, 1);
 
  383     case CT_VECTOR: 
case CT_SGVECTOR:
 
  384         if (H5Sget_simple_extent_type(m->dspace) != H5S_NULL
 
  385             && m->rank != 1) 
return false;
 
  386         if (type->
m_stype == ST_STRING)
 
  387             m->vltype = SG_MALLOC(hvl_t, m->dims[0]);
 
  389     case CT_MATRIX: 
case CT_SGMATRIX:
 
  390         if (H5Sget_simple_extent_type(m->dspace) != H5S_NULL
 
  391             && m->rank != 2) 
return false;
 
  392         if (type->
m_stype == ST_STRING)
 
  393             m->vltype = SG_MALLOC(hvl_t, m->dims[0] *m->dims[1]);
 
  395     default: 
return false;
 
  402 SerializableHdf5Reader00::read_type_end_wrapped(
 
  403     const TSGDataType* type, 
const char* name, 
const char* prefix)
 
  405     if (type->
m_ptype == PT_SGOBJECT)
 
  406         if (!m_file->group_close()) 
return false;
 
  408     delete m_file->m_stack_type.back();
 
  409     m_file->m_stack_type.pop_back();
 
static bool string_to_ptype(EPrimitiveType *ptype, const char *str)
 
#define SG_NOTIMPLEMENTED
 
size_t sizeof_ptype() const 
 
Datatypes that shogun supports. 
 
void to_string(char *dest, size_t n) const 
 
all of classes and functions are contained in the shogun namespace 
 
template class SGSparseVectorEntry 
 
char string_t[STRING_LEN]