/* Copyright (C) 1989, 1992, 1993, 1994, 1996, 1997, 1998, 1999 artofcode LLC. All rights reserved. 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 the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA, 02111-1307. */ /*$Id: iestack.h,v 1.2.6.1.2.1 2003/01/17 00:49:04 giles Exp $ */ /* Generic execution stack API */ #ifndef iestack_INCLUDED # define iestack_INCLUDED #include "iesdata.h" #include "istack.h" /* Define pointers into the execution stack. */ typedef s_ptr es_ptr; typedef const_s_ptr const_es_ptr; /* Manage the current_file cache. */ #define estack_clear_cache(pes) ((pes)->current_file = 0) #define estack_set_cache(pes,pref) ((pes)->current_file = (pref)) #define estack_check_cache(pes)\ BEGIN\ if (r_has_type_attrs((pes)->stack.p, t_file, a_executable))\ estack_set_cache(pes, (pes)->stack.p);\ END #endif /* iestack_INCLUDED */