#ifndef PDICTYPE_H
#define PDICTYPE_H

#include <glib.h>

typedef unsigned char uchar;
typedef unsigned char byte;
//typedef unsigned short ushort;
typedef unsigned short word;
//typedef unsigned int uint;
//typedef unsigned long ulong;

#define L_HEADERNAME 100
#define L_DICTITLE 40

#define NEWDIC3

//
// アライメントを１に制御
//
#pragma pack(push,1)

typedef struct NEWDIC3 {
	char headername[ L_HEADERNAME ];// 辞書ヘッダータイトル
	char dictitle[ L_DICTITLE ];		// 辞書名
	short version;									// 辞書のバージョン
	short lword;										// 見出語の最大長
	short ljapa;										// 訳語の最大長
	short block_size;								// １ブロックのバイト数(256 固定)

	short index_block;							// インデックスブロック数
	short header_size;							// ヘッダーのバイト数
	unsigned short index_size;			// インデックスのバイト数(未使用)
	short empty_block;							// 空きブロックの先頭物理ブロック番号（ないときは-1）
	short nindex;										// インデックスの要素の数(未使用)
	short nblock;										// 使用データブロック数(未使用)
	unsigned long nword;						// 登録単語数
	byte dicorder;									// 辞書の順番
	byte dictype;										// 辞書の種別
	byte attrlen;										// 単語属性の長さ

	long olenumber;									// OLE 用シリアル番号
	byte os;												// OS

	guint16 lid_word;								// 見出語言語ID
	guint16 lid_japa;								// 訳語部言語ID
	guint16 lid_exp;									// 用例部言語ID
	guint16 lid_pron;								// 発音記号言語ID
	guint16 lid_other;								// その他言語ID

	guint32 extheader;								// 拡張ヘッダーサイズ
	long empty_block2;							// 空きブロック先頭物理ブロック番号
	guint32 nindex2;									// インデックス要素の数
	guint32 nblock2;									// 使用データブロック数
	byte index_blkbit;							// 0:16bit, 1:32bit
	byte reserved[8+1];
	guint32 update_count; // 辞書更新回数
	byte charcode; // 文字コード
	char dummy[ 43 ]; // 宇宙のバランスを取るためのパディング
} newdic3;

#pragma pack(pop)

#endif

