20 #define STRCMP(a, b) ((Sct = *(a) - *(b)) ? Sct : strcmp((a), (b)))
22 #define STRCMP(a, b) (a - b)
39 template <
typename SPBLK>
55 #define spinit sptq_spinit
56 #define spempty sptq_spempty
57 #define spenq sptq_spenq
58 #define spdeq sptq_spdeq
59 #define spenqprior sptq_spenqprior
60 #define splay sptq_splay
61 #define sphead sptq_sphead
62 #define spdelete sptq_spdelete
63 #define spnext sptq_spnext
64 #define spprev sptq_spprev
65 #define spenqbefore sptq_spenqbefore
66 #define spenqafter sptq_spenqafter
67 #define splookup sptq_splookup
69 #define sptail sptq_sptail
70 #define spscan sptq_spscan
71 #define sprscan sptq_sprscan
72 #define spfhead sptq_spfhead
73 #define spfnext sptq_spfnext
74 #define spfprev sptq_spfprev
75 #define spstats sptq_spstats
135 template <
typename SPBLK>
150 template <
typename SPBLK>
168 template <
typename SPBLK>
204 temp =
next->rightlink;
221 next->rightlink = temp->leftlink;
222 if (temp->leftlink !=
NULL)
223 temp->leftlink->uplink =
next;
224 left->rightlink = temp;
226 temp->leftlink =
next;
229 next = temp->rightlink;
243 temp =
next->leftlink;
259 next->leftlink = temp->rightlink;
260 if (temp->rightlink !=
NULL)
261 temp->rightlink->uplink =
next;
262 right->leftlink = temp;
263 temp->uplink =
right;
264 temp->rightlink =
next;
267 next = temp->leftlink;
282 n->leftlink =
n->rightlink;
286 #if BBTQ != 4 && BBTQ != 5
303 template <
typename SPBLK>
320 *np =
next->rightlink;
323 (*np)->uplink =
NULL;
329 farleft =
left->leftlink;
330 if (farleft ==
NULL) {
339 farfarleft = farleft->leftlink;
340 if (farfarleft ==
NULL) {
342 left->leftlink = farleft->rightlink;
343 if (farleft->rightlink !=
NULL)
344 farleft->rightlink->uplink =
left;
349 next->leftlink = farleft;
350 farleft->uplink =
next;
351 left->leftlink = farleft->rightlink;
352 if (farleft->rightlink !=
NULL)
353 farleft->rightlink->uplink =
left;
354 farleft->rightlink =
left;
355 left->uplink = farleft;
380 template <
typename SPBLK>
413 temp =
next->rightlink;
427 next->rightlink = temp->leftlink;
428 if (temp->leftlink !=
NULL)
429 temp->leftlink->uplink =
next;
430 left->rightlink = temp;
432 temp->leftlink =
next;
435 next = temp->rightlink;
447 temp =
next->leftlink;
461 next->leftlink = temp->rightlink;
462 if (temp->rightlink !=
NULL)
463 temp->rightlink->uplink =
next;
464 right->leftlink = temp;
465 temp->uplink =
right;
466 temp->rightlink =
next;
469 next = temp->leftlink;
482 n->leftlink =
n->rightlink;
506 template <
typename SPBLK>
515 #if BBTQ != 4 && BBTQ != 5
533 if (up->leftlink ==
prev)
535 if (upup !=
NULL && upup->leftlink == up)
537 upupup = upup->uplink;
538 upup->leftlink = up->rightlink;
539 if (upup->leftlink !=
NULL)
540 upup->leftlink->uplink = upup;
541 up->rightlink = upup;
545 else if (upupup->leftlink == upup)
546 upupup->leftlink = up;
548 upupup->rightlink = up;
552 up->leftlink =
right;
559 if (upup !=
NULL && upup->rightlink == up)
561 upupup = upup->uplink;
562 upup->rightlink = up->leftlink;
563 if (upup->rightlink !=
NULL)
564 upup->rightlink->uplink = upup;
569 else if (upupup->rightlink == upup)
570 upupup->rightlink = up;
572 upupup->leftlink = up;
576 up->rightlink =
left;
586 if (
q->root !=
prev) {
692 template <
typename SPBLK>
699 x->rightlink =
q->root;
712 while( x->leftlink !=
NULL )
729 template <
typename SPBLK>
734 x =
spdeq(&
q->root->rightlink);
737 q->root =
q->root->leftlink;
739 q->root->uplink =
NULL;
743 x->leftlink =
q->root->leftlink;
744 x->rightlink =
q->root->rightlink;
745 if (x->leftlink !=
NULL)
746 x->leftlink->uplink = x;
747 if (x->rightlink !=
NULL)
748 x->rightlink->uplink = x;
765 template <
typename SPBLK>
776 x->rightlink =
n->rightlink;
778 if (x->rightlink !=
NULL)
779 x->rightlink->uplink = x;
792 while( x->leftlink !=
NULL )
814 template <
typename SPBLK>
825 while (x->rightlink !=
NULL)
847 template <
typename SPBLK>
851 n->leftlink = n1->leftlink;
852 if (
n->leftlink !=
NULL)
853 n->leftlink->uplink =
n;
873 template <
typename SPBLK>
877 n->rightlink = n1->rightlink;
878 if (
n->rightlink !=
NULL)
879 n->rightlink->uplink =
n;
917 template <
typename SPBLK>
928 while (
n && (Sct =
key !=
n->key)) {
930 n = (Sct < 0) ?
n->leftlink :
n->rightlink;
970 #if BBTQ != 4 && BBTQ != 5
992 template <
typename SPBLK>
996 if (
NULL != (x =
q->root))
997 while (x->leftlink !=
NULL)
1011 template <
typename SPBLK>
1016 if (
NULL != (x =
q->root))
1017 while (x->rightlink !=
NULL)
1034 template <
typename SPBLK>
1050 template <
typename SPBLK>
1066 template <
typename SPBLK>
1080 while (x->leftlink !=
NULL)
1088 if (x->leftlink ==
n) {
1110 template <
typename SPBLK>
1124 while (x->rightlink !=
NULL)
1131 if (x->rightlink ==
n) {
1146 template <
typename SPBLK>
1148 static char buf[128];
1156 llen =
q->lookups ? (float)
q->lkpcmps /
q->lookups : 0;
1157 elen =
q->enqs ? (
float)
q->enqcmps /
q->enqs : 0;
1158 sloops =
q->splays ? (float)
q->splayloops /
q->splays : 0;
1161 "f(%d %4.2f) i(%d %4.2f) s(%d %4.2f)",
1169 return (
const char*)
buf;
sprintf(buf, " if (secondorder) {\n" " int _i;\n" " for (_i = 0; _i < %d; ++_i) {\n" " _p[_slist%d[_i]] += dt*_p[_dlist%d[_i]];\n" " }}\n", numeqn, listnum, listnum)
char * emalloc(unsigned n)
int const size_t const size_t n
static double done(void *v)
SPBLK * spftail(SPTREE< SPBLK > *q)