Blender  V3.3
Queue.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #ifndef __QUEUE_H__
4 #define __QUEUE_H__
5 
6 struct gridQueueEle {
7  int x, y, z;
10 };
11 
12 class GridQueue {
13  gridQueueEle *head;
14  gridQueueEle *tail;
15  int numEles;
16 
17  public:
19  {
20  head = NULL;
21  tail = NULL;
22  numEles = 0;
23  }
24 
26  {
27  return head;
28  }
29 
31  {
32  return numEles;
33  }
34 
35  void pushQueue(int st[3], int dir)
36  {
37  gridQueueEle *ele = new gridQueueEle;
38  ele->x = st[0];
39  ele->y = st[1];
40  ele->z = st[2];
41  ele->dir = (UCHAR)dir;
42  ele->next = NULL;
43  if (head == NULL) {
44  head = ele;
45  }
46  else {
47  tail->next = ele;
48  }
49  tail = ele;
50  numEles++;
51  }
52 
53  int popQueue(int st[3], int &dir)
54  {
55  if (head == NULL) {
56  return 0;
57  }
58 
59  st[0] = head->x;
60  st[1] = head->y;
61  st[2] = head->z;
62  dir = (int)(head->dir);
63 
64  gridQueueEle *temp = head;
65  head = head->next;
66  delete temp;
67 
68  if (head == NULL) {
69  tail = NULL;
70  }
71  numEles--;
72 
73  return 1;
74  }
75 
76 #ifdef WITH_CXX_GUARDEDALLOC
77  MEM_CXX_CLASS_ALLOC_FUNCS("DUALCON:GridQueue")
78 #endif
79 };
80 
81 #endif /* __QUEUE_H__ */
#define UCHAR
Definition: GeoCommon.h:6
void pushQueue(int st[3], int dir)
Definition: Queue.h:35
int popQueue(int st[3], int &dir)
Definition: Queue.h:53
gridQueueEle * getHead()
Definition: Queue.h:25
int getNumElements()
Definition: Queue.h:30
GridQueue()
Definition: Queue.h:18
static const pxr::TfToken st("st", pxr::TfToken::Immortal)
int y
Definition: Queue.h:7
UCHAR dir
Definition: Queue.h:8
gridQueueEle * next
Definition: Queue.h:9
int x
Definition: Queue.h:7
int z
Definition: Queue.h:7