Răsfoiți Sursa

added Queue

Darren Ranalli 20 ani în urmă
părinte
comite
1a7113289d
1 a modificat fișierele cu 40 adăugiri și 0 ștergeri
  1. 40 0
      direct/src/showbase/PythonUtil.py

+ 40 - 0
direct/src/showbase/PythonUtil.py

@@ -776,9 +776,49 @@ class Stack:
         return self.__list.pop()
         return self.__list.pop()
     def clear(self):
     def clear(self):
         self.__list = []
         self.__list = []
+    def isEmpty(self):
+        return len(self.__list) == 0
     def __len__(self):
     def __len__(self):
         return len(self.__list)
         return len(self.__list)
 
 
+class Queue:
+    # FIFO queue
+    # interface is intentionally identical to Stack (LIFO)
+    def __init__(self):
+        self.__list = []
+    def push(self, item):
+        self.__list.append(item)
+    def top(self):
+        # return the next item at the front of the queue without popping it off
+        return self.__list[0]
+    def pop(self):
+        return self.__list.pop(0)
+    def clear(self):
+        self.__list = []
+    def isEmpty(self):
+        return len(self.__list) == 0
+    def __len__(self):
+        return len(self.__list)
+
+if __debug__:
+    q = Queue()
+    assert q.isEmpty()
+    q.clear()
+    assert q.isEmpty()
+    q.push(10)
+    assert not q.isEmpty()
+    q.push(20)
+    assert not q.isEmpty()
+    assert len(q) == 2
+    assert q.top() == 10
+    assert q.top() == 10
+    assert q.pop() == 10
+    assert len(q) == 1
+    assert not q.isEmpty()
+    assert q.pop() == 20
+    assert len(q) == 0
+    assert q.isEmpty()
+
 """
 """
 ParamObj/ParamSet
 ParamObj/ParamSet
 =================
 =================