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