//
// Copyright (c) 2009-2010, ERICSSON AB All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// * Neither the name of the ERICSSON AB nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
// THE POSSIBILITY OF SUCH DAMAGE.
//
#ifndef FELDSPAR_C99_H
#define FELDSPAR_C99_H
#include <stdint.h>
int8_t pow_fun_int8( int8_t, int8_t );
int16_t pow_fun_int16( int16_t, int16_t );
int32_t pow_fun_int32( int32_t, int32_t );
int64_t pow_fun_int64( int64_t, int64_t );
uint8_t pow_fun_uint8( uint8_t, uint8_t );
uint16_t pow_fun_uint16( uint16_t, uint16_t );
uint32_t pow_fun_uint32( uint32_t, uint32_t );
uint64_t pow_fun_uint64( uint64_t, uint64_t );
int8_t abs_fun_int8( int8_t );
int16_t abs_fun_int16( int16_t );
int32_t abs_fun_int32( int32_t );
int64_t abs_fun_int64( int64_t );
int8_t signum_fun_int8( int8_t );
int16_t signum_fun_int16( int16_t );
int32_t signum_fun_int32( int32_t );
int64_t signum_fun_int64( int64_t );
uint8_t signum_fun_uint8( uint8_t );
uint16_t signum_fun_uint16( uint16_t );
uint32_t signum_fun_uint32( uint32_t );
uint64_t signum_fun_uint64( uint64_t );
float signum_fun_float( float );
int8_t bit_fun_int8( int32_t );
int16_t bit_fun_int16( int32_t );
int32_t bit_fun_int32( int32_t );
int64_t bit_fun_int64( int32_t );
uint8_t bit_fun_uint8( int32_t );
uint16_t bit_fun_uint16( int32_t );
uint32_t bit_fun_uint32( int32_t );
uint64_t bit_fun_uint64( int32_t );
int8_t setBit_fun_int8( int8_t, int32_t );
int16_t setBit_fun_int16( int16_t, int32_t );
int32_t setBit_fun_int32( int32_t, int32_t );
int64_t setBit_fun_int64( int64_t, int32_t );
uint8_t setBit_fun_uint8( uint8_t, int32_t );
uint16_t setBit_fun_uint16( uint16_t, int32_t );
uint32_t setBit_fun_uint32( uint32_t, int32_t );
uint64_t setBit_fun_uint64( uint64_t, int32_t );
int8_t clearBit_fun_int8( int8_t, int32_t );
int16_t clearBit_fun_int16( int16_t, int32_t );
int32_t clearBit_fun_int32( int32_t, int32_t );
int64_t clearBit_fun_int64( int64_t, int32_t );
uint8_t clearBit_fun_uint8( uint8_t, int32_t );
uint16_t clearBit_fun_uint16( uint16_t, int32_t );
uint32_t clearBit_fun_uint32( uint32_t, int32_t );
uint64_t clearBit_fun_uint64( uint64_t, int32_t );
int8_t complementBit_fun_int8( int8_t, int32_t );
int16_t complementBit_fun_int16( int16_t, int32_t );
int32_t complementBit_fun_int32( int32_t, int32_t );
int64_t complementBit_fun_int64( int64_t, int32_t );
uint8_t complementBit_fun_uint8( uint8_t, int32_t );
uint16_t complementBit_fun_uint16( uint16_t, int32_t );
uint32_t complementBit_fun_uint32( uint32_t, int32_t );
uint64_t complementBit_fun_uint64( uint64_t, int32_t );
int testBit_fun_int8( int8_t, int32_t );
int testBit_fun_int16( int16_t, int32_t );
int testBit_fun_int32( int32_t, int32_t );
int testBit_fun_int64( int64_t, int32_t );
int testBit_fun_uint8( uint8_t, int32_t );
int testBit_fun_uint16( uint16_t, int32_t );
int testBit_fun_uint32( uint32_t, int32_t );
int testBit_fun_uint64( uint64_t, int32_t );
int8_t rotateL_fun_int8( int8_t, int32_t );
int16_t rotateL_fun_int16( int16_t, int32_t );
int32_t rotateL_fun_int32( int32_t, int32_t );
int64_t rotateL_fun_int64( int64_t, int32_t );
uint8_t rotateL_fun_uint8( uint8_t, int32_t );
uint16_t rotateL_fun_uint16( uint16_t, int32_t );
uint32_t rotateL_fun_uint32( uint32_t, int32_t );
uint64_t rotateL_fun_uint64( uint64_t, int32_t );
int8_t rotateR_fun_int8( int8_t, int32_t );
int16_t rotateR_fun_int16( int16_t, int32_t );
int32_t rotateR_fun_int32( int32_t, int32_t );
int64_t rotateR_fun_int64( int64_t, int32_t );
uint8_t rotateR_fun_uint8( uint8_t, int32_t );
uint16_t rotateR_fun_uint16( uint16_t, int32_t );
uint32_t rotateR_fun_uint32( uint32_t, int32_t );
uint64_t rotateR_fun_uint64( uint64_t, int32_t );
int8_t reverseBits_fun_int8( int8_t );
int16_t reverseBits_fun_int16( int16_t );
int32_t reverseBits_fun_int32( int32_t );
int64_t reverseBits_fun_int64( int64_t );
uint8_t reverseBits_fun_uint8( uint8_t );
uint16_t reverseBits_fun_uint16( uint16_t );
uint32_t reverseBits_fun_uint32( uint32_t );
uint64_t reverseBits_fun_uint64( uint64_t );
int32_t bitScan_fun_int8( int8_t );
int32_t bitScan_fun_int16( int16_t );
int32_t bitScan_fun_int32( int32_t );
int32_t bitScan_fun_int64( int64_t );
int32_t bitScan_fun_uint8( uint8_t );
int32_t bitScan_fun_uint16( uint16_t );
int32_t bitScan_fun_uint32( uint32_t );
int32_t bitScan_fun_uint64( uint64_t );
int32_t bitCount_fun_int8( int8_t );
int32_t bitCount_fun_int16( int16_t );
int32_t bitCount_fun_int32( int32_t );
int32_t bitCount_fun_int64( int64_t );
int32_t bitCount_fun_uint8( uint8_t );
int32_t bitCount_fun_uint16( uint16_t );
int32_t bitCount_fun_uint32( uint32_t );
int32_t bitCount_fun_uint64( uint64_t );
void copy_arrayOf_int8( int8_t*, int32_t, int8_t* );
void copy_arrayOf_int16( int16_t*, int32_t, int16_t* );
void copy_arrayOf_int32( int32_t*, int32_t, int32_t* );
void copy_arrayOf_int64( int64_t*, int32_t, int64_t* );
void copy_arrayOf_uint8( uint8_t*, int32_t, uint8_t* );
void copy_arrayOf_uint16( uint16_t*, int32_t, uint16_t* );
void copy_arrayOf_uint32( uint32_t*, int32_t, uint32_t* );
void copy_arrayOf_uint64( uint64_t*, int32_t, uint64_t* );
void copy_arrayOf_float( float*, int32_t, float* );
void traceStart();
void traceEnd();
void trace_int8( int8_t, int32_t );
void trace_int16( int16_t, int32_t );
void trace_int32( int32_t, int32_t );
void trace_int64( int64_t, int32_t );
void trace_uint8( uint8_t, int32_t );
void trace_uint16( uint16_t, int32_t );
void trace_uint32( uint32_t, int32_t );
void trace_uint64( uint64_t, int32_t );
void trace_float( float, int32_t );
#endif /* FELDSPAR_C99_H */