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)
99 #if defined(HAVE_CXX11) || defined(_LIBCPP_VERSION)
109 SG_ERROR(
"read_scalar_wrapped(): Implementation error during"
110 " reading XmlFile!");
119 SerializableXmlReader00::read_cont_begin_wrapped(
122 xmlNode* m = m_file->m_stack_stream.back();
127 case CT_SCALAR:
break;
128 case CT_VECTOR:
case CT_SGVECTOR:
129 *len_read_y = xmlChildElementCount(m);
131 case CT_MATRIX:
case CT_SGMATRIX:
132 *len_read_x = xmlChildElementCount(m);
134 for (xmlNode* cur=m->children; cur != NULL; cur=cur->next) {
135 if (cur->type != XML_ELEMENT_NODE)
continue;
137 if (*len_read_y == 0)
138 *len_read_y = xmlChildElementCount(cur);
140 if (*len_read_y != (
index_t) xmlChildElementCount(cur))
152 SerializableXmlReader00::read_cont_end_wrapped(
155 if (len_read_y > 0) m_file->pop_node();
159 if (len_read_y*len_read_x>0)
167 SerializableXmlReader00::read_string_begin_wrapped(
170 xmlNode* m = m_file->m_stack_stream.back();
172 *length = xmlChildElementCount(m);
178 SerializableXmlReader00::read_string_end_wrapped(
181 if (length > 0) m_file->pop_node();
187 SerializableXmlReader00::read_stringentry_begin_wrapped(
191 if (!m_file->join_node(BAD_CAST STR_STRING))
return false;
195 if (!m_file->next_node(BAD_CAST STR_STRING))
return false;
201 SerializableXmlReader00::read_stringentry_end_wrapped(
208 SerializableXmlReader00::read_sparse_begin_wrapped(
215 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;
283 if (!m_file->next_node(BAD_CAST STR_ITEM))
return false;
289 SerializableXmlReader00::read_item_end_wrapped(
296 SerializableXmlReader00::read_sgserializable_begin_wrapped(
297 const TSGDataType* type,
char* sgserializable_name,
298 EPrimitiveType*
generic)
300 xmlNode* m = m_file->m_stack_stream.back();
303 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_IS_NULL)) != NULL) {
305 *sgserializable_name =
'\0';
309 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_INSTANCE_NAME)) == NULL)
311 strncpy(sgserializable_name, (
const char*) buf,
STRING_LEN);
314 if ((buf = xmlGetProp(m, BAD_CAST STR_PROP_GENERIC_NAME))
325 SerializableXmlReader00::read_sgserializable_end_wrapped(
326 const TSGDataType* type,
const char* sgserializable_name,
327 EPrimitiveType
generic)
333 SerializableXmlReader00::read_type_begin_wrapped(
334 const TSGDataType* type,
const char* name,
const char* prefix)
340 if (!m_file->join_node(BAD_CAST name))
return false;
344 if ((t = xmlGetProp(m_file->m_stack_stream.back(),
345 BAD_CAST STR_PROP_TYPE)) == NULL)
return false;
346 if (xmlStrcmp(BAD_CAST buf, t) != 0) result =
false;
347 xmlFree(t);
if (!result)
return false;
353 SerializableXmlReader00::read_type_end_wrapped(
354 const TSGDataType* type,
const char* name,
const char* prefix)
std::complex< float64_t > complex128_t
static bool string_to_ptype(EPrimitiveType *ptype, const char *str)
#define SG_NOTIMPLEMENTED
Datatypes that shogun supports.
void to_string(char *dest, size_t n) const
template class SGSparseVectorEntry
char string_t[STRING_LEN]