/*****************************************************************************
 * $Id: gfx_typesig_defs.hh,v 1.21 2005/10/30 15:29:33 devel Exp $
 * @file
 * @author	Jim E. Brooks  http://www.jimbrooks.org
 * @brief	Type signature definitions.
 *//*
 * LEGAL:	COPYRIGHT (C) 2004 JIM E. BROOKS
 *          THIS SOURCE CODE IS RELEASED UNDER THE TERMS
 *          OF THE GNU GENERAL PUBLIC LICENSE (GPL).
 *****************************************************************************/

#ifndef GFX_TYPESIG_DEFS_HH
#define GFX_TYPESIG_DEFS_HH 1

namespace gfx {

typedef unsigned char typesig_t;			/// one byte to conserve memory
const unsigned int TYPESIG_MAX = 255;		/// greatest value typesig_t can hold

/// Code outside of this library should add TYPESIG_USER to its enums.
/// Enums below TYPESIG_USER are reserved for the gfx library.
enum
{
	// ===================================================
	// enums reserved for gfx library
	// ---------------------------------------------------
	TYPESIG_INVALID         = 0,

	TYPESIG_LIB_DLINK		= 2, // skip 0,1 which aren't distinct values
	TYPESIG_LIB_DLIST,
	TYPESIG_LIB_ITER,
	TYPESIG_LIB_STACK,
	TYPESIG_LIB_CACHE,
	TYPESIG_LIB_CACHE_OPQ,
	TYPESIG_LIB_CACHE_LINK,
	TYPESIG_LIB_VERTEX_LOCAL,
	TYPESIG_LIB_VERTEX_WORLD,
	TYPESIG_LIB_VERTEX_EYE,
	TYPESIG_LIB_VERTEX_NORMAL,
	TYPESIG_LIB_NORMAL,
	TYPESIG_LIB_RECTXZ,
	TYPESIG_LIB_CONFIG_TUPLE,
	// ===================================================

	// ===================================================
	// enums >= TYPESIG_USER are for general use elsewhere
	// ---------------------------------------------------
	TYPESIG_USER,
	// ===================================================
};

} // namespace gfx

#endif // GFX_TYPESIG_DEFS_HH
