static int sessionGetIntForProp (xmlNodePtr node, char *prop) { xmlChar *temp; int num; temp = xmlGetProp (node, BAD_CAST prop); if (temp) { num = xmlXPathCastStringToNumber (temp); xmlFree (temp); return num; } return -1; }
/** * exsltMathConstant * @name: string * @precision: number * * Implements the EXSLT - Math constant function: * number math:constant(string, number) * * Returns a number value of the given constant with the given precision or * xmlXPathNAN if name is unknown. * The constants are PI, E, SQRRT2, LN2, LN10, LOG2E, and SQRT1_2 */ static double exsltMathConstant (xmlChar *name, double precision) { xmlChar *str; if ((name == NULL) || (xmlXPathIsNaN(precision)) || (precision < 1.0)) { return xmlXPathNAN; } if (xmlStrEqual(name, BAD_CAST "PI")) { int len = xmlStrlen(EXSLT_PI); if (precision <= len) len = (int)precision; str = xmlStrsub(EXSLT_PI, 0, len); if (str == NULL) return xmlXPathNAN; return xmlXPathCastStringToNumber(str); } else if (xmlStrEqual(name, BAD_CAST "E")) { int len = xmlStrlen(EXSLT_E); if (precision <= len) len = (int)precision; str = xmlStrsub(EXSLT_E, 0, len); if (str == NULL) return xmlXPathNAN; return xmlXPathCastStringToNumber(str); } else if (xmlStrEqual(name, BAD_CAST "SQRRT2")) { int len = xmlStrlen(EXSLT_SQRRT2); if (precision <= len) len = (int)precision; str = xmlStrsub(EXSLT_SQRRT2, 0, len); if (str == NULL) return xmlXPathNAN; return xmlXPathCastStringToNumber(str); } else if (xmlStrEqual(name, BAD_CAST "LN2")) { int len = xmlStrlen(EXSLT_LN2); if (precision <= len) len = (int)precision; str = xmlStrsub(EXSLT_LN2, 0, len); if (str == NULL) return xmlXPathNAN; return xmlXPathCastStringToNumber(str); } else if (xmlStrEqual(name, BAD_CAST "LN10")) { int len = xmlStrlen(EXSLT_LN10); if (precision <= len) len = (int)precision; str = xmlStrsub(EXSLT_LN10, 0, len); if (str == NULL) return xmlXPathNAN; return xmlXPathCastStringToNumber(str); } else if (xmlStrEqual(name, BAD_CAST "LOG2E")) { int len = xmlStrlen(EXSLT_LOG2E); if (precision <= len) len = (int)precision; str = xmlStrsub(EXSLT_LOG2E, 0, len); if (str == NULL) return xmlXPathNAN; return xmlXPathCastStringToNumber(str); } else if (xmlStrEqual(name, BAD_CAST "SQRT1_2")) { int len = xmlStrlen(EXSLT_SQRT1_2); if (precision <= len) len = (int)precision; str = xmlStrsub(EXSLT_SQRT1_2, 0, len); if (str == NULL) return xmlXPathNAN; return xmlXPathCastStringToNumber(str); } else { return xmlXPathNAN; } }