blob: e032385da1762f8d8da5227ef622961c2df61148 [file] [log] [blame]
/* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you under the Apache License, Version
* 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
------------------------------------------------------------------------------
Standard definitions and types, Bob Jenkins
------------------------------------------------------------------------------
*/
#ifndef STANDARD
#define STANDARD
/*
JLD cisco systems: ensure VS 2005 wide character support is turned on.
These definitions are enabled in the VS project, however for Linux and etc.
they may serve as a reminder that an etch binding should be unicode enabled.
*/
#ifndef _UNICODE /* defined by default in VS2005 */
#define _UNICODE
#endif
#if defined(WIN32) && !defined(_WIN32_WCE)
#include <tchar.h> /* wide char support, wmain() vs main() */
#else
#include <wchar.h>
#endif
#ifndef UNICODE /* defined by default in VS2005 */
#define UNICODE
#endif
/*
end VS 2005 wide character support -- JLD
*/
#include <stdio.h>
#include <stddef.h>
typedef unsigned long long ub8;
#define UB8MAXVAL 0xffffffffffffffffLL
#define UB8BITS 64
typedef signed long long sb8;
#define SB8MAXVAL 0x7fffffffffffffffLL
typedef unsigned long int ub4; /* unsigned 4-byte quantities */
#define UB4MAXVAL 0xffffffff
typedef signed long int sb4;
#define UB4BITS 32
#define SB4MAXVAL 0x7fffffff
typedef unsigned short int ub2;
#define UB2MAXVAL 0xffff
#define UB2BITS 16
typedef signed short int sb2;
#define SB2MAXVAL 0x7fff
typedef unsigned char ub1;
#define UB1MAXVAL 0xff
#define UB1BITS 8
typedef signed char sb1; /* signed 1-byte quantities */
#define SB1MAXVAL 0x7f
/* JLD replaced Jenkins' 'word' typdef with 'intx'. 'word' is too
likely to be confused by the reader with a Windows 16-bit integer.
intx is brief, and is more readable as 'the register size on the
host OS". It remains unclear whether simply changing this typedef to
a 64-bit integer, on a 64-bit OS, is sufficient for the hashtable
to work as advertised in 64 bits. See macro renew() for example,
where it appears as if sizeof(char*) is assumed same as sizeof(int).
*/
typedef int intx;
/* typedef int word fastest type available */
#define bis(target,mask) ((target) |= (mask))
#define bic(target,mask) ((target) &= ~(mask))
#define bit(target,mask) ((target) & (mask))
/* JLD commented this stuff out
#ifndef min
#define min(a,b) (((a)<(b)) ? (a) : (b))
#endif
#ifndef max
#define max(a,b) (((a)<(b)) ? (b) : (a))
#endif
*/
#ifndef align
#define align(a) (((ub4)a+(sizeof(void *)-1))&(~(sizeof(void *)-1)))
#endif
#ifndef abs
#define abs(a) (((a)>0) ? (a) : -(a))
#endif
#define TRUE 1
#define FALSE 0
#define SUCCESS 0 /* 1 on VAX */
#endif /* STANDARD */