/********************************************************************
 *                                                                  *
 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
 * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
 * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH    *
 * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.        *
 *                                                                  *
 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2000             *
 * by Monty <monty@xiph.org> and the XIPHOPHORUS Company            *
 * http://www.xiph.org/                                             *
 *                                                                  *
 ********************************************************************

 function: #ifdef jail to whip a few platforms into the UNIX ideal.
 last mod: $Id: os_types.h,v 1.3 2000/11/13 23:54:58 xiphmont Exp $

 ********************************************************************/
#ifndef _OS_TYPES_H
#define _OS_TYPES_H

/* make it easy on the folks that want to compile the libs with a
   different malloc than stdlib */
#include "mem.h"
#include <stdint.h>

typedef unsigned char   byte;
typedef int             xint;
typedef int             bint;
extern int32_t LMULBI(bint a, int32_t b); // (a*b) >> BISHIFT

#define BISHIFT 19
#define BIZERO  0

#define XISHIFT 23
#define XIZERO  0
#define XIUNIT	(1<<XISHIFT)
extern xint LMULSH(xint a, xint b, int shift);     // (a*b) >> (32+s)
extern int32_t LMULSHR(int32_t a, int32_t b, int shift); // (a*b) >> (32+s), -32 < s < 32

#ifndef IGNORE
#define IGNORE(x) x=x;
#endif

#endif  /* _OS_TYPES_H */
