/* %Z%%M% %I% %E% */ /* * Copyright (c) 1992, 1995 by Wayne C. Gramlich. * All rights reserved. * * Permission to use, copy, modify, distribute, and sell this software * for any purpose is hereby granted without fee provided that the above * copyright notice and this permission are retained. The author makes * no representations about the suitability of this software for any purpose. * It is provided "as is" without express or implied warranty. */ /* This file defines the need data structures: */ #ifndef NEED_DEFS_H #define NEED_DEFS_H #ifndef NEED_EXPORTS_H #include "need_exports.h" #endif #ifndef TYPE_TYPES_H #include "type_types.h" #endif union Need_value_union { Type_ref object; Type_proto routine; }; struct Need_entry_struct { Str name; /* Routine/Object name */ Type_ref type_ref; /* Routine/Object type */ Need_entry_type type; /* Routine or Object flag */ Need_value value; /* Value of routine or object */ }; struct Need_table_struct { Vec(Need_entry) block_entrys; /* List of parameterized Need_entry's */ Heap heap; /* Heap */ Need_entry key; /* Temporary key */ Str name; /* Routine name */ Vec(Need_entry) static_entrys; /* List of static Need_entry's */ Routine routine; /* Back pointer to routine */ Table(Need_entry, Need_entry) table; /* Table of Need_entry's */ Type_ref type_ref; /* Routine type_ref */ Type_tables type_tables; /* Type tables */ }; #endif /* NEED_DEFS_H */