do { \
if (_endian != org::omg::CORBA::portable::naturualEndian) { \
jlong& v = *(jlong*)&value; \
int v0 = ((int*)&v)[0]; \
int v1 = ((int*)&v)[1]; \
v0 = ((v0 << 24) | ((v0 & 0xff00) << 8) | ((v0 >> 8) & 0xff00) | (v0 >> 24)); \
v1 = ((v1 << 24) | ((v1 & 0xff00) << 8) | ((v1 >> 8) & 0xff00) | (v1 >> 24)); \
((int*)&v)[0] = v1; \
((int*)&v)[1] = v0; \
} \
} while (false)