#ifndef _COMMON_HAN_H_
#define _COMMON_HAN_H_
#include <sys/isa_defs.h>
#ifdef _BIG_ENDIAN
typedef union {
unsigned int code;
struct {
unsigned short high;
unsigned short low;
} word;
struct {
unsigned char byte1;
unsigned char byte2;
unsigned char byte3;
unsigned char byte4;
} byte;
struct {
unsigned int high16bits: 16;
unsigned int msb1: 1;
unsigned int data1: 7;
unsigned int msb2: 1;
unsigned int data2: 7;
} wansung;
struct {
unsigned int high16bits: 16;
unsigned int msb: 1;
unsigned int chosung: 5;
unsigned int joongsung: 5;
unsigned int jongsung: 5;
} johap;
struct {
unsigned int high16bits: 16;
unsigned int data1: 4;
unsigned int data2: 6;
unsigned int data3: 6;
} unicode;
struct {
unsigned int high8bits: 8;
unsigned int sign1: 4;
unsigned int data1: 4;
unsigned int sign2: 2;
unsigned int data2: 6;
unsigned int sign3: 2;
unsigned int data3: 6;
} utf8;
} hcode_type;
#else
typedef union {
unsigned int code;
struct {
unsigned short low;
unsigned short high;
} word;
struct {
unsigned char byte4;
unsigned char byte3;
unsigned char byte2;
unsigned char byte1;
} byte;
struct {
unsigned int data2: 7;
unsigned int msb2: 1;
unsigned int data1: 7;
unsigned int msb1: 1;
unsigned int high16bits: 16;
} wansung;
struct {
unsigned int jongsung: 5;
unsigned int joongsung: 5;
unsigned int chosung: 5;
unsigned int msb: 1;
unsigned int high16bits: 16;
} johap;
struct {
unsigned int data3: 6;
unsigned int data2: 6;
unsigned int data1: 4;
unsigned int high16bits: 16;
} unicode;
struct {
unsigned int data3: 6;
unsigned int sign3: 2;
unsigned int data2: 6;
unsigned int sign2: 2;
unsigned int data1: 4;
unsigned int sign1: 4;
unsigned int high8bits: 8;
} utf8;
} hcode_type;
#endif
#endif