diff options
-rw-r--r-- | src/xml.c | 24 | ||||
-rw-r--r-- | src/xml.h | 2 |
2 files changed, 26 insertions, 0 deletions
@@ -58,6 +58,30 @@ db_xml_unexpected_end_tag(XML_Parser p, const char *found, } void +db_xml_get_bool_attr(XML_Parser p, const char **attr, const char *name, + SDL_bool *dest, int req) +{ + for (; attr[0] != NULL; attr += 2) { + if (strcmp(attr[0], name) == 0) { + if (strcmp(attr[1], "true") == 0) { + dest = SDL_TRUE; + return; + } else if (strcmp(attr[1], "false") == 0) { + dest = SDL_FALSE; + return; + } else if (req) { + db_warn("Invalid \"%s\" attribute value", name); + XML_StopParser(p, XML_FALSE); + } + } + } + if (req) { + db_warn("Required attribute \"%s\" not found", name); + XML_StopParser(p, XML_FALSE); + } +} + +void db_xml_get_uint32_attr(XML_Parser p, const char **attr, const char *name, Uint32 *dest, int req) { @@ -29,6 +29,8 @@ void db_xml_unexpected_start_tag(XML_Parser p, const char *found, const char *expected); void db_xml_unexpected_end_tag(XML_Parser p, const char *found, const char *expected); +void db_xml_get_bool_attr(XML_Parser p, const char **attr, const char *name, + SDL_bool *dest, int req); void db_xml_get_int_attr(XML_Parser p, const char **attr, const char *name, int *dest, int req); void db_xml_get_uint32_attr(XML_Parser p, const char **attr, const char *name, |