/*
    Lifo.h, Copyright  (c) by Boris Lutz,
    Swiss Federal Institute of Technology,
    Computer Engineering and Networks Laboratory.
 
    TOPSY -- A Teachable Operating System.
             Implementation of a tiny and simple
             micro kernel for teaching purposes.
 
    For further information, please visit http://www.tik.ee.ethz.ch/~topsy
 
    This software is provided under the terms of the GNU General Public 
    Licence. A full copy of the GNU GPL is provided in the file COPYING 
    found in the development root of Topsy.
*/
/*
	
    File:                  $Source: /home/ruf/cvs_Topsy/cvs/Topsy/Topsy/Lifo.h,v $
    Author(s):             
    Affiliation:           ETH Zuerich, TIK
    Version:               $Revision: 2922 $
    Creation Date:         
    Last Date of Change:   $Date: 2007-03-19 17:48:52 +0100 (Mon, 19 Mär 2007) $      by: $Author: baderma $
*/


#ifndef _LIFO_H_
#define _LIFO_H_

#include "Topsy.h"


/* return values */
#define LIFO_NOTFOUND 2
#define LIFO_ERROR 1
#define LIFO_OK 0

/* type declarations */
typedef struct LifoElemDesc_t
{
  void*						item;
  struct 	LifoElemDesc_t*		next;
}
LifoElemDesc;
typedef LifoElemDesc *LifoElem, *Lifo;

/* function prototypes */
int lifoIsEmpty(Lifo *myLifo);
Error lifoPush (Lifo *myLifo, void* item);
Error lifoPop (Lifo *myLifo, void** item);
Error lifoFree (Lifo *myLifo);
Error lifoSelectivePop (Lifo *myLifo, void* item);


#endif
