17 using namespace shogun;
19 SerializableXmlReader00::SerializableXmlReader00(
20 CSerializableXmlFile* file) { m_file = file; }
22 SerializableXmlReader00::~SerializableXmlReader00() {}
25 SerializableXmlReader00::read_scalar_wrapped(
28 xmlNode* m = m_file->m_stack_stream.back();
32 if ((xml_buf = xmlNodeGetContent(m)) == NULL)
return false;
33 const char* buf = (
const char*) xml_buf;
42 if (strcmp(buf, STR_TRUE) == 0) *(
bool*) param =
true;
43 else if (strcmp(buf, STR_FALSE) == 0) *(
bool*) param =
false;
48 if (sscanf(buf,
"%c", (
char*) param) != 1)
52 if (sscanf(buf,
"%" SCNi8, (int8_t*) param) != 1)
56 if (sscanf(buf,
"%" SCNu8, (uint8_t*) param) != 1)
60 if (sscanf(buf,
"%" SCNi16, (int16_t*) param) != 1)
64 if (sscanf(buf,
"%" SCNu16, (uint16_t*) param) != 1)
68 if (sscanf(buf,
"%" SCNi32, (int32_t*) param) != 1)
72 if (sscanf(buf,
"%" SCNu32, (uint32_t*) param) != 1)
76 if (sscanf(buf,
"%" SCNi64, (int64_t*) param) != 1)
80 if (sscanf(buf,
"%" SCNu64, (uint64_t*) param) != 1)
84 if (sscanf(buf,
"%g", (
float32_t*) param) != 1)
88 if (sscanf(buf,
"%lg", (
float64_t*) param) != 1)
92 if (sscanf(buf,
"%Lg", (
floatmax_t*) param) != 1)
97 if (sscanf(buf,
"(%lg,%lg)", &c_real, &c_imag) != 2)
108 SG_ERROR(
"read_scalar_wrapped(): Implementation error during"
109 " reading XmlFile!");
118 SerializableXmlReader00::read_cont_begin_wrapped(
121 xmlNode* m = m_file->m_stack_stream.back();
126 case CT_SCALAR:
break;
127 case CT_VECTOR:
case CT_SGVECTOR:
128 *len_read_y = xmlChildElementCount(m);
130 case CT_MATRIX:
case CT_SGMATRIX:
131 *len_read_x = xmlChildElementCount(m);
133 for (xmlNode* cur=m->children; cur != NULL; cur=cur->next) {
134 if (cur->type != XML_ELEMENT_NODE)
continue;
136 if (*len_read_y == 0)
137 *len_read_y = xmlChildElementCount(cur);
139 if (*len_read_y != (
index_t) xmlChildElementCount(cur))
150 SerializableXmlReader00::read_cont_end_wrapped(
153 if (len_read_y > 0) m_file->pop_node();
157 if (len_read_y*len_read_x>0)
165 SerializableXmlReader00::read_string_begin_wrapped(
168 xmlNode* m = m_file->m_stack_stream.back();
170 *length = xmlChildElementCount(m);
176 SerializableXmlReader00::read_string_end_wrapped(
179 if (length > 0) m_file->pop_node();
185 SerializableXmlReader00::read_stringentry_begin_wrapped(
189 if (!m_file->join_node(BAD_CAST STR_STRING))
return false;
193 if (!m_file->next_node(BAD_CAST STR_STRING))
return false;
199 SerializableXmlReader00::read_stringentry_end_wrapped(
206 SerializableXmlReader00::read_sparse_begin_wrapped(
213 SerializableXmlReader00::read_sparse_end_wrapped(
216 if (length > 0) m_file->pop_node();
222 SerializableXmlReader00::read_sparseentry_begin_wrapped(
230 if (!m_file->join_node(BAD_CAST STR_SPARSE))
return false;
232 if (!m_file->next_node(BAD_CAST STR_SPARSE))
return false;
235 if ((buf = xmlGetProp(m_file->m_stack_stream.back(), BAD_CAST
236 STR_PROP_FEATINDEX)) == NULL)
return false;
237 if (sscanf((
const char*) buf,
"%" PRIi32, feat_index) != 1)
239 xmlFree(buf);
if (!result)
return false;
245 SerializableXmlReader00::read_sparseentry_end_wrapped(
253 SerializableXmlReader00::read_item_begin_wrapped(
259 case CT_SCALAR:
break;
260 case CT_VECTOR:
case CT_SGVECTOR:
262 if (!m_file->join_node(BAD_CAST STR_ITEM))
return false;
266 case CT_MATRIX:
case CT_SGMATRIX:
269 if (x != 0) { m_file->pop_node(); m_file->pop_node(); }
272 if (!m_file->join_node(BAD_CAST buf_x))
return false;
273 if (!m_file->join_node(BAD_CAST STR_ITEM))
return false;
279 if (!m_file->next_node(BAD_CAST STR_ITEM))
return false;
285 SerializableXmlReader00::read_item_end_wrapped(
292 SerializableXmlReader00::read_sgserializable_begin_wrapped(
293 const TSGDataType* type,
char* sgserializable_name,
294 EPrimitiveType*
generic)
296 xmlNode* m = m_file->m_stack_stream.back();
299 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_IS_NULL)) != NULL) {
301 *sgserializable_name =
'\0';
305 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_INSTANCE_NAME)) == NULL)
307 strncpy(sgserializable_name, (
const char*) buf,
STRING_LEN);
310 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_GENERIC_NAME))
321 SerializableXmlReader00::read_sgserializable_end_wrapped(
322 const TSGDataType* type,
const char* sgserializable_name,
323 EPrimitiveType
generic)
329 SerializableXmlReader00::read_type_begin_wrapped(
330 const TSGDataType* type,
const char* name,
const char* prefix)
336 if (!m_file->join_node(BAD_CAST name))
return false;
340 if ((t = xmlGetProp(m_file->m_stack_stream.back(),
341 BAD_CAST STR_PROP_TYPE)) == NULL)
return false;
342 if (xmlStrcmp(BAD_CAST buf, t) != 0) result =
false;
343 xmlFree(t);
if (!result)
return false;
349 SerializableXmlReader00::read_type_end_wrapped(
350 const TSGDataType* type,
const char* name,
const char* prefix)