16 using namespace shogun;
18 SerializableXmlReader00::SerializableXmlReader00(
19 CSerializableXmlFile* file) { m_file = file; }
21 SerializableXmlReader00::~SerializableXmlReader00() {}
24 SerializableXmlReader00::read_scalar_wrapped(
27 xmlNode* m = m_file->m_stack_stream.back();
31 if ((xml_buf = xmlNodeGetContent(m)) == NULL)
return false;
32 const char* buf = (
const char*) xml_buf;
41 if (strcmp(buf, STR_TRUE) == 0) *(
bool*) param =
true;
42 else if (strcmp(buf, STR_FALSE) == 0) *(
bool*) param =
false;
47 if (sscanf(buf,
"%c", (
char*) param) != 1)
51 if (sscanf(buf,
"%"SCNi8, (int8_t*) param) != 1)
55 if (sscanf(buf,
"%"SCNu8, (uint8_t*) param) != 1)
59 if (sscanf(buf,
"%"SCNi16, (int16_t*) param) != 1)
63 if (sscanf(buf,
"%"SCNu16, (uint16_t*) param) != 1)
67 if (sscanf(buf,
"%"SCNi32, (int32_t*) param) != 1)
71 if (sscanf(buf,
"%"SCNu32, (uint32_t*) param) != 1)
75 if (sscanf(buf,
"%"SCNi64, (int64_t*) param) != 1)
79 if (sscanf(buf,
"%"SCNu64, (uint64_t*) param) != 1)
83 if (sscanf(buf,
"%g", (
float32_t*) param) != 1)
87 if (sscanf(buf,
"%lg", (
float64_t*) param) != 1)
91 if (sscanf(buf,
"%Lg", (
floatmax_t*) param) != 1)
95 SG_ERROR(
"read_scalar_wrapped(): Implementation error during"
105 SerializableXmlReader00::read_cont_begin_wrapped(
108 xmlNode* m = m_file->m_stack_stream.back();
113 case CT_SCALAR:
break;
114 case CT_VECTOR:
case CT_SGVECTOR:
115 *len_read_y = xmlChildElementCount(m);
117 case CT_MATRIX:
case CT_SGMATRIX:
118 *len_read_x = xmlChildElementCount(m);
120 for (xmlNode* cur=m->children; cur != NULL; cur=cur->next) {
121 if (cur->type != XML_ELEMENT_NODE)
continue;
123 if (*len_read_y == 0)
124 *len_read_y = xmlChildElementCount(cur);
126 if (*len_read_y != (
index_t) xmlChildElementCount(cur))
137 SerializableXmlReader00::read_cont_end_wrapped(
140 if (len_read_y > 0) m_file->pop_node();
144 if (len_read_y*len_read_x>0)
152 SerializableXmlReader00::read_string_begin_wrapped(
155 xmlNode* m = m_file->m_stack_stream.back();
157 *length = xmlChildElementCount(m);
163 SerializableXmlReader00::read_string_end_wrapped(
166 if (length > 0) m_file->pop_node();
172 SerializableXmlReader00::read_stringentry_begin_wrapped(
176 if (!m_file->join_node(BAD_CAST STR_STRING))
return false;
180 if (!m_file->next_node(BAD_CAST STR_STRING))
return false;
186 SerializableXmlReader00::read_stringentry_end_wrapped(
193 SerializableXmlReader00::read_sparse_begin_wrapped(
197 xmlNode* m = m_file->m_stack_stream.back();
202 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_VECINDEX)) == NULL)
204 if (sscanf((
const char*) buf,
"%"PRIi32, vec_index) != 1)
206 xmlFree(buf);
if (!result)
return false;
208 *length = xmlChildElementCount(m);
214 SerializableXmlReader00::read_sparse_end_wrapped(
218 if (length > 0) m_file->pop_node();
224 SerializableXmlReader00::read_sparseentry_begin_wrapped(
232 if (!m_file->join_node(BAD_CAST STR_SPARSE))
return false;
234 if (!m_file->next_node(BAD_CAST STR_SPARSE))
return false;
237 if ((buf = xmlGetProp(m_file->m_stack_stream.back(), BAD_CAST
238 STR_PROP_FEATINDEX)) == NULL)
return false;
239 if (sscanf((
const char*) buf,
"%"PRIi32, feat_index) != 1)
241 xmlFree(buf);
if (!result)
return false;
247 SerializableXmlReader00::read_sparseentry_end_wrapped(
255 SerializableXmlReader00::read_item_begin_wrapped(
261 case CT_SCALAR:
break;
262 case CT_VECTOR:
case CT_SGVECTOR:
264 if (!m_file->join_node(BAD_CAST STR_ITEM))
return false;
268 case CT_MATRIX:
case CT_SGMATRIX:
271 if (x != 0) { m_file->pop_node(); m_file->pop_node(); }
274 if (!m_file->join_node(BAD_CAST buf_x))
return false;
275 if (!m_file->join_node(BAD_CAST STR_ITEM))
return false;
281 if (!m_file->next_node(BAD_CAST STR_ITEM))
return false;
287 SerializableXmlReader00::read_item_end_wrapped(
294 SerializableXmlReader00::read_sgserializable_begin_wrapped(
295 const TSGDataType* type,
char* sgserializable_name,
296 EPrimitiveType*
generic)
298 xmlNode* m = m_file->m_stack_stream.back();
301 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_IS_NULL)) != NULL) {
303 *sgserializable_name =
'\0';
307 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_INSTANCE_NAME)) == NULL)
309 strncpy(sgserializable_name, (
const char*) buf,
STRING_LEN);
312 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_GENERIC_NAME))
323 SerializableXmlReader00::read_sgserializable_end_wrapped(
324 const TSGDataType* type,
const char* sgserializable_name,
325 EPrimitiveType
generic)
331 SerializableXmlReader00::read_type_begin_wrapped(
332 const TSGDataType* type,
const char* name,
const char* prefix)
338 if (!m_file->join_node(BAD_CAST name))
return false;
342 if ((t = xmlGetProp(m_file->m_stack_stream.back(),
343 BAD_CAST STR_PROP_TYPE)) == NULL)
return false;
344 if (xmlStrcmp(BAD_CAST buf, t) != 0) result =
false;
345 xmlFree(t);
if (!result)
return false;
351 SerializableXmlReader00::read_type_end_wrapped(
352 const TSGDataType* type,
const char* name,
const char* prefix)