X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2Fsvgtiny_css.c;h=eb45ddf41aa53a27ec975a7d8986b1f260811896;hb=aaf569fcb2705f1042f1a581a114f03b77cfda96;hp=265204260f232b7f4326485713a8300597f38d0c;hpb=aefc267cdc8e016c84342f1e2afdd6fc0ad58e64;p=libsvgtiny.git diff --git a/src/svgtiny_css.c b/src/svgtiny_css.c index 2652042..eb45ddf 100644 --- a/src/svgtiny_css.c +++ b/src/svgtiny_css.c @@ -4,6 +4,8 @@ #include "svgtiny_internal.h" static css_error node_name(void *pw, void *node, css_qname *qname); +static css_error node_classes(void *pw, void *node, + lwc_string ***classes, uint32_t *n_classes); /** @@ -101,3 +103,36 @@ css_error node_name(void *pw, void *node, css_qname *qname) return CSS_OK; } + + +/** + * Retrieve the given node's classes + * + * \param pw Pointer to the current SVG parser state + * \param node Libdom SVG node + * \param classes Address at which to store the class name array + * \param n_classes Address at which to store the length of the class + * name array + * + * \return CSS_OK on success, or CSS_NOMEM if anything goes wrong + * + * \note CSS_NOMEM is not possible in practice as of libdom-0.4.1, + * because the underlying libdom function never fails + */ +css_error node_classes(void *pw, void *node, + lwc_string ***classes, uint32_t *n_classes) +{ + UNUSED(pw); + dom_exception err; + + err = dom_element_get_classes((dom_node *)node, classes, n_classes); + + /* The implementation does not do it, but the documentation + for dom_element_get_classes() says that a DOM_NO_MEM_ERR is + possible here, so we handle it to be on the safe side. */ + if (err != DOM_NO_ERR) { + return CSS_NOMEM; + } + + return CSS_OK; +}