/*
 * @COPYRIGHT@
 *
 * Scout Version 1.0
 * 
 * Copyright 1998 Arizona Board of Regents, on behalf of
 *         The University of Arizona
 *         All Rights Reserved
 *
 * @COPYRIGHT@
 *
 * $RCSfile: types.h,v $
 */
#ifndef __types_h__
#define __types_h__

typedef enum {
    FALSE = 0, TRUE
} bool;

typedef char		__s8;
typedef short		__s16;
typedef int		__s32;
typedef long long	__s64;

typedef unsigned char	__u8;
typedef unsigned short	__u16;
typedef unsigned int	__u32;
typedef unsigned long long	__u64;

typedef union {
    char	c;
    short	s;
    int		i;
    long	l;
    u_char	uc;
    u_short	us;
    u_int	ui;
    u_long	ul;
    void *	p;
    char *	cp;
    short *	sp;
    int *	ip;
    long *	lp;
    u_char *	ucp;
    u_short *	usp;
    u_int *	uip;
    u_long *	ulp;
    __s8	s8;
    __s16	s16;
    __s32	s32;
    __u8	u8;
    __u16	u16;
    __u32	u32;
} AnyType;

#define anyToAny(w,v)	({AnyType _a; _a.w = (v); _a;})
#define charToAny(v)	anyToAny(c,v)
#define shortToAny(v)	anyToAny(s,v)
#define intToAny(v)	anyToAny(i,v)
#define longToAny(v)	anyToAny(l,v)
#define ulongToAny(v)	anyToAny(ul,v)
#define ptrToAny(v)	anyToAny(p,v)

#define NELEMS(array)	(sizeof(array)/sizeof((array)[0]))

#endif /* __types_h__ */

