/*
* Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _NJ_DIC_H_
#define _NJ_DIC_H_
#define NJ_DIC_TYPE_JIRITSU 0x00000000
#define NJ_DIC_TYPE_FZK 0x00000001
#define NJ_DIC_TYPE_TANKANJI 0x00000002
#define NJ_DIC_TYPE_CUSTOM_COMPRESS 0x00000003
#define NJ_DIC_TYPE_STDFORE 0x00000004
#define NJ_DIC_TYPE_FORECONV 0x00000005
#define NJ_DIC_TYPE_YOMINASHI 0x00010000
#define NJ_DIC_TYPE_CUSTOM_INCOMPRESS 0x00020002
#define NJ_DIC_TYPE_USER 0x80030000
#define NJ_DIC_TYPE_RULE 0x000F0000
#define NJ_HINSI_V2_F 0
#define NJ_HINSI_SUUJI_B 14
#define NJ_HINSI_BUNTOU_B 3
#define NJ_HINSI_TANKANJI_F 4
#define NJ_HINSI_TANKANJI_B 5
#define NJ_HINSI_MEISI_F 6
#define NJ_HINSI_MEISI_B 7
#define NJ_HINSI_JINMEI_F 8
#define NJ_HINSI_JINMEI_B 9
#define NJ_HINSI_CHIMEI_F 10
#define NJ_HINSI_CHIMEI_B 11
#define NJ_HINSI_KIGOU_F 12
#define NJ_HINSI_KIGOU_B 13
#define NJ_HINSI_V1_F 15
#define NJ_HINSI_V3_F 16
#define NJ_RULE_TYPE_BTOF 0
#define NJ_RULE_TYPE_FTOB 1
#define NJD_SAME_INDEX_LIMIT 50
#define NJ_INT16_READ(in) \
(((((NJ_INT16)((in)[0])) << 8) & 0xff00U) + ((in)[1] & 0xffU))
#define NJ_INT32_READ(in) \
(((((NJ_INT32)((in)[0])) << 24) & 0xff000000) | \
((((NJ_INT32)((in)[1])) << 16) & 0xff0000) | \
((((NJ_INT32)((in)[2])) << 8) & 0xff00) | \
((((NJ_INT32)((in)[3])) ) & 0xff))
#define NJ_INT32_WRITE(to, from)\
{(to)[0]=(NJ_UINT8)(((from)>>24) & 0x000000ff);\
(to)[1]=(NJ_UINT8)(((from)>>16) & 0x000000ff);\
(to)[2]=(NJ_UINT8)(((from)>>8) & 0x000000ff);\
(to)[3]=(NJ_UINT8)((from) & 0x000000ff);}
#define NJ_INT16_WRITE(to, from)\
{(to)[0]=(NJ_UINT8)(((from)>>8) & 0x00ff);\
(to)[1]=(NJ_UINT8)((from) & 0x00ff);}
#define NJ_GET_MAX_YLEN(h) ((NJ_INT16)(NJ_INT16_READ((h)+0x16)/sizeof(NJ_CHAR)))
#define NJ_GET_MAX_KLEN(h) ((NJ_INT16)(NJ_INT16_READ((h)+0x1A)/sizeof(NJ_CHAR)))
#define NJ_GET_DIC_TYPE(h) ((NJ_UINT32)(NJ_INT32_READ((h)+8)))
#define F_HINSI_SET_CNT(h) ((NJ_UINT16)(NJ_INT16_READ((h)+0x1C)))
#define B_HINSI_SET_CNT(h) ((NJ_UINT16)(NJ_INT16_READ((h)+0x1E)))
#endif