]> git.mxchange.org Git - simgear.git/commitdiff
Add front() methods SGQueue, SGLockedQueue, and SGBlockingQueue so that the
authorcurt <curt>
Sat, 28 Feb 2004 18:51:20 +0000 (18:51 +0000)
committercurt <curt>
Sat, 28 Feb 2004 18:51:20 +0000 (18:51 +0000)
can be used more interchangably with a regular STL queue.

simgear/threads/SGQueue.hxx

index 25fa2ca5b1db56d603be94c1362b2f3726354279..9d4dcf31259840442a6f697c23aacd730b52956f 100644 (file)
@@ -47,6 +47,13 @@ public:
      */
     virtual void push( const T& item ) = 0;
 
+    /**
+     * View the item from the head of the queue.
+     *
+     * @return T next available object.
+     */
+    virtual T front() = 0;
+
     /**
      * Get an item from the head of the queue.
      *
@@ -99,6 +106,18 @@ public:
        fifo.push( item );
     }
 
+    /**
+     * View the item from the head of the queue.
+     *
+     * @return T next available object.
+     */
+    virtual T front() {
+       SGGuard<SGLOCK> g(mutex);
+       assert( ! fifo.empty() );
+       T item = fifo.front();
+       return item;
+    }
+
     /**
      * Get an item from the head of the queue.
      *
@@ -167,6 +186,22 @@ public:
        not_empty.signal();
     }
 
+    /**
+     * View the item from the head of the queue.
+     * Calling thread is not suspended
+     *
+     * @return T next available object.
+     */
+    virtual T front() {
+       SGGuard<SGMutex> g(mutex);
+
+       assert(fifo.empty() != true);
+       //if (fifo.empty()) throw ??
+
+       T item = fifo.front();
+       return item;
+    }
+
     /**
      * Get an item from the head of the queue.
      * If no items are available then the calling thread is suspended