URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.old-deja/] [g++.robertl/] [eb91.C] - Rev 818
Go to most recent revision | Compare with Previous | Blame | View Log
// { 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;
}
Go to most recent revision | Compare with Previous | Blame | View Log