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(
200 SerializableXmlReader00::read_sparse_end_wrapped(
203 if (length > 0) m_file->pop_node();
209 SerializableXmlReader00::read_sparseentry_begin_wrapped(
217 if (!m_file->join_node(BAD_CAST STR_SPARSE))
return false;
219 if (!m_file->next_node(BAD_CAST STR_SPARSE))
return false;
222 if ((buf = xmlGetProp(m_file->m_stack_stream.back(), BAD_CAST
223 STR_PROP_FEATINDEX)) == NULL)
return false;
224 if (sscanf((
const char*) buf,
"%"PRIi32, feat_index) != 1)
226 xmlFree(buf);
if (!result)
return false;
232 SerializableXmlReader00::read_sparseentry_end_wrapped(
240 SerializableXmlReader00::read_item_begin_wrapped(
246 case CT_SCALAR:
break;
247 case CT_VECTOR:
case CT_SGVECTOR:
249 if (!m_file->join_node(BAD_CAST STR_ITEM))
return false;
253 case CT_MATRIX:
case CT_SGMATRIX:
256 if (x != 0) { m_file->pop_node(); m_file->pop_node(); }
259 if (!m_file->join_node(BAD_CAST buf_x))
return false;
260 if (!m_file->join_node(BAD_CAST STR_ITEM))
return false;
266 if (!m_file->next_node(BAD_CAST STR_ITEM))
return false;
272 SerializableXmlReader00::read_item_end_wrapped(
279 SerializableXmlReader00::read_sgserializable_begin_wrapped(
280 const TSGDataType* type,
char* sgserializable_name,
281 EPrimitiveType*
generic)
283 xmlNode* m = m_file->m_stack_stream.back();
286 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_IS_NULL)) != NULL) {
288 *sgserializable_name =
'\0';
292 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_INSTANCE_NAME)) == NULL)
294 strncpy(sgserializable_name, (
const char*) buf,
STRING_LEN);
297 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_GENERIC_NAME))
308 SerializableXmlReader00::read_sgserializable_end_wrapped(
309 const TSGDataType* type,
const char* sgserializable_name,
310 EPrimitiveType
generic)
316 SerializableXmlReader00::read_type_begin_wrapped(
317 const TSGDataType* type,
const char* name,
const char* prefix)
323 if (!m_file->join_node(BAD_CAST name))
return false;
327 if ((t = xmlGetProp(m_file->m_stack_stream.back(),
328 BAD_CAST STR_PROP_TYPE)) == NULL)
return false;
329 if (xmlStrcmp(BAD_CAST buf, t) != 0) result =
false;
330 xmlFree(t);
if (!result)
return false;
336 SerializableXmlReader00::read_type_end_wrapped(
337 const TSGDataType* type,
const char* name,
const char* prefix)