/*****************************************************************************
 * $LastChangedDate: 2011-02-04 19:23:35 -0500 (Fri, 04 Feb 2011) $
 * @file
 * @author  Jim E. Brooks  http://www.palomino3d.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 VERSION 2 (GPL 2).
 *****************************************************************************/

#if DEBUG
#ifndef BASE_TYPESIG_DEFS_HH
#define BASE_TYPESIG_DEFS_HH 1

namespace base {

typedef unsigned int typesig_t;

enum
{
    // Typesig range reserved for this base library.
    // Just "TYPESIG" is ok for trivial objects.
    // "unsigned int" because "uint" isnt defined yet.
    TYPESIG_INVALID         = 0,
    TYPESIG                 = 0x1234aabb,  // "TYPESIG" reused for trivial objects
    TYPESIG_SHARED          = (UINT_CAST('s')<<24) | (UINT_CAST('h')<<16) | (UINT_CAST('a')<<8) | UINT_CAST('r'),
    TYPESIG_SHARED_PTR      = (UINT_CAST('s')<<24) | (UINT_CAST('h')<<16) | (UINT_CAST('p')<<8) | UINT_CAST('t'),
    TYPESIG_DLINK           = (UINT_CAST('l')<<24) | (UINT_CAST('i')<<16) | (UINT_CAST('n')<<8) | UINT_CAST('k'),
    TYPESIG_DLIST           = (UINT_CAST('l')<<24) | (UINT_CAST('i')<<16) | (UINT_CAST('s')<<8) | UINT_CAST('t'),
    TYPESIG_ITER            = (UINT_CAST('i')<<24) | (UINT_CAST('t')<<16) | (UINT_CAST('e')<<8) | UINT_CAST('r'),
    TYPESIG_STACK           = (UINT_CAST('s')<<24) | (UINT_CAST('t')<<16) | (UINT_CAST('a')<<8) | UINT_CAST('c'),
    TYPESIG_UNIQUE          = (UINT_CAST('u')<<24) | (UINT_CAST('n')<<16) | (UINT_CAST('i')<<8) | UINT_CAST('q'),
    TYPESIG_UNIQUE_FACTORY  = (UINT_CAST('u')<<24) | (UINT_CAST('n')<<16) | (UINT_CAST('f')<<8) | UINT_CAST('a'),
    TYPESIG_SORTED_ARRAY    = (UINT_CAST('s')<<24) | (UINT_CAST('o')<<16) | (UINT_CAST('a')<<8) | UINT_CAST('r'),
    TYPESIG_CONF_TUPLE      = (UINT_CAST('c')<<24) | (UINT_CAST('f')<<16) | (UINT_CAST('t')<<8) | UINT_CAST('u'),
    TYPESIG_TICK_FUNCTOR    = (UINT_CAST('t')<<24) | (UINT_CAST('i')<<16) | (UINT_CAST('c')<<8) | UINT_CAST('k'),
};

} // namespace base

#endif // BASE_TYPESIG_DEFS_HH
#endif // DEBUG
