1 #include <../../nrnconf.h>
17 #if COLLECT_TQueue_STATISTICS
18 #define STAT(arg) ++arg;
34 #define leftlink left_
35 #define rightlink right_
36 #define uplink parent_
42 #define nt_dt nrn_threads->_dt
48 for (
i = 0;
i < level; ++
i) {
51 Printf(
"%g %c %d Q=%p D=%p\n",
67 #if COLLECT_TQueue_STATISTICS
122 if (b && b->
t_ ==
t) {
153 }
else if (tnew < least_->t_) {
167 #if COLLECT_TQueue_STATISTICS
168 Printf(
"insertions=%lu moves=%lu removals=%lu calls to least=%lu\n",
176 Printf(
"Turn on COLLECT_TQueue_STATISTICS_ in tqueue.hpp\n");
181 #if COLLECT_TQueue_STATISTICS
235 }
else if (
q->cnt_ >= 0) {
283 #if COLLECT_TQueue_STATISTICS
309 for (
q = bins[
i];
q;
q =
q->left_) {
319 int idt = (int) ((td -
tt_) /
nt_dt + 1.e-10);
322 (*nrn_binq_enqueue_error_handler)(td,
q);
341 #if COLLECT_TQueue_STATISTICS
349 #if COLLECT_TQueue_STATISTICS
389 for (q2 = q1->
left_; q2; q1 = q2, q2 = q2->
left_) {
422 q->left_->right_ =
q->right_;
425 q->right_->left_ =
q->left_;
TQItem * first()
Iterate in ascending bin order starting at current bin.
void enqueue(double tt, TQItem *)
void apply_all(void(*f)(const T *, int), T *n) const
SelfQueue(TQItemPool *, int mkmut=0)
TQItem * second_least(double t)
TQItem * insert(double t, void *data)
TQItem * enqueue_bin(double t, void *data)
SPTree< TQItem > * sptree_
void deleteitem(TQItem *)
MUTDEC unsigned long nleast
MUTDEC unsigned long ncmplxrem
void check(const char *errmess)
void move(TQItem *, double tnew)
TQItem * atomic_dq(double til)
MUTDEC unsigned long nrem
MUTDEC unsigned long nbal
MUTDEC unsigned long ninsert
void move_least_nolock(double tnew)
void forall_callback(void(*)(const TQItem *, int))
TQueue(TQItemPool *, int mkmut=0)
void move_least(double tnew)
void spike_stat(double *)
void(* nrn_binq_enqueue_error_handler)(double, TQItem *)
static void prnt(const TQItem *b, int level)
#define MUTCONSTRUCT(mkmut)
int Printf(const char *fmt, Args... args)