static void s_configurationAttrValueFloat( s_configuration configuration, u_cfElement element, const char *tag, const char *attr, void (* const setAction)(s_configuration config, c_float floatValue)) { c_iter iter; u_cfElement e; u_cfAttribute a; c_float floatValue; c_bool found; iter = u_cfElementXPath(element, tag); e = u_cfElement(c_iterTakeFirst(iter)); while (e != NULL) { a = u_cfElementAttribute(e, attr); if (a) { found = u_cfAttributeFloatValue(a, &floatValue); /* QAC EXPECT 2100; */ if (found == TRUE) { setAction(configuration, floatValue); } u_cfAttributeFree(a); } u_cfElementFree(e); e = u_cfElement(c_iterTakeFirst(iter)); } c_iterFree(iter); }
static c_bool cfgGetPriorityKind( sr_serviceInfo si, u_cfElement info) { c_iter iter; int iterLength; c_bool r; u_cfElement d; c_char * str; r = TRUE; iter = u_cfElementXPath(info, "Scheduling/Priority"); iterLength = c_iterLength(iter); d = u_cfElement(c_iterTakeFirst(iter)); if (iterLength == 1) { r = u_cfElementAttributeStringValue(d, ATTR_PRIOKIND, &str); if (r == TRUE) { if (strcmp(str, PRIOKIND_REL) == 0) { si->priorityKind = V_SCHED_PRIO_RELATIVE; } else { if (strcmp(str, PRIOKIND_ABS) == 0) { si->priorityKind = V_SCHED_PRIO_ABSOLUTE; } else { si->priorityKind = V_SCHED_PRIO_RELATIVE; OS_REPORT_1(OS_WARNING, OSRPT_CNTXT_SPLICED, 0, "Incorrect <Scheduling/Priority[@priority_kind]> attribute for service %s -> default", si->name); r = TRUE; } } os_free(str); } u_cfElementFree(d); } else { if (iterLength == 0) { si->priorityKind = V_SCHED_PRIO_RELATIVE; OS_REPORT_1(OS_INFO, OSRPT_CNTXT_SPLICED, 0, "Taking default for <Scheduling/Priority[@priority_kind]> parameter for service %s", si->name); } else { OS_REPORT_1(OS_ERROR, OSRPT_CNTXT_SPLICED, 0, "One <Scheduling/Priority[@priority_kind]> parameter expected for service %s", si->name); r = FALSE; } while (d != NULL) { u_cfElementFree(d); d = u_cfElement(c_iterTakeFirst(iter)); } } c_iterFree(iter); return r; }
u_cfElement u_cfElementNew( u_participant participant, v_cfElement kElement) { u_cfElement _this = NULL; if ((participant == NULL) || (kElement == NULL)) { OS_REPORT(OS_ERROR, "u_cfElementNew", 0, "Illegal parameter"); } else { _this = u_cfElement(os_malloc(U_CFELEMENT_SIZE)); u_cfNodeInit(u_cfNode(_this),participant,v_cfNode(kElement)); } return _this; }
void u_cfNodeFree ( u_cfNode node) { switch(u_cfNodeKind(node)) { case V_CFELEMENT: u_cfElementFree(u_cfElement(node)); break; case V_CFATTRIBUTE: u_cfAttributeFree(u_cfAttribute(node)); break; case V_CFDATA: u_cfDataFree(u_cfData(node)); break; default: break; } }