00001
00002
00003
00004
00005
00006
00007
00008 #ifndef IMPALGEBRA_ENDIAN_H
00009 #define IMPALGEBRA_ENDIAN_H
00010
00011 #include "algebra_config.h"
00012 #include <IMP/macros.h>
00013 #include <iostream>
00014 #include <fstream>
00015 #include <cstring>
00016 #include <cstdio>
00017
00018 IMPALGEBRA_BEGIN_NAMESPACE
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 void IMPALGEBRAEXPORT reversed_read(void *dest, size_t size,
00030 size_t nitems, std::ifstream& f, bool reverse);
00031
00032
00033
00034
00035
00036
00037
00038
00039 void IMPALGEBRAEXPORT reversed_write(const void* src,size_t size,size_t nitems,
00040 std::ofstream& f,bool reverse = false);
00041
00042
00043 #if !defined(SWIG) && !defined(IMP_DOXYGEN)
00044 void IMPALGEBRAEXPORT byte_swap(unsigned char* b, int n);
00045 #endif
00046
00047
00048 template <class T>
00049 inline void get_swapped_endian(T &x) {
00050 byte_swap((unsigned char*)& x,sizeof(T));
00051 }
00052
00053
00054 bool IMPALGEBRAEXPORT get_is_big_endian();
00055
00056
00057 bool IMPALGEBRAEXPORT get_is_little_endian();
00058
00059
00060 IMPALGEBRA_END_NAMESPACE
00061
00062 #endif