14 #define leftlink left_ 15 #define rightlink right_ 16 #define uplink parent_ 43 for (i=0; i < level; ++
i) {
57 tpool_ =
new TQItemPool(1000);
63 #if COLLECT_TQueue_STATISTICS 64 nmove = ninsert = nrem = nleast = nbal = ncmplxrem = 0;
65 nfastmove = ncompare = nleastsrch = nfind = nfindsrch = 0;
71 while((q =
spdeq(&sptree_->root)) !=
nil) {
115 TQItem* TQueue::second_least(
double t) {
118 if (b && b->
t_ == t) {
133 least_ =
spdeq(&sptree_->root);
148 }
else if (tnew < least_->
t_) {
151 spenq(least_, sptree_);
163 #if COLLECT_TQueue_STATISTICS 164 Printf(
"insertions=%lu moves=%lu removals=%lu calls to least=%lu\n",
165 ninsert, nmove, nrem, nleast);
166 Printf(
"calls to find=%lu\n",
168 Printf(
"comparisons=%lu\n",
171 Printf(
"Turn on COLLECT_TQueue_STATISTICS_ in tqueue.h\n");
176 #if COLLECT_TQueue_STATISTICS 185 TQItem* i = tpool_->alloc();
210 least_ =
spdeq(&sptree_->root);
227 if (t == least_t()) {
static void prnt(const TQItem *b, int level)
SPBLK * spdeq(SPBLK **np)
void spdelete(SPBLK *n, SPTREE< SPBLK > *q)
static void deleteitem(TQItem *i)
SPBLK * sphead(SPTREE< SPBLK > *q)
void spinit(SPTREE< SPBLK > *q)
void forall_callback(void(*)(const TQItem *, int))
void spike_stat(double *)
void hoc_execerror(const char *, const char *)
TQItem * insert(double t, void *data_)
static void chk(TQItem *b, int level)
SPBLK * splookup(double key, SPTREE< SPBLK > *q)
void move_least(double tnew)
void spscan(void(*f)(const SPBLK *, int), SPBLK *n, SPTREE< SPBLK > *q)
static const char * errmess_
static double least(void *v)
SPBLK * spenq(SPBLK *n, SPTREE< SPBLK > *q)
void check(const char *errmess)
void move(TQItem *, double tnew)