Changeset View
Changeset View
Standalone View
Standalone View
sys/contrib/skein/brg_types.h
- This file was added.
Property | Old Value | New Value |
---|---|---|
svn:eol-style | null | native \ No newline at end of property |
svn:keywords | null | FreeBSD=%H \ No newline at end of property |
svn:mime-type | null | text/plain \ No newline at end of property |
/* | |||||
--------------------------------------------------------------------------- | |||||
Copyright (c) 1998-2006, Brian Gladman, Worcester, UK. All rights reserved. | |||||
LICENSE TERMS | |||||
The free distribution and use of this software in both source and binary | |||||
form is allowed (with or without changes) provided that: | |||||
1. distributions of this source code include the above copyright | |||||
notice, this list of conditions and the following disclaimer; | |||||
2. distributions in binary form include the above copyright | |||||
notice, this list of conditions and the following disclaimer | |||||
in the documentation and/or other associated materials; | |||||
3. the copyright holder's name is not used to endorse products | |||||
built using this software without specific written permission. | |||||
ALTERNATIVELY, provided that this notice is retained in full, this product | |||||
may be distributed under the terms of the GNU General Public License (GPL), | |||||
in which case the provisions of the GPL apply INSTEAD OF those given above. | |||||
DISCLAIMER | |||||
This software is provided 'as is' with no explicit or implied warranties | |||||
in respect of its properties, including, but not limited to, correctness | |||||
and/or fitness for purpose. | |||||
--------------------------------------------------------------------------- | |||||
Issue 09/09/2006 | |||||
The unsigned integer types defined here are of the form uint_<nn>t where | |||||
<nn> is the length of the type; for example, the unsigned 32-bit type is | |||||
'uint_32t'. These are NOT the same as the 'C99 integer types' that are | |||||
defined in the inttypes.h and stdint.h headers since attempts to use these | |||||
types have shown that support for them is still highly variable. However, | |||||
since the latter are of the form uint<nn>_t, a regular expression search | |||||
and replace (in VC++ search on 'uint_{:z}t' and replace with 'uint\1_t') | |||||
can be used to convert the types used here to the C99 standard types. | |||||
*/ | |||||
#ifndef BRG_TYPES_H | |||||
#define BRG_TYPES_H | |||||
#if defined(__cplusplus) | |||||
extern "C" { | |||||
#endif | |||||
#include <limits.h> | |||||
#ifndef BRG_UI8 | |||||
# define BRG_UI8 | |||||
# if UCHAR_MAX == 255u | |||||
typedef unsigned char uint_8t; | |||||
# else | |||||
# error Please define uint_8t as an 8-bit unsigned integer type in brg_types.h | |||||
# endif | |||||
#endif | |||||
#ifndef BRG_UI16 | |||||
# define BRG_UI16 | |||||
# if USHRT_MAX == 65535u | |||||
typedef unsigned short uint_16t; | |||||
# else | |||||
# error Please define uint_16t as a 16-bit unsigned short type in brg_types.h | |||||
# endif | |||||
#endif | |||||
#ifndef BRG_UI32 | |||||
# define BRG_UI32 | |||||
# if UINT_MAX == 4294967295u | |||||
# define li_32(h) 0x##h##u | |||||
typedef unsigned int uint_32t; | |||||
# elif ULONG_MAX == 4294967295u | |||||
# define li_32(h) 0x##h##ul | |||||
typedef unsigned long uint_32t; | |||||
# elif defined( _CRAY ) | |||||
# error This code needs 32-bit data types, which Cray machines do not provide | |||||
# else | |||||
# error Please define uint_32t as a 32-bit unsigned integer type in brg_types.h | |||||
# endif | |||||
#endif | |||||
#ifndef BRG_UI64 | |||||
# if defined( __BORLANDC__ ) && !defined( __MSDOS__ ) | |||||
# define BRG_UI64 | |||||
# define li_64(h) 0x##h##ui64 | |||||
typedef unsigned __int64 uint_64t; | |||||
# elif defined( _MSC_VER ) && ( _MSC_VER < 1300 ) /* 1300 == VC++ 7.0 */ | |||||
# define BRG_UI64 | |||||
# define li_64(h) 0x##h##ui64 | |||||
typedef unsigned __int64 uint_64t; | |||||
# elif defined( __sun ) && defined(ULONG_MAX) && ULONG_MAX == 0xfffffffful | |||||
# define BRG_UI64 | |||||
# define li_64(h) 0x##h##ull | |||||
typedef unsigned long long uint_64t; | |||||
# elif defined( UINT_MAX ) && UINT_MAX > 4294967295u | |||||
# if UINT_MAX == 18446744073709551615u | |||||
# define BRG_UI64 | |||||
# define li_64(h) 0x##h##u | |||||
typedef unsigned int uint_64t; | |||||
# endif | |||||
# elif defined( ULONG_MAX ) && ULONG_MAX > 4294967295u | |||||
# if ULONG_MAX == 18446744073709551615ul | |||||
# define BRG_UI64 | |||||
# define li_64(h) 0x##h##ul | |||||
typedef unsigned long uint_64t; | |||||
# endif | |||||
# elif defined( ULLONG_MAX ) && ULLONG_MAX > 4294967295u | |||||
# if ULLONG_MAX == 18446744073709551615ull | |||||
# define BRG_UI64 | |||||
# define li_64(h) 0x##h##ull | |||||
typedef unsigned long long uint_64t; | |||||
# endif | |||||
# elif defined( ULONG_LONG_MAX ) && ULONG_LONG_MAX > 4294967295u | |||||
# if ULONG_LONG_MAX == 18446744073709551615ull | |||||
# define BRG_UI64 | |||||
# define li_64(h) 0x##h##ull | |||||
typedef unsigned long long uint_64t; | |||||
# endif | |||||
# elif defined(__GNUC__) /* DLW: avoid mingw problem with -ansi */ | |||||
# define BRG_UI64 | |||||
# define li_64(h) 0x##h##ull | |||||
typedef unsigned long long uint_64t; | |||||
# endif | |||||
#endif | |||||
#if defined( NEED_UINT_64T ) && !defined( BRG_UI64 ) | |||||
# error Please define uint_64t as an unsigned 64 bit type in brg_types.h | |||||
#endif | |||||
#ifndef RETURN_VALUES | |||||
# define RETURN_VALUES | |||||
# if defined( DLL_EXPORT ) | |||||
# if defined( _MSC_VER ) || defined ( __INTEL_COMPILER ) | |||||
# define VOID_RETURN __declspec( dllexport ) void __stdcall | |||||
# define INT_RETURN __declspec( dllexport ) int __stdcall | |||||
# elif defined( __GNUC__ ) | |||||
# define VOID_RETURN __declspec( __dllexport__ ) void | |||||
# define INT_RETURN __declspec( __dllexport__ ) int | |||||
# else | |||||
# error Use of the DLL is only available on the Microsoft, Intel and GCC compilers | |||||
# endif | |||||
# elif defined( DLL_IMPORT ) | |||||
# if defined( _MSC_VER ) || defined ( __INTEL_COMPILER ) | |||||
# define VOID_RETURN __declspec( dllimport ) void __stdcall | |||||
# define INT_RETURN __declspec( dllimport ) int __stdcall | |||||
# elif defined( __GNUC__ ) | |||||
# define VOID_RETURN __declspec( __dllimport__ ) void | |||||
# define INT_RETURN __declspec( __dllimport__ ) int | |||||
# else | |||||
# error Use of the DLL is only available on the Microsoft, Intel and GCC compilers | |||||
# endif | |||||
# elif defined( __WATCOMC__ ) | |||||
# define VOID_RETURN void __cdecl | |||||
# define INT_RETURN int __cdecl | |||||
# else | |||||
# define VOID_RETURN void | |||||
# define INT_RETURN int | |||||
# endif | |||||
#endif | |||||
/* These defines are used to declare buffers in a way that allows | |||||
faster operations on longer variables to be used. In all these | |||||
defines 'size' must be a power of 2 and >= 8 | |||||
dec_unit_type(size,x) declares a variable 'x' of length | |||||
'size' bits | |||||
dec_bufr_type(size,bsize,x) declares a buffer 'x' of length 'bsize' | |||||
bytes defined as an array of variables | |||||
each of 'size' bits (bsize must be a | |||||
multiple of size / 8) | |||||
ptr_cast(x,size) casts a pointer to a pointer to a | |||||
varaiable of length 'size' bits | |||||
*/ | |||||
#define ui_type(size) uint_##size##t | |||||
#define dec_unit_type(size,x) typedef ui_type(size) x | |||||
#define dec_bufr_type(size,bsize,x) typedef ui_type(size) x[bsize / (size >> 3)] | |||||
#define ptr_cast(x,size) ((ui_type(size)*)(x)) | |||||
#if defined(__cplusplus) | |||||
} | |||||
#endif | |||||
#endif |