#ifndef ENDIANSWAP_H
#define ENDIANSWAP_H

#include <stdlib.h>
#include <stdio.h>

void * ES_swap(void * val,size_t size);

long ES_swap_long(const long *val);
int ES_swap_int(const int *val);
short ES_swap_short(const short *val);


float ES_swap_float(const float * val);
double ES_swap_double(const double * val);

size_t ES_fwrite_short(const short * buf, size_t nmemb, FILE *
		       stream);
size_t ES_fwrite_int(const int * buf, size_t nmemb, FILE * stream);
size_t ES_fwrite_float(const float * buf, size_t nmemb, FILE *
		       stream);
size_t ES_fwrite_double(const double * buf, size_t nmemb, FILE *
			stream);
size_t ES_fwrite_swap(const void * buf, size_t size, size_t nmemb, FILE *
		      stream);
size_t ES_fread_short(short * buf, size_t nmemb, FILE * stream);
size_t ES_fread_int(int * buf, size_t nmemb, FILE * stream);
size_t ES_fread_float(float * buf, size_t nmemb, FILE * stream);
size_t ES_fread_double(double * buf, size_t nmemb, FILE * stream);
size_t ES_fread_swap(double * buf, size_t size, size_t nmemb, FILE *
		     stream);


short * ES_memcpy_short(short * dest, const short * src, size_t
			count);
int * ES_memcpy_int(int * dest, const int * src, size_t count);
float * ES_memcpy_float(float * dest, const float * src, size_t
			count);
double * ES_memcpy_double(double * dest, const double * src, size_t
			  count);
void * ES_memcpy_swap(void * dest, const void * src, size_t count,
			size_t size);
short * ES_memmove_short(short * dest, const short * src, size_t
			count);
int * ES_memmove_int(int * dest, const int * src, size_t count);
float * ES_memmove_float(float * dest, const float * src, size_t
			count);
double * ES_memmove_double(double * dest, const double * src, size_t
			  count);
void * ES_memmove_swap(void * dest, const void * src, size_t count,
			size_t size);

#endif