FIFO basicly finished
authorRoland Häder <roland@mxchange.org>
Fri, 23 Apr 2010 23:01:25 +0000 (23:01 +0000)
committerRoland Häder <roland@mxchange.org>
Fri, 23 Apr 2010 23:01:25 +0000 (23:01 +0000)
inc/classes/main/stacker/class_BaseStacker.php
inc/classes/main/stacker/fifo/class_FiFoStacker.php

index 5c25e92..2fdc0d2 100644 (file)
@@ -189,6 +189,31 @@ class BaseStacker extends BaseFrameworkSystem {
                return $value;
        }
 
+       /**
+        * Get first value from named stacker
+        *
+        * @param       $stackerName    Name of the stack
+        * @return      $value                  Value of last added value
+        * @throws      NoStackerException      If the named stacker was not found
+        * @throws      EmptyStackerException   If the named stacker is empty
+        */
+       protected final function getFirstValue ($stackerName) {
+               // Is the stack not yet initialized or full?
+               if (!$this->isStackInitialized($stackerName)) {
+                       // Throw an exception
+                       throw new NoStackerException(array($this, $stackerName), self::EXCEPTION_NO_STACKER_FOUND);
+               } elseif ($this->isStackEmpty($stackerName)) {
+                       //Throw an exception
+                       throw new EmptyStackerException(array($this, $stackerName), self::EXCEPTION_STACKER_IS_EMPTY);
+               }
+
+               // Now get the last value
+               $value = $this->stacks[$stackerName]['entries'][0];
+
+               // Return it
+               return $value;
+       }
+
        /**
         * "Pops" last entry from stack
         *
@@ -210,6 +235,28 @@ class BaseStacker extends BaseFrameworkSystem {
                // Now, remove the last entry, we don't care about the return value here, see elseif() block above
                array_pop($this->stacks[$stackerName]['entries']);
        }
+
+       /**
+        * "Pops" first entry from stack
+        *
+        * @param       $stackerName    Name of the stack
+        * @return      void
+        * @throws      NoStackerException      If the named stacker was not found
+        * @throws      EmptyStackerException   If the named stacker is empty
+        */
+       protected final function popFirst ($stackerName) {
+               // Is the stack not yet initialized or full?
+               if (!$this->isStackInitialized($stackerName)) {
+                       // Throw an exception
+                       throw new NoStackerException(array($this, $stackerName), self::EXCEPTION_NO_STACKER_FOUND);
+               } elseif ($this->isStackEmpty($stackerName)) {
+                       //Throw an exception
+                       throw new EmptyStackerException(array($this, $stackerName), self::EXCEPTION_STACKER_IS_EMPTY);
+               }
+
+               // Now, remove the last entry, we don't care about the return value here, see elseif() block above
+               array_shift($this->stacks[$stackerName]['entries']);
+       }
 }
 
 // [EOF]
index c2cc09e..f8fe041 100644 (file)
@@ -84,7 +84,7 @@ class FiFoStacker extends BaseStacker implements Stackable {
         */
        public function getNamed ($stackerName) {
                // Call the protected method
-               return parent::getLastValue($stackerName);
+               return parent::getFirstValue($stackerName);
        }
 }