/*-----------------------------------------------------------------------
	File:  stackint.h
	Author:  M. Sebern
	Date:  19-May-1995
	Purpose:
		Definitions for "stack of integers" abstract data type.
	Revision history:
		Jeffrey Blessing 3-13-98 for CS-481 students.
-----------------------------------------------------------------------*/

#ifndef STACKINT_H
#define STACKINT_H

/* Include Files: */

/* Constant Definitions: */

/* Macro Definitions: */

/* Type Declarations: */

typedef enum {false, true} Boolean;

typedef struct
{
	int		max_elem;
	int		current_elem;
	int*	elems;
} stack_struct;

typedef stack_struct * Stack;
typedef const stack_struct * const_Stack;

/* External Variables: */

/* Function Prototypes: */

extern Stack CreateStack(void);
extern void DestroyStack(Stack stack);
extern Boolean IsStackEmpty(const_Stack stack);
extern void PushStack(Stack stack, int element);
extern int PopStack(Stack stack);
extern int TopStack(const_Stack stack);

#endif /* STACKINT_H */
