NEURON
sptqueue.h
Go to the documentation of this file.
1 //#ifndef tqueue_h
2 //#define tqueue_h
3 
4 #define COLLECT_TQueue_STATISTICS 1
5 struct SPTREE;
6 
7 class TQItem {
8  public:
9  TQItem();
10  virtual ~TQItem();
11  bool check();
12  void clear(){};
13 
14  public:
15  void* data_;
16  double t_;
17  TQItem* left_;
18  TQItem* right_;
19  TQItem* parent_;
20  int cnt_;
21 };
22 
23 class TQueue {
24  public:
25  TQueue();
26  virtual ~TQueue();
27 
28 #if FAST_LEAST
29  TQItem* least() {
30  return least_;
31  }
32  double least_t() {
33  if (least_) {
34  return least_->t_;
35  } else {
36  return 1e15;
37  }
38  }
39  TQItem* second_least(double t);
40 #else
41  TQItem* least(); // does not remove from TQueue
42  double least_t();
43 #endif
44  TQItem* insert(double t, void* data_);
45  TQItem* find(double t);
46  void remove(TQItem*);
47  void move(TQItem*, double tnew);
48  void move_least(double tnew);
49  void print();
50  void check(const char* errmess);
51  void statistics();
52  void spike_stat(double*);
53  void forall_callback(void (*)(const TQItem*, int));
54 
55  private:
56  SPTREE* sptree_;
57  TQItem* least_;
58 #if COLLECT_TQueue_STATISTICS
59  unsigned long ninsert, nrem, nleast, nbal, ncmplxrem;
60  unsigned long ncompare, nleastsrch, nfind, nfindsrch, nmove, nfastmove;
61 #endif
62 };
63 //#endif
Definition: bbtqueue.h:6
virtual ~TQItem()
void clear()
Definition: sptqueue.h:12
double t_
Definition: bbtqueue.h:23
bool check()
TQItem * right_
Definition: bbtqueue.h:25
int cnt_
Definition: spt2queue.h:24
TQItem * parent_
Definition: bbtqueue.h:26
TQItem * left_
Definition: bbtqueue.h:24
void * data_
Definition: bbtqueue.h:22
unsigned long nbal
Definition: bbtqueue.h:58
void statistics()
unsigned long nleastsrch
Definition: bbtqueue.h:59
void remove(TQItem *)
double least_t()
Definition: bbtqueue.cpp:131
TQItem * least()
Definition: bbtqueue.cpp:140
void check(const char *errmess)
virtual ~TQueue()
TQItem * least()
void move(TQItem *, double tnew)
unsigned long nmove
Definition: bbtqueue.h:59
TQItem * least_
Definition: bbtqueue.h:54
unsigned long ninsert
Definition: bbtqueue.h:58
void print()
unsigned long nrem
Definition: bbtqueue.h:58
TQItem * insert(double t, void *data_)
unsigned long nfastmove
Definition: bbtqueue.h:59
SPTREE * sptree_
Definition: spt2queue.h:61
TQItem * find(double t)
unsigned long nfindsrch
Definition: bbtqueue.h:59
unsigned long ncompare
Definition: bbtqueue.h:59
unsigned long nleast
Definition: bbtqueue.h:58
unsigned long nfind
Definition: bbtqueue.h:59
unsigned long ncmplxrem
Definition: bbtqueue.h:58
void forall_callback(void(*)(const TQItem *, int))
void move_least(double tnew)
void spike_stat(double *)
double t
Definition: cvodeobj.cpp:59
Definition: sptree.h:40