18 #define leftlink left_
19 #define rightlink right_
20 #define uplink parent_
26 #define nt_dt nrn_threads->_dt
46 for (
i = 0;
i < level; ++
i) {
67 #if COLLECT_TQueue_STATISTICS
124 TQItem* TQueue::second_least(
double t) {
127 if (b && b->
t_ ==
t) {
159 }
else if (tnew < least_->t_) {
173 #if COLLECT_TQueue_STATISTICS
174 Printf(
"insertions=%lu moves=%lu removals=%lu calls to least=%lu\n",
182 Printf(
"Turn on COLLECT_TQueue_STATISTICS_ in tqueue.h\n");
187 #if COLLECT_TQueue_STATISTICS
241 }
else if (
q->cnt_ >= 0) {
289 #if COLLECT_TQueue_STATISTICS
315 for (
q = bins[
i];
q;
q =
q->left_) {
325 int idt = (int) ((td -
tt_) /
nt_dt + 1.e-10);
328 (*nrn_binq_enqueue_error_handler)(td,
q);
347 #if COLLECT_TQueue_STATISTICS
355 #if COLLECT_TQueue_STATISTICS
395 for (q2 = q1->
left_; q2; q1 = q2, q2 = q2->
left_) {
TQItem * first()
Iterate in ascending bin order starting at current bin.
void enqueue(double tt, TQItem *)
TQItem * enqueue_bin(double t, void *data)
void deleteitem(TQItem *)
void check(const char *errmess)
void move(TQItem *, double tnew)
TQItem * atomic_dq(double til)
void move_least_nolock(double tnew)
void forall_callback(void(*)(const TQItem *, int))
TQItem * insert(double t, void *data_)
void move_least(double tnew)
void spike_stat(double *)
void hoc_execerror(const char *, const char *)
#define MUTCONSTRUCT(mkmut)
void(* nrn_binq_enqueue_error_handler)(double, TQItem *)
static void prnt(const TQItem *b, int level)
static void chk(TQItem *b, int level)
void spscan(void(*f)(const SPBLK *, int), SPBLK *n, SPTREE< SPBLK > *q)
SPBLK * spdeq(SPBLK **np)
SPBLK * sphead(SPTREE< SPBLK > *q)
SPBLK * spenq(SPBLK *n, SPTREE< SPBLK > *q)
SPBLK * splookup(double key, SPTREE< SPBLK > *q)
void spdelete(SPBLK *n, SPTREE< SPBLK > *q)
void spinit(SPTREE< SPBLK > *q)
static const char * errmess_