dahdi-tools/xpp/oct612x/include/octmac.h

99 lines
3.4 KiB
C

/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\
File: octmac.h
Copyright (c) 2001-2007 Octasic Inc.
Description:
Common macro definitions.
This file is part of the Octasic OCT6100 GPL API . The OCT6100 GPL API is
free software; you can redistribute it and/or modify it under the terms of
the GNU General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
The OCT6100 GPL API is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with the OCT6100 GPL API; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
$Octasic_Release: OCT612xAPI-01.00-PR49 $
$Octasic_Revision: 14 $
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
#ifndef __OCTMAC_H__
#define __OCTMAC_H__
/*--------------------------------------------------------------------------
C language
----------------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/***************************** DEFINES *************************************/
/* Combine l & h to form a 32 bit quantity. */
#define mMAKEULONG(l, h) ((ULONG)(((USHORT)(l)) | (((ULONG)((USHORT)(h))) << 16)))
#define mLOUCHAR(w) ((UCHAR)(w))
#define mHIUCHAR(w) ((UCHAR)(((USHORT)(w) >> 8) & 0xff))
#define mLOUSHORT(l) ((USHORT)((ULONG)l))
#define mHIUSHORT(l) ((USHORT)(((ULONG)(l) >> 16) & 0xffff))
#define mLOSHORT(l) ((SHORT)((ULONG)l))
#define mHISHORT(l) ((SHORT)(((ULONG)(l) >> 16) & 0xffff))
/* Combine l & h to form a 16 bit quantity. */
#define mMAKEUSHORT(l, h) (((USHORT)(l)) | ((USHORT)(h)) << 8)
#define mMAKESHORT(l, h) ((SHORT)mMAKEUSHORT(l, h))
/* Extract high and low order parts of 16 and 32 bit quantity */
#define mLOBYTE(w) mLOUCHAR(w)
#define mHIBYTE(w) mHIUCHAR(w)
#define mMAKELONG(l, h) ((LONG)mMAKEULONG(l, h))
/*--------------------------------------------------------------------------
Bite conversion macro
----------------------------------------------------------------------------*/
#define mSWAP_INT16(x) mMAKEUSHORT( mHIBYTE(x), mLOBYTE(x) )
#define mSWAP_INT32(x) mMAKEULONG( mSWAP_INT16(mHIUSHORT(x)), mSWAP_INT16(mLOUSHORT(x)) )
/* Cast any variable to an instance of the specified type. */
#define mMAKETYPE(v, type) (*((type *)&v))
/* Calculate the byte offset of a field in a structure of type type. */
#define mFIELDOFFSET(type, field) ((UINT32)&(((type *)0)->field))
#define mCOUNTOF(array) (sizeof(array)/sizeof(array[0]))
#define mMAX(a,b) (((a) > (b)) ? (a) : (b))
#define mMIN(a,b) (((a) < (b)) ? (a) : (b))
#define mDIM(x) (sizeof(x) / sizeof(x[0]))
#define mFROMDIGIT(ch) ((ch) - 0x30) /* digit to char */
#define mTODIGIT(ch) ((ch) + 0x30) /* int to char */
#define mISLEAP(a) ( !( a % 400 ) || ( ( a % 100 ) && !( a % 4 ) ) )
#define mFOREVER for( ;; )
#define mROUND_TO_NEXT_4( a ) ( ((a) % 4) ? ( (a) + 4 - ((a)%4) ) : (a) )
/*--------------------------------------------------------------------------
C language
----------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif /* __OCTMAC_H__ */