/*
	gib_stack.h

	#DESCRIPTION#

	Copyright (C) 2000       #AUTHOR#

	Author: #AUTHOR#
	Date: #DATE#

	This program 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 2
	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, write to:

		Free Software Foundation, Inc.
		59 Temple Place - Suite 330
		Boston, MA  02111-1307, USA

	$Id$
*/

#include "QF/gib.h"

#define GIB_LOCALS gib_substack[gib_subsp - 1].local
#define GIB_CURRENTMOD gib_substack[gib_subsp - 1].mod
#define GIB_CURRENTSUB gib_substack[gib_subsp - 1].sub

typedef struct gib_instack_s
{
	gib_inst_t *instruction;
	char **argv;
	int argc;
} gib_instack_t;

typedef struct gib_substack_s
{
	gib_module_t *mod;
	gib_sub_t *sub;
	gib_var_t *local;
} gib_substack_t;

extern gib_instack_t *gib_instack;
extern gib_substack_t *gib_substack;

extern int gib_insp;
extern int gib_subsp;

void GIB_InStack_Push (gib_inst_t *instruction, int argc, char **argv);
void GIB_InStack_Pop ();
void GIB_SubStack_Push (gib_module_t *mod, gib_sub_t *sub, gib_var_t *local);
void GIB_SubStack_Pop ();