Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.old-deja/g++.robertl/eb91.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do run } #include <sys/types.h> #include <algorithm> typedef short _eb91_int16_t; typedef char _eb91_int8_t; typedef unsigned char _eb91_u_int8_t; typedef unsigned short _eb91_u_int16_t; template <class INT> class other_endian { private: INT value; _eb91_u_int16_t change_endian(_eb91_u_int16_t x) { union { _eb91_u_int16_t i; _eb91_u_int8_t c[2]; } val; val.i = x; std::swap(val.c[0], val.c[1]); return val.i; } _eb91_int16_t change_endian(_eb91_int16_t x) { union { _eb91_int16_t i; _eb91_int8_t c[2]; } val; val.i = x; std::swap(val.c[0], val.c[1]); return val.i; } public: other_endian(const INT i = 0) { value = change_endian(i); } operator INT() { return change_endian(value); } }; template <class INT> class same_endian { INT value; public: same_endian(const INT i = 0) { value = i; } operator INT() { return value; } }; int main() { other_endian <_eb91_u_int16_t> little_endian_16_bit_int; return 0; }