#ifndef _ROME_TBL_H_
#define _ROME_RBL_H_

struct ROME
{
	char	*r;
	char	*k;
};

static struct ROME tbl_a[] = {
				"A", "あ",
				"I", "い",
				"U", "う",
				"E", "え",
				"O", "お",
				"-", "ー",
				"~", "〜",
				"!", "！",
				"?", "？",
				".", "。",
				",", "、",
			};

static struct ROME tbl_b[] = {
				"BA", "ば",
				"BI", "び",
				"BU", "ぶ",
				"BE", "べ",
				"BO", "ぼ",
				"BYA", "びゃ",
				"BYI", "びぃ",
				"BYU", "びゅ",
				"BYE", "びぇ",
				"BYO", "びょ",
			};

static struct ROME tbl_c[] = {
				"CHI", "ち",
				"CYA", "ちゃ",
				"CHA", "ちゃ",
				"CYI", "ちぃ",
				"CYU", "ちゅ",
				"CHU", "ちゅ",
				"CYE", "ちぇ",
				"CHE", "ちぇ",
				"CYO", "ちょ",
				"CHO", "ちょ",
			};

static struct ROME tbl_d[] = {
				"DA", "だ",
				"DI", "ぢ",
				"DU", "づ",
				"DE", "で",
				"DO", "ど",
				"DYA", "ぢゃ",
				"DYI", "ぢぃ",
				"DYU", "ぢゅ",
				"DYE", "ぢぇ",
				"DYO", "ぢょ",
				"DHA", "でゃ",
				"DHI", "でぃ",
				"DHU", "でゅ",
				"DHE", "でぇ",
				"DHO", "でょ",
				"DWU", "でょ",
			};

static struct ROME tbl_f[] = {
				"FA", "ふぁ",
				"FI", "ふぃ",
				"FU", "ふ",
				"FE", "ふぇ",
				"FO", "ふぉ",
				"FYA", "ふゃ",
				"FYI", "ふぃ",
				"FYU", "ふゅ",
				"FYE", "ふぇ",
				"FYO", "ふょ",
			};

static struct ROME tbl_g[] = {
				"GA", "が",
				"GI", "ぎ",
				"GU", "ぐ",
				"GE", "げ",
				"GO", "ご",
				"GYA", "ぎゃ",
				"GYI", "ぎぃ",
				"GYU", "ぎゅ",
				"GYE", "ぎぇ",
				"GYO", "ぎょ",
				"GWA", "ぐぁ",
			};

static struct ROME tbl_h[] = {
				"HA", "は",
				"HI", "ひ",
				"HU", "ふ",
				"HE", "へ",
				"HO", "ほ",
				"HYA", "ひゃ",
				"HYI", "ひぃ",
				"HYU", "ひゅ",
				"HYE", "ひぇ",
				"HYO", "ひょ",
			};

static struct ROME tbl_j[] = {
				"JA", "じゃ",
				"JI", "じ",
				"JU", "じゅ",
				"JE", "じぇ",
				"JO", "じょ",
				"JYA", "じゃ",
				"JYI", "じぃ",
				"JYU", "じゅ",
				"JYE", "じぇ",
				"JYO", "じょ",
			};

static struct ROME tbl_k[] = {
				"KA", "か",
				"KI", "き",
				"KU", "く",
				"KE", "け",
				"KO", "こ",
				"KYA", "きゃ",
				"KYI", "きぃ",
				"KYU", "きゅ",
				"KYE", "きぇ",
				"KYO", "きょ",
				"KWA", "くぁ",
			};

static struct ROME tbl_l[] = {
				"LA", "ぁ",
				"LI", "ぃ",
				"LU", "ぅ",
				"LE", "ぇ",
				"LO", "ぉ",
				"LTU", "っ",
				"LYA", "ゃ",
				"LYI", "ぃ",
				"LYU", "ゅ",
				"LYE", "ぇ",
				"LYO", "ょ",
			};

static struct ROME tbl_m[] = {
				"MA", "ま",
				"MI", "み",
				"MU", "む",
				"ME", "め",
				"MO", "も",
				"MYA", "みゃ",
				"MYI", "みぃ",
				"MYU", "みゅ",
				"MYE", "みぇ",
				"MYO", "みょ",
			};

static struct ROME tbl_n[] = {
				"NA", "な",
				"NI", "に",
				"NU", "ぬ",
				"NE", "ね",
				"NO", "の",
				"NYA", "にゃ",
				"NYI", "にぃ",
				"NYU", "にゅ",
				"NYE", "にぇ",
				"NYO", "にょ",
				"NN", "ん",
			};

static struct ROME tbl_p[] = {
				"PA", "ぱ",
				"PI", "ぴ",
				"PU", "ぷ",
				"PE", "ぺ",
				"PO", "ぽ",
				"PYA", "ぴゃ",
				"PYI", "ぴぃ",
				"PYU", "ぴゅ",
				"PYE", "ぴぇ",
				"PYO", "ぴょ",
			};

static struct ROME tbl_r[] = {
				"RA", "ら",
				"RI", "り",
				"RU", "る",
				"RE", "れ",
				"RO", "ろ",
				"RYA", "りゃ",
				"RYI", "りぃ",
				"RYU", "りゅ",
				"RYE", "りぇ",
				"RYO", "りょ",
			};

static struct ROME tbl_s[] = {
				"SA", "さ",
				"SI", "し",
				"SHI", "し",
				"SU", "す",
				"SE", "せ",
				"SO", "そ",
				"SYA", "しゃ",
				"SYI", "しぃ",
				"SYU", "しゅ",
				"SYE", "しぇ",
				"SYO", "しょ",
				"SHA", "しゃ",
				"SHU", "しゅ",
				"SHE", "しぇ",
				"SHO", "しょ",
			};

static struct ROME tbl_t[] = {
				"TA", "た",
				"TI", "ち",
				"TU", "つ",
				"TSU", "つ",
				"TE", "て",
				"TO", "と",
				"XTU", "っ",
				"TYA", "ちゃ",
				"TYI", "ちぃ",
				"TYU", "ちゅ",
				"TYE", "ちぇ",
				"TYO", "ちょ",
				"TSA", "つぁ",
				"TSI", "つぃ",
				"TSE", "つぇ",
				"TSO", "つぉ",
				"THA", "てゃ",
				"THI", "てぃ",
				"THU", "てゅ",
				"THE", "てぇ",
				"THO", "てょ",
				"TWU", "とぅ",
			};

static struct ROME tbl_v[] = {
				"VA", "う゛ぁ",
				"VI", "う゛ぃ",
				"VU", "う゛",
				"VE", "う゛ぇ",
				"VO", "う゛ぉ",
			};

static struct ROME tbl_w[] = {
				"WA", "わ",
				"WI", "うぃ",
				"WU", "う",
				"WE", "うぇ",
				"WO", "を",
			};

static struct ROME tbl_x[] = {
				"XA", "ぁ",
				"XI", "ぃ",
				"XU", "ぅ",
				"XE", "ぇ",
				"XO", "ぉ",
				"XYA", "ゃ",
				"XYI", "ぃ",
				"XYU", "ゅ",
				"XYE", "ぇ",
				"XYO", "ょ",
				"XTU", "っ",
			};

static struct ROME tbl_y[] = {
				"YA", "や",
				"YI", "い",
				"YU", "ゆ",
				"YE", "いぇ",
				"YO", "よ",
			};

static struct ROME tbl_z[] = {
				"ZA", "ざ",
				"ZI", "じ",
				"ZU", "ず",
				"ZE", "ぜ",
				"ZO", "ぞ",
				"ZYA", "じゃ",
				"ZYI", "じぃ",
				"ZYU", "じゅ",
				"ZYE", "じぇ",
				"ZYO", "じょ",
			};

static struct ROME *tbl_idx[] = {
				tbl_a,
				tbl_b,
				tbl_c,
				tbl_d,
				NULL,
				tbl_f,
				tbl_g,
				tbl_h,
				NULL,
				tbl_j,
				tbl_k,
				tbl_l,
				tbl_m,
				tbl_n,
				NULL,
				tbl_p,
				NULL,
				tbl_r,
				tbl_s,
				tbl_t,
				NULL,
				tbl_v,
				tbl_w,
				tbl_x,
				tbl_y,
				tbl_z,
			};

static int tbl_idx_size[] = {
				sizeof(tbl_a) / sizeof(struct ROME),
				sizeof(tbl_b) / sizeof(struct ROME),
				sizeof(tbl_c) / sizeof(struct ROME),
				sizeof(tbl_d) / sizeof(struct ROME),
				0,
				sizeof(tbl_f) / sizeof(struct ROME),
				sizeof(tbl_g) / sizeof(struct ROME),
				sizeof(tbl_h) / sizeof(struct ROME),
				0,
				sizeof(tbl_j) / sizeof(struct ROME),
				sizeof(tbl_k) / sizeof(struct ROME),
				sizeof(tbl_l) / sizeof(struct ROME),
				sizeof(tbl_m) / sizeof(struct ROME),
				sizeof(tbl_n) / sizeof(struct ROME),
				0,
				sizeof(tbl_p) / sizeof(struct ROME),
				0,
				sizeof(tbl_r) / sizeof(struct ROME),
				sizeof(tbl_s) / sizeof(struct ROME),
				sizeof(tbl_t) / sizeof(struct ROME),
				0,
				sizeof(tbl_v) / sizeof(struct ROME),
				sizeof(tbl_w) / sizeof(struct ROME),
				sizeof(tbl_x) / sizeof(struct ROME),
				sizeof(tbl_y) / sizeof(struct ROME),
				sizeof(tbl_z) / sizeof(struct ROME),
			};

#endif
