
#include "../include/pdictype.h"
#include "../include/field.h"

///////////////////////////////////////////////////////////////////////////
//フィールド情報を取得する
char* pdicGetField(uchar *data,field_st *field,int fieldw)
{
	guint16 c,i;
	guint32 lc;

	//フィールドサイズ
	c=data[0]+(data[1]<<8);
	data++;
	data++;

	//フィールド長が４バイトに指定されている場合はさらに２バイト取得する
	if(!fieldw){
		field->size=c;
	}else{
		lc=c;
		lc=(lc<<16)+data[0]+(data[1]<<8);
		data++;
		data++;
		field->size=lc;
	}

	//圧縮長の取得
	field->exp=*data++;

	//見出しの取得
	field->chapter=g_strdup(data);
	//dataポインタの移動と訳語の長さを検出するためにカウント値のアップ
	for(c=0;*data!=0;data++,c++);data++;
	//見出し語属性の取得
	field->attribute=*data++;
	c++;
	//訳語の長さを取得
	i=field->size-c;

	//訳語の文字格納領域の確保
	field->translation=g_strnfill (i+1,0);
	c=0;
	while(i--){ field->translation[c++]=*data++; }
	field->translation[c-1]=0;
	data--;	
	return data;
}
//////////////////////////////////////////////////////////////////////
//フィールド情報をクリアする
void pdicClearField(field_st *field)
{
	g_free(field->chapter);
	g_free(field->translation);
}
