ADMB Documentation  -a65f1c97
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
clist.cpp
Go to the documentation of this file.
1 
8 #include "clist.h"
9 #include <new>
10 
12 {
13  clist* t = this->next;
14  while (t != this)
15  {
16  if (!t)
17  {
18  //unexpected
19  throw std::bad_alloc();
20  }
21  else if (t->next == this)
22  {
23  return t;
24  }
25  else
26  {
27  t = t->next;
28  }
29  }
30  return 0;
31 }
32 
33 int clist::length(const int& max) const
34 {
35  int num = 1;
36  clist* t = this->next;
37  while (num <= max)
38  {
39  if (!t)
40  {
41  //unexpected
42  throw std::bad_alloc();
43  }
44  else if (t == this)
45  {
46  return num;
47  }
48  else
49  {
50  t = t->next;
51  }
52  ++num;
53  }
54  return -1;
55 }
56 
61 {
62  clist& tmp=*(clist *)(&t);
63  next = t.next;
64  tmp.next = this;
65 }
66 
71 {
72  if (next == this)
73  {
74  next = 0;
75  }
76  else
77  {
78  prev()->next = next;
79  }
80 }
int length(const int &max=1000) const
Definition: clist.cpp:33
clist * prev() const
Definition: clist.cpp:11
~clist()
Destructor.
Definition: clist.cpp:70
clist()
Definition: clist.h:49
Definition: clist.h:43
clist * next
Definition: clist.h:48
#define max(a, b)
Definition: cbivnorm.cpp:189