Lines Matching +defs:val +defs:obj
80 * If defined, this will optimize expressions like "key('foo', 'val')[b][1]"
140 * @val: a double value
149 xmlXPathIsNaN(double val) {
150 return(trio_isnan(val));
155 * @val: a double value
164 xmlXPathIsInf(double val) {
165 return(trio_isinf(val));
172 * @val: a double value
181 xmlXPathGetSign(double val) {
182 return(trio_signbit(val));
596 xmlXPathFreeValueTree(xmlNodeSetPtr obj);
598 xmlXPathReleaseObject(xmlXPathContextPtr ctxt, xmlXPathObjectPtr obj);
793 #define PUSH_FULL_EXPR(op, op1, op2, val, val2, val3, val4, val5) \
795 (op), (val), (val2), (val3), (val4), (val5))
796 #define PUSH_LONG_EXPR(op, val, val2, val3, val4, val5) \
798 (op), (val), (val2), (val3), (val4), (val5))
800 #define PUSH_LEAVE_EXPR(op, val, val2) \
801 xmlXPathCompExprAdd(ctxt->comp, -1, -1, (op), (val), (val2), 0 ,NULL ,NULL)
803 #define PUSH_UNARY_EXPR(op, ch, val, val2) \
804 xmlXPathCompExprAdd(ctxt->comp, (ch), -1, (op), (val), (val2), 0 ,NULL ,NULL)
806 #define PUSH_BINARY_EXPR(op, ch1, ch2, val, val2) \
808 (val), (val2), 0 ,NULL ,NULL)
1814 xmlXPathObjectPtr obj;
1820 obj = list->items[i];
1825 if (obj->nodesetval != NULL) {
1826 if (obj->nodesetval->nodeTab != NULL)
1827 xmlFree(obj->nodesetval->nodeTab);
1828 xmlFree(obj->nodesetval);
1830 xmlFree(obj);
1914 * @val: the NodePtr value
1917 * Wrap the Nodeset @val in a new xmlXPathObjectPtr
1922 xmlXPathCacheWrapNodeSet(xmlXPathContextPtr ctxt, xmlNodeSetPtr val)
1936 ret->nodesetval = val;
1944 return(xmlXPathWrapNodeSet(val));
1951 * @val: the xmlChar * value
1954 * Wraps the @val string into an XPath object.
1959 xmlXPathCacheWrapString(xmlXPathContextPtr ctxt, xmlChar *val)
1973 ret->stringval = val;
1989 ret->stringval = val;
1996 return(xmlXPathWrapString(val));
2002 * @val: the NodePtr value
2006 * it with the single Node @val
2011 xmlXPathCacheNewNodeSet(xmlXPathContextPtr ctxt, xmlNodePtr val)
2027 if (val) {
2029 (val->type == XML_NAMESPACE_DECL))
2031 xmlXPathNodeSetAddUnique(ret->nodesetval, val);
2033 ret->nodesetval->nodeTab[0] = val;
2054 ret->nodesetval = xmlXPathNodeSetCreate(val);
2061 return(xmlXPathNewNodeSet(val));
2067 * @val: the char * value
2070 * Acquire an xmlXPathObjectPtr of type string and of value @val
2075 xmlXPathCacheNewCString(xmlXPathContextPtr ctxt, const char *val)
2089 ret->stringval = xmlStrdup(BAD_CAST val);
2103 ret->stringval = xmlStrdup(BAD_CAST val);
2110 return(xmlXPathNewCString(val));
2116 * @val: the xmlChar * value
2119 * Acquire an xmlXPathObjectPtr of type string and of value @val
2124 xmlXPathCacheNewString(xmlXPathContextPtr ctxt, const xmlChar *val)
2137 if (val != NULL)
2138 ret->stringval = xmlStrdup(val);
2154 if (val != NULL)
2155 ret->stringval = xmlStrdup(val);
2164 return(xmlXPathNewString(val));
2170 * @val: the boolean value
2173 * Acquires an xmlXPathObjectPtr of type boolean and of value @val
2178 xmlXPathCacheNewBoolean(xmlXPathContextPtr ctxt, int val)
2191 ret->boolval = (val != 0);
2205 ret->boolval = (val != 0);
2212 return(xmlXPathNewBoolean(val));
2218 * @val: the double value
2221 * Acquires an xmlXPathObjectPtr of type double and of value @val
2226 xmlXPathCacheNewFloat(xmlXPathContextPtr ctxt, double val)
2239 ret->floatval = val;
2253 ret->floatval = val;
2260 return(xmlXPathNewFloat(val));
2266 * @val: an XPath object
2272 * (or the operation is done directly on @val)
2276 xmlXPathCacheConvertString(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) {
2279 if (val == NULL)
2282 switch (val->type) {
2290 res = xmlXPathCastNodeSetToString(val->nodesetval);
2293 return(val);
2295 res = xmlXPathCastBooleanToString(val->boolval);
2298 res = xmlXPathCastNumberToString(val->floatval);
2307 xmlXPathReleaseObject(ctxt, val);
2316 * @val: the original object
2324 xmlXPathCacheObjectCopy(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val)
2326 if (val == NULL)
2330 switch (val->type) {
2333 xmlXPathNodeSetMerge(NULL, val->nodesetval)));
2335 return(xmlXPathCacheNewString(ctxt, val->stringval));
2337 return(xmlXPathCacheNewBoolean(ctxt, val->boolval));
2339 return(xmlXPathCacheNewFloat(ctxt, val->floatval));
2344 return(xmlXPathObjectCopy(val));
2350 * @val: an XPath object
2356 * is done directly on @val)
2359 xmlXPathCacheConvertBoolean(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) {
2362 if (val == NULL)
2364 if (val->type == XPATH_BOOLEAN)
2365 return(val);
2366 ret = xmlXPathCacheNewBoolean(ctxt, xmlXPathCastToBoolean(val));
2367 xmlXPathReleaseObject(ctxt, val);
2374 * @val: an XPath object
2380 * is done directly on @val)
2383 xmlXPathCacheConvertNumber(xmlXPathContextPtr ctxt, xmlXPathObjectPtr val) {
2386 if (val == NULL)
2388 if (val->type == XPATH_NUMBER)
2389 return(val);
2390 ret = xmlXPathCacheNewFloat(ctxt, xmlXPathCastToNumber(val));
2391 xmlXPathReleaseObject(ctxt, val);
2510 xmlXPathObjectPtr obj;
2513 obj = valuePop(ctxt);
2514 if (obj == NULL) {
2518 if (obj->type != XPATH_BOOLEAN)
2519 ret = xmlXPathCastToBoolean(obj);
2521 ret = obj->boolval;
2522 xmlXPathReleaseObject(ctxt->context, obj);
2537 xmlXPathObjectPtr obj;
2540 obj = valuePop(ctxt);
2541 if (obj == NULL) {
2545 if (obj->type != XPATH_NUMBER)
2546 ret = xmlXPathCastToNumber(obj);
2548 ret = obj->floatval;
2549 xmlXPathReleaseObject(ctxt->context, obj);
2564 xmlXPathObjectPtr obj;
2567 obj = valuePop(ctxt);
2568 if (obj == NULL) {
2572 ret = xmlXPathCastToString(obj); /* this does required strdup */
2574 if (obj->stringval == ret)
2575 obj->stringval = NULL;
2576 xmlXPathReleaseObject(ctxt->context, obj);
2591 xmlXPathObjectPtr obj;
2603 obj = valuePop(ctxt);
2604 ret = obj->nodesetval;
2606 /* to fix memory leak of not clearing obj->user */
2607 if (obj->boolval && obj->user != NULL)
2608 xmlFreeNodeList((xmlNodePtr) obj->user);
2610 obj->nodesetval = NULL;
2611 xmlXPathReleaseObject(ctxt->context, obj);
2626 xmlXPathObjectPtr obj;
2637 obj = valuePop(ctxt);
2638 ret = obj->user;
2639 obj->user = NULL;
2640 xmlXPathReleaseObject(ctxt->context, obj);
2668 #define SKIP(val) ctxt->cur += (val)
2669 #define NXT(val) ctxt->cur[(val)]
3417 * @val: an initial xmlNodePtr, or NULL
3419 * Create a new xmlNodeSetPtr of type double and of value @val
3424 xmlXPathNodeSetCreate(xmlNodePtr val) {
3433 if (val != NULL) {
3444 if (val->type == XML_NAMESPACE_DECL) {
3445 xmlNsPtr ns = (xmlNsPtr) val;
3450 ret->nodeTab[ret->nodeNr++] = val;
3459 * Create a new xmlNodeSetPtr of type double and of value @val
3489 * @val: the node
3491 * checks whether @cur contains @val
3493 * Returns true (1) if @cur contains @val, false (0) otherwise
3496 xmlXPathNodeSetContains (xmlNodeSetPtr cur, xmlNodePtr val) {
3499 if ((cur == NULL) || (val == NULL)) return(0);
3500 if (val->type == XML_NAMESPACE_DECL) {
3505 ns1 = (xmlNsPtr) val;
3516 if (cur->nodeTab[i] == val)
3584 * @val: a new xmlNodePtr
3589 xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xmlNodePtr val) {
3592 if ((cur == NULL) || (val == NULL)) return;
3595 if ((val->type == XML_ELEMENT_NODE) && (val->name[0] == ' '))
3604 if (cur->nodeTab[i] == val) return;
3631 if (val->type == XML_NAMESPACE_DECL) {
3632 xmlNsPtr ns = (xmlNsPtr) val;
3637 cur->nodeTab[cur->nodeNr++] = val;
3643 * @val: a new xmlNodePtr
3649 xmlXPathNodeSetAddUnique(xmlNodeSetPtr cur, xmlNodePtr val) {
3650 if ((cur == NULL) || (val == NULL)) return;
3653 if ((val->type == XML_ELEMENT_NODE) && (val->name[0] == ' '))
3683 if (val->type == XML_NAMESPACE_DECL) {
3684 xmlNsPtr ns = (xmlNsPtr) val;
3689 cur->nodeTab[cur->nodeNr++] = val;
4049 * @val: an xmlNodePtr
4054 xmlXPathNodeSetDel(xmlNodeSetPtr cur, xmlNodePtr val) {
4058 if (val == NULL) return;
4064 if (cur->nodeTab[i] == val) break;
4070 val->name);
4086 * @val: the index to remove
4091 xmlXPathNodeSetRemove(xmlNodeSetPtr cur, int val) {
4093 if (val >= cur->nodeNr) return;
4094 if ((cur->nodeTab[val] != NULL) &&
4095 (cur->nodeTab[val]->type == XML_NAMESPACE_DECL))
4096 xmlXPathNodeSetFreeNs((xmlNsPtr) cur->nodeTab[val]);
4098 for (;val < cur->nodeNr;val++)
4099 cur->nodeTab[val] = cur->nodeTab[val + 1];
4105 * @obj: the xmlNodeSetPtr to free
4110 xmlXPathFreeNodeSet(xmlNodeSetPtr obj) {
4111 if (obj == NULL) return;
4112 if (obj->nodeTab != NULL) {
4116 for (i = 0;i < obj->nodeNr;i++)
4117 if ((obj->nodeTab[i] != NULL) &&
4118 (obj->nodeTab[i]->type == XML_NAMESPACE_DECL))
4119 xmlXPathNodeSetFreeNs((xmlNsPtr) obj->nodeTab[i]);
4120 xmlFree(obj->nodeTab);
4122 xmlFree(obj);
4182 * @obj: the xmlNodeSetPtr to free
4188 xmlXPathFreeValueTree(xmlNodeSetPtr obj) {
4191 if (obj == NULL) return;
4193 if (obj->nodeTab != NULL) {
4194 for (i = 0;i < obj->nodeNr;i++) {
4195 if (obj->nodeTab[i] != NULL) {
4196 if (obj->nodeTab[i]->type == XML_NAMESPACE_DECL) {
4197 xmlXPathNodeSetFreeNs((xmlNsPtr) obj->nodeTab[i]);
4199 xmlFreeNodeList(obj->nodeTab[i]);
4203 xmlFree(obj->nodeTab);
4205 xmlFree(obj);
4212 * @obj: the xmlNodeSetPtr to display
4217 xmlGenericErrorContextNodeSet(FILE *output, xmlNodeSetPtr obj) {
4221 if (obj == NULL) {
4225 if (obj->nodeNr == 0) {
4229 if (obj->nodeTab == NULL) {
4233 for (i = 0; i < obj->nodeNr; i++) {
4234 if (obj->nodeTab[i] == NULL) {
4238 if ((obj->nodeTab[i]->type == XML_DOCUMENT_NODE) ||
4239 (obj->nodeTab[i]->type == XML_HTML_DOCUMENT_NODE))
4241 else if (obj->nodeTab[i]->name == NULL)
4243 else fprintf(output, " %s", obj->nodeTab[i]->name);
4251 * @val: the NodePtr value
4254 * it with the single Node @val
4259 xmlXPathNewNodeSet(xmlNodePtr val) {
4270 ret->nodesetval = xmlXPathNodeSetCreate(val);
4280 * @val: the NodePtr value
4283 * it with the tree root @val
4288 xmlXPathNewValueTree(xmlNodePtr val) {
4299 ret->user = (void *) val;
4300 ret->nodesetval = xmlXPathNodeSetCreate(val);
4309 * @val: an existing NodeSet
4312 * it with the Nodeset @val
4317 xmlXPathNewNodeSetList(xmlNodeSetPtr val)
4322 if (val == NULL)
4324 else if (val->nodeTab == NULL)
4327 ret = xmlXPathNewNodeSet(val->nodeTab[0]);
4328 for (i = 1; i < val->nodeNr; ++i)
4329 xmlXPathNodeSetAddUnique(ret->nodesetval, val->nodeTab[i]);
4337 * @val: the NodePtr value
4339 * Wrap the Nodeset @val in a new xmlXPathObjectPtr
4344 xmlXPathWrapNodeSet(xmlNodeSetPtr val) {
4354 ret->nodesetval = val;
4363 * @obj: an existing NodeSetList object
4365 * Free up the xmlXPathObjectPtr @obj but don't deallocate the objects in
4369 xmlXPathFreeNodeSetList(xmlXPathObjectPtr obj) {
4370 if (obj == NULL) return;
4372 xmlXPathDebugObjUsageReleased(NULL, obj->type);
4374 xmlFree(obj);
5120 * @val: the double value
5122 * Create a new xmlXPathObjectPtr of type double and of value @val
5127 xmlXPathNewFloat(double val) {
5137 ret->floatval = val;
5146 * @val: the boolean value
5148 * Create a new xmlXPathObjectPtr of type boolean and of value @val
5153 xmlXPathNewBoolean(int val) {
5163 ret->boolval = (val != 0);
5172 * @val: the xmlChar * value
5174 * Create a new xmlXPathObjectPtr of type string and of value @val
5179 xmlXPathNewString(const xmlChar *val) {
5189 if (val != NULL)
5190 ret->stringval = xmlStrdup(val);
5201 * @val: the xmlChar * value
5203 * Wraps the @val string into an XPath object.
5208 xmlXPathWrapString (xmlChar *val) {
5218 ret->stringval = val;
5227 * @val: the char * value
5229 * Create a new xmlXPathObjectPtr of type string and of value @val
5234 xmlXPathNewCString(const char *val) {
5244 ret->stringval = xmlStrdup(BAD_CAST val);
5253 * @val: the char * value
5260 xmlXPathWrapCString (char * val) {
5261 return(xmlXPathWrapString((xmlChar *)(val)));
5266 * @val: the user data
5268 * Wraps the @val data into an XPath object.
5273 xmlXPathWrapExternal (void *val) {
5283 ret->user = val;
5292 * @val: the original object
5299 xmlXPathObjectCopy(xmlXPathObjectPtr val) {
5302 if (val == NULL)
5310 memcpy(ret, val , (size_t) sizeof(xmlXPathObject));
5312 xmlXPathDebugObjUsageRequested(NULL, val->type);
5314 switch (val->type) {
5321 ret->stringval = xmlStrdup(val->stringval);
5330 if ((val->nodesetval != NULL) &&
5331 (val->nodesetval->nodeTab != NULL)) {
5338 xmlStrdup(val->nodesetval->nodeTab[0]->name);
5342 cur = val->nodesetval->nodeTab[0]->children;
5357 ret->nodesetval = xmlXPathNodeSetMerge(NULL, val->nodesetval);
5364 xmlLocationSetPtr loc = val->user;
5370 ret->user = val->user;
5375 val->type);
5383 * @obj: the object to free
5388 xmlXPathFreeObject(xmlXPathObjectPtr obj) {
5389 if (obj == NULL) return;
5390 if ((obj->type == XPATH_NODESET) || (obj->type == XPATH_XSLT_TREE)) {
5391 if (obj->boolval) {
5393 if (obj->user != NULL) {
5394 xmlXPathFreeNodeSet(obj->nodesetval);
5395 xmlFreeNodeList((xmlNodePtr) obj->user);
5398 obj->type = XPATH_XSLT_TREE; /* TODO: Just for debugging. */
5399 if (obj->nodesetval != NULL)
5400 xmlXPathFreeValueTree(obj->nodesetval);
5402 if (obj->nodesetval != NULL)
5403 xmlXPathFreeNodeSet(obj->nodesetval);
5406 } else if (obj->type == XPATH_LOCATIONSET) {
5407 if (obj->user != NULL)
5408 xmlXPtrFreeLocationSet(obj->user);
5410 } else if (obj->type == XPATH_STRING) {
5411 if (obj->stringval != NULL)
5412 xmlFree(obj->stringval);
5415 xmlXPathDebugObjUsageReleased(NULL, obj->type);
5417 xmlFree(obj);
5422 * @obj: the xmlXPathObjectPtr to free or to cache
5428 xmlXPathReleaseObject(xmlXPathContextPtr ctxt, xmlXPathObjectPtr obj)
5432 if (xmlPointerListAddSize(sl, obj, 0) == -1) goto free_obj;
5436 if (obj == NULL)
5439 xmlXPathFreeObject(obj);
5444 switch (obj->type) {
5447 if (obj->nodesetval != NULL) {
5448 if (obj->boolval) {
5454 obj->type = XPATH_XSLT_TREE; /* just for debugging */
5455 xmlXPathFreeValueTree(obj->nodesetval);
5456 obj->nodesetval = NULL;
5457 } else if ((obj->nodesetval->nodeMax <= 40) &&
5461 XP_CACHE_ADD(cache->nodesetObjs, obj);
5464 xmlXPathFreeNodeSet(obj->nodesetval);
5465 obj->nodesetval = NULL;
5470 if (obj->stringval != NULL)
5471 xmlFree(obj->stringval);
5474 XP_CACHE_ADD(cache->stringObjs, obj);
5480 XP_CACHE_ADD(cache->booleanObjs, obj);
5486 XP_CACHE_ADD(cache->numberObjs, obj);
5492 if (obj->user != NULL) {
5493 xmlXPtrFreeLocationSet(obj->user);
5505 XP_CACHE_ADD(cache->miscObjs, obj);
5512 xmlXPathDebugObjUsageReleased(ctxt, obj->type);
5515 if (obj->nodesetval != NULL) {
5516 xmlNodeSetPtr tmpset = obj->nodesetval;
5542 memset(obj, 0, sizeof(xmlXPathObject));
5543 obj->nodesetval = tmpset;
5545 memset(obj, 0, sizeof(xmlXPathObject));
5553 if (obj->nodesetval != NULL)
5554 xmlXPathFreeNodeSet(obj->nodesetval);
5556 xmlXPathDebugObjUsageReleased(NULL, obj->type);
5558 xmlFree(obj);
5572 * @val: a boolean
5579 xmlXPathCastBooleanToString (int val) {
5581 if (val)
5590 * @val: a number
5597 xmlXPathCastNumberToString (double val) {
5599 switch (xmlXPathIsInf(val)) {
5607 if (xmlXPathIsNaN(val)) {
5609 } else if (val == 0 && xmlXPathGetSign(val) != 0) {
5614 xmlXPathFormatNumber(val, buf, 99);
5658 * @val: an XPath object
5666 xmlXPathCastToString(xmlXPathObjectPtr val) {
5669 if (val == NULL)
5671 switch (val->type) {
5680 ret = xmlXPathCastNodeSetToString(val->nodesetval);
5683 return(xmlStrdup(val->stringval));
5685 ret = xmlXPathCastBooleanToString(val->boolval);
5688 ret = xmlXPathCastNumberToString(val->floatval);
5704 * @val: an XPath object
5709 * is done directly on @val)
5712 xmlXPathConvertString(xmlXPathObjectPtr val) {
5715 if (val == NULL)
5718 switch (val->type) {
5726 res = xmlXPathCastNodeSetToString(val->nodesetval);
5729 return(val);
5731 res = xmlXPathCastBooleanToString(val->boolval);
5734 res = xmlXPathCastNumberToString(val->floatval);
5743 xmlXPathFreeObject(val);
5751 * @val: a boolean
5758 xmlXPathCastBooleanToNumber(int val) {
5759 if (val)
5766 * @val: a string
5773 xmlXPathCastStringToNumber(const xmlChar * val) {
5774 return(xmlXPathStringEvalNumber(val));
5824 * @val: an XPath object
5831 xmlXPathCastToNumber(xmlXPathObjectPtr val) {
5834 if (val == NULL)
5836 switch (val->type) {
5845 ret = xmlXPathCastNodeSetToNumber(val->nodesetval);
5848 ret = xmlXPathCastStringToNumber(val->stringval);
5851 ret = val->floatval;
5854 ret = xmlXPathCastBooleanToNumber(val->boolval);
5869 * @val: an XPath object
5874 * is done directly on @val)
5877 xmlXPathConvertNumber(xmlXPathObjectPtr val) {
5880 if (val == NULL)
5882 if (val->type == XPATH_NUMBER)
5883 return(val);
5884 ret = xmlXPathNewFloat(xmlXPathCastToNumber(val));
5885 xmlXPathFreeObject(val);
5891 * @val: a number
5898 xmlXPathCastNumberToBoolean (double val) {
5899 if (xmlXPathIsNaN(val) || (val == 0.0))
5906 * @val: a string
5913 xmlXPathCastStringToBoolean (const xmlChar *val) {
5914 if ((val == NULL) || (xmlStrlen(val) == 0))
5936 * @val: an XPath object
5943 xmlXPathCastToBoolean (xmlXPathObjectPtr val) {
5946 if (val == NULL)
5948 switch (val->type) {
5957 ret = xmlXPathCastNodeSetToBoolean(val->nodesetval);
5960 ret = xmlXPathCastStringToBoolean(val->stringval);
5963 ret = xmlXPathCastNumberToBoolean(val->floatval);
5966 ret = val->boolval;
5982 * @val: an XPath object
5987 * is done directly on @val)
5990 xmlXPathConvertBoolean(xmlXPathObjectPtr val) {
5993 if (val == NULL)
5995 if (val->type == XPATH_BOOLEAN)
5996 return(val);
5997 ret = xmlXPathNewBoolean(xmlXPathCastToBoolean(val));
5998 xmlXPathFreeObject(val);
6366 * @ns < @val (1, 1, ...
6367 * @ns <= @val (1, 0, ...
6368 * @ns > @val (0, 1, ...
6369 * @ns >= @val (0, 0, ...
6422 * @ns < @val (1, 1, ...
6423 * @ns <= @val (1, 0, ...
6424 * @ns > @val (0, 1, ...
6425 * @ns >= @val (0, 0, ...
6575 * @val: the value
6578 * @ns < @val (1, 1, ...
6579 * @ns <= @val (1, 0, ...
6580 * @ns > @val (0, 1, ...
6581 * @ns >= @val (0, 0, ...
6592 xmlXPathObjectPtr arg, xmlXPathObjectPtr val) {
6593 if ((val == NULL) || (arg == NULL) ||
6597 switch(val->type) {
6599 return(xmlXPathCompareNodeSetFloat(ctxt, inf, strict, arg, val));
6602 return(xmlXPathCompareNodeSets(inf, strict, arg, val));
6604 return(xmlXPathCompareNodeSetString(ctxt, inf, strict, arg, val));
6608 valuePush(ctxt, val);
6695 xmlXPathObjectPtr val;
6710 val = valuePop(ctxt);
6711 v = val->floatval;
6712 xmlXPathReleaseObject(ctxt->context, val);
7382 double val;
7387 val = xmlXPathCastToNumber(arg);
7391 ctxt->value->floatval += val;
7405 double val;
7410 val = xmlXPathCastToNumber(arg);
7414 ctxt->value->floatval -= val;
7428 double val;
7433 val = xmlXPathCastToNumber(arg);
7437 ctxt->value->floatval *= val;
7451 double val;
7456 val = xmlXPathCastToNumber(arg);
7460 if (xmlXPathIsNaN(val) || xmlXPathIsNaN(ctxt->value->floatval))
7462 else if (val == 0 && xmlXPathGetSign(val) != 0) {
7470 else if (val == 0) {
7478 ctxt->value->floatval /= val;
8550 xmlXPathObjectPtr obj;
8553 obj = valuePop(ctxt);
8554 if (obj == NULL) XP_ERROR(XPATH_INVALID_OPERAND);
8555 if ((obj->type == XPATH_NODESET) || (obj->type == XPATH_XSLT_TREE)) {
8561 if (obj->nodesetval != NULL) {
8562 for (i = 0; i < obj->nodesetval->nodeNr; i++) {
8564 xmlXPathCastNodeToString(obj->nodesetval->nodeTab[i]);
8572 xmlXPathReleaseObject(ctxt->context, obj);
8576 obj = xmlXPathCacheConvertString(ctxt->context, obj);
8577 ret = xmlXPathGetElementsByIds(ctxt->context->doc, obj->stringval);
8579 xmlXPathReleaseObject(ctxt->context, obj);
9208 xmlXPathObjectPtr obj = NULL;
9225 obj = valuePop(ctxt);
9226 source = obj->stringval;
9253 xmlXPathReleaseObject(ctxt->context, obj);
9435 xmlXPathObjectPtr val = NULL;
9444 val = valuePop(ctxt);
9445 lang = val->stringval;
9458 xmlXPathReleaseObject(ctxt->context, val);
9674 unsigned int val;
9706 val = (cur[0] & 0x7) << 18;
9707 val |= (cur[1] & 0x3f) << 12;
9708 val |= (cur[2] & 0x3f) << 6;
9709 val |= cur[3] & 0x3f;
9713 val = (cur[0] & 0xf) << 12;
9714 val |= (cur[1] & 0x3f) << 6;
9715 val |= cur[2] & 0x3f;
9720 val = (cur[0] & 0x1f) << 6;
9721 val |= cur[1] & 0x3f;
9723 if (!IS_CHAR(val)) {
9726 return(val);
11969 xmlXPathObjectPtr obj;
12000 obj = valuePop(ctxt);
12007 xmlXPathReleaseObject(xpctxt, obj);
12105 (obj->nodesetval != NULL) ? obj->nodsetval->nodeNr : 0);
12109 xmlXPathReleaseObject(xpctxt, obj);
12112 contextSeq = obj->nodesetval;
12114 xmlXPathReleaseObject(xpctxt, obj);
12533 if ((obj->boolval) && (obj->user != NULL)) {
12540 ctxt->value->user = obj->user;
12541 obj->user = NULL;
12542 obj->boolval = 0;
12544 xmlXPathReleaseObject(xpctxt, obj);
12843 xmlXPathObjectPtr obj;
12919 obj = valuePop(ctxt);
12920 oldlocset = obj->user;
12932 valuePush(ctxt, obj);
12957 xmlXPathFreeObject(obj);
13001 xmlXPathReleaseObject(ctxt->context, obj);
13017 obj = valuePop(ctxt);
13018 oldset = obj->nodesetval;
13037 valuePush(ctxt, obj);
13073 xmlXPathFreeObject(obj);
13115 xmlXPathReleaseObject(ctxt->context, obj);
13354 xmlXPathObjectPtr val;
13360 val = xmlXPathVariableLookup(ctxt->context, op->value4);
13361 if (val == NULL) {
13365 valuePush(ctxt, val);
13377 val = xmlXPathVariableLookupNS(ctxt->context,
13379 if (val == NULL) {
13383 valuePush(ctxt, val);
13475 xmlXPathObjectPtr obj, tmp;
13502 xmlXPathObjectPtr val;
13504 val = comp->steps[op->ch2].value4;
13505 if ((val != NULL) && (val->type == XPATH_NUMBER) &&
13506 (val->floatval == 1.0)) {
13604 obj = valuePop(ctxt);
13605 oldlocset = obj->user;
13619 valuePush(ctxt, obj);
13642 xmlXPathFreeObject(obj);
13674 xmlXPathReleaseObject(ctxt->context, obj);
13690 obj = valuePop(ctxt);
13691 oldset = obj->nodesetval;
13710 valuePush(ctxt, obj);
13777 xmlXPathFreeObject(obj);
13817 xmlXPathReleaseObject(ctxt->context, obj);
13844 xmlXPathObjectPtr res, obj;
13864 obj = valuePop(ctxt);
13865 oldlocset = obj->user;
13876 valuePush(ctxt, obj);
13899 xmlXPathFreeObject(obj);
13940 obj = valuePop(ctxt);
13941 oldset = obj->nodesetval;
13965 xmlXPathFreeObject(obj);
13996 xmlXPathReleaseObject(ctxt->context, obj);