NEURON
bbtqueue.h
Go to the documentation of this file.
1 //#ifndef tqueue_h
2 //#define tqueue_h
3 
4 #define COLLECT_TQueue_STATISTICS 1
5 
6 class TQItem {
7  public:
8  TQItem();
9  virtual ~TQItem();
10  bool check();
11  int wleft() {
12  return (left_ ? left_->w_ : 0);
13  }
14  int wright() {
15  return (right_ ? right_->w_ : 0);
16  }
17  void t_iterate(void (*)(const TQItem*, int), int);
18  bool unbalanced();
19  void clear() {}
20 
21  public:
22  void* data_;
23  double t_;
27  int w_;
28 };
29 
30 class TQueue {
31  public:
32  TQueue();
33  virtual ~TQueue();
34 
35  TQItem* least(); // does not remove from TQueue
36  double least_t();
37  TQItem* insert(double t, void* data_);
38  TQItem* find(double t);
39  void remove(TQItem*);
40  void move(TQItem*, double tnew);
41  void move_least(double tnew);
42  void print();
43  void check(const char* errmess);
44  void statistics();
45  void insert1(double t, TQItem*);
46  void remove1(TQItem*);
47  void forall_callback(void (*)(const TQItem*, int));
48 
49  private:
50  void reverse(TQItem*);
51  void new_least();
52 
53  private:
56 #if COLLECT_TQueue_STATISTICS
57  private:
58  unsigned long ninsert, nrem, nleast, nbal, ncmplxrem;
60 #endif
61 };
62 //#endif
Definition: bbtqueue.h:6
void clear()
Definition: bbtqueue.h:19
int wleft()
Definition: bbtqueue.h:11
virtual ~TQItem()
Definition: bbtqueue.cpp:9
double t_
Definition: bbtqueue.h:23
int w_
Definition: bbtqueue.h:27
bool check()
Definition: bbtqueue.cpp:30
TQItem * right_
Definition: bbtqueue.h:25
bool unbalanced()
Definition: bbtqueue.cpp:458
TQItem()
Definition: bbtqueue.cpp:3
void t_iterate(void(*)(const TQItem *, int), int)
Definition: bbtqueue.cpp:78
TQItem * parent_
Definition: bbtqueue.h:26
TQItem * left_
Definition: bbtqueue.h:24
int wright()
Definition: bbtqueue.h:14
void * data_
Definition: bbtqueue.h:22
unsigned long nbal
Definition: bbtqueue.h:58
void statistics()
Definition: bbtqueue.cpp:477
unsigned long nleastsrch
Definition: bbtqueue.h:59
void remove(TQItem *)
Definition: bbtqueue.cpp:236
void remove1(TQItem *)
Definition: bbtqueue.cpp:245
double least_t()
Definition: bbtqueue.cpp:131
void reverse(TQItem *)
Definition: bbtqueue.cpp:343
TQItem * least()
Definition: bbtqueue.cpp:140
TQItem * root_
Definition: bbtqueue.h:55
void insert1(double t, TQItem *)
Definition: bbtqueue.cpp:404
void check(const char *errmess)
Definition: bbtqueue.cpp:121
void move(TQItem *, double tnew)
Definition: bbtqueue.cpp:185
unsigned long nmove
Definition: bbtqueue.h:59
TQItem * least_
Definition: bbtqueue.h:54
TQueue()
Definition: bbtqueue.cpp:90
unsigned long ninsert
Definition: bbtqueue.h:58
void print()
Definition: bbtqueue.cpp:109
unsigned long nrem
Definition: bbtqueue.h:58
unsigned long nfastmove
Definition: bbtqueue.h:59
TQItem * find(double t)
Definition: bbtqueue.cpp:217
unsigned long nfindsrch
Definition: bbtqueue.h:59
unsigned long ncompare
Definition: bbtqueue.h:59
void new_least()
Definition: bbtqueue.cpp:158
unsigned long nleast
Definition: bbtqueue.h:58
unsigned long nfind
Definition: bbtqueue.h:59
unsigned long ncmplxrem
Definition: bbtqueue.h:58
virtual ~TQueue()
Definition: bbtqueue.cpp:103
void forall_callback(void(*)(const TQItem *, int))
Definition: bbtqueue.cpp:115
TQItem * insert(double t, void *data_)
Definition: bbtqueue.cpp:394
void move_least(double tnew)
Definition: bbtqueue.cpp:178
double t
Definition: cvodeobj.cpp:59