* xmlXPtrNewRangeNodeObject: * @start: the starting node * @end: the ending object * * Create a new xmlXPathObjectPtr of type range from a not to an object * * Returns the newly created object. */
| 523 | * Returns the newly created object. |
| 524 | */ |
| 525 | xmlXPathObjectPtr |
| 526 | xmlXPtrNewRangeNodeObject(xmlNodePtr start, xmlXPathObjectPtr end) { |
| 527 | xmlNodePtr endNode; |
| 528 | int endIndex; |
| 529 | xmlXPathObjectPtr ret; |
| 530 | |
| 531 | if (start == NULL) |
| 532 | return(NULL); |
| 533 | if (end == NULL) |
| 534 | return(NULL); |
| 535 | switch (end->type) { |
| 536 | case XPATH_POINT: |
| 537 | endNode = end->user; |
| 538 | endIndex = end->index; |
| 539 | break; |
| 540 | case XPATH_RANGE: |
| 541 | endNode = end->user2; |
| 542 | endIndex = end->index2; |
| 543 | break; |
| 544 | case XPATH_NODESET: |
| 545 | /* |
| 546 | * Empty set ... |
| 547 | */ |
| 548 | if ((end->nodesetval == NULL) || (end->nodesetval->nodeNr <= 0)) |
| 549 | return(NULL); |
| 550 | endNode = end->nodesetval->nodeTab[end->nodesetval->nodeNr - 1]; |
| 551 | endIndex = -1; |
| 552 | break; |
| 553 | default: |
| 554 | /* TODO */ |
| 555 | return(NULL); |
| 556 | } |
| 557 | |
| 558 | ret = xmlXPtrNewRangeInternal(start, -1, endNode, endIndex); |
| 559 | xmlXPtrRangeCheckOrder(ret); |
| 560 | return(ret); |
| 561 | } |
| 562 | |
| 563 | #define XML_RANGESET_DEFAULT 10 |
| 564 |
nothing calls this directly
no test coverage detected