view lwlib/lw_stack.h @ 371:9c24d9d485b9

Much bugfixing
author lost@starbug
date Wed, 21 Apr 2010 23:29:18 -0600
parents c15cca3ae6a2
children
line wrap: on
line source

/*
lw_stack.h

Copyright © 2010 William Astle

This file is part of LWTOOLS.

LWTOOLS is free software: you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.

You should have received a copy of the GNU General Public License along with
this program. If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef ___lw_stack_h_seen___
#define ___lw_stack_h_seen___


#ifdef ___lw_stack_c_seen___

struct lw_stack_node_priv
{
	void *data;
	struct lw_stack_node_priv *next;
};

struct lw_stack_priv
{
	struct lw_stack_node_priv *head;
	void (*freefn)(void *d);
};

typedef struct lw_stack_priv * lw_stack_t;

#else /* def ___lw_stack_c_seen___ */

typedef void * lw_stack_t;
extern lw_stack_t lw_stack_create(void (*freefn)(void *d));
extern void lw_stack_destroy(lw_stack_t S);
extern void *lw_stack_top(lw_stack_t S);
extern void *lw_stack_pop(lw_stack_t S);
extern void lw_stack_push(lw_stack_t S, void *item);

#endif /* def ___lw_stack_c_seen___ */

#endif /* ___lw_stack_h_seen___ */