/* typed.h -- Data structures for an implimentation of internally
 * typed data structures.
 *
 * This file has 5 major sections:
 * TYPED_SPACE DECLARATIONS	-- Declarations for typed_space in general.
 * DATA TYPES			-- Values for typed_space.ts_type.
 *	Make at least one entry here when you add new data types.
 * STRUCTURE DECLARATIONS	-- Declarations for specific typed spaces.
 *	Declare structures that describe the typed_space.ts_data element.
 * FUNCTION DECLARATIONS	-- Function names for specific typed spaces.
 *	Declare all the functions need to manipulate your data type.
 * USEFUL SYMBOLS		-- Symbols needed by specific typed spaces.
 *	Anything else you need to define should go here.
 */

/*
 * DATA TYPES:  (values for ts_type in a typed_space)
 * All data types start with "T_".
 * Similar data types share a common prefix which is defined like this:
 * #define T_COMMON	(space_type)0xhh00
 * Specific types are then assigned sequentially from that:
 * #define T_COMMON_SPECIFIC	T_COMMON+n
 */
/* 
 * STRUCTURE DECLARATIONS.
 * These define the typed_space.ts_data elements that go with the above
 * data types.  They should be typedef'd to a name derivable from the
 * type name by removing the leading "T_" (see above.)
 *
 * E.g. For the type T_COMMON create this typedef:
 * typedef common {
 * ...
 * } COMMON;
 *
 * If the specific types need their own structs do them like this:
 * typedef common_specific {
 * ...
 * } COMMON_SPECIFIC;
 *
 */

/* USEFUL SYMBOLS.
 * If appropriate, be sure to define a form of NULL for your new data
 * type.  E.g. for the type COMMON
 * #define COMMON_NULL ((COMMON *) 0)
 *
 * If you need any other symbols define them here.
 */
