/*
    This file is part of the FElt finite element analysis package.
    Copyright (C) 1993-2000 Jason I. Gobat and Darren C. Atkinson

    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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/************************************************************************
 * File:	symbol.h						*
 *									*
 * Description:	This file contains the public function and type		*
 *		declarations for the symbol table and symbol table	*
 *		entries.						*
 ************************************************************************/

# ifndef _SYMBOL_H
# define _SYMBOL_H
# include "proto.h"		/* function declarations */
# include "opcodes.h"		/* Opcode type		 */

# define ST_SIZE 211

typedef struct ste {
    struct ste *next;		/* next symbol in list */
    char       *name;		/* symbol name	       */
    Opcode	op;		/* associated opcode   */
    int		idx;		/* array index	       */
} ste;

typedef struct {
    ste bucket [ST_SIZE];	/* array of symbols    */
    int num_syms;		/* number of symbols   */
} st;


extern ste   *st_lookup PROTO ((st *, char *name));
extern ste   *st_insert PROTO ((st *, char *name, Opcode op));
extern ste   *st_index  PROTO ((st *, int));
extern char **st_names	PROTO ((st *));
extern void   st_init   PROTO ((st *));
extern void   st_fini   PROTO ((st *));

# endif /* _SYMBOL_H */


syntax highlighted by Code2HTML, v. 0.9.1