1/*
2 * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef _NJ_DIC_H_
18#define _NJ_DIC_H_
19
20#define NJ_DIC_TYPE_JIRITSU                     0x00000000
21#define NJ_DIC_TYPE_FZK                         0x00000001
22#define NJ_DIC_TYPE_TANKANJI                    0x00000002
23#define NJ_DIC_TYPE_CUSTOM_COMPRESS             0x00000003
24#define NJ_DIC_TYPE_STDFORE                     0x00000004
25#define NJ_DIC_TYPE_FORECONV                    0x00000005
26#define NJ_DIC_TYPE_YOMINASHI                   0x00010000
27#define NJ_DIC_TYPE_CUSTOM_INCOMPRESS           0x00020002
28#define NJ_DIC_TYPE_USER                        0x80030000
29#define NJ_DIC_TYPE_RULE                        0x000F0000
30
31#define NJ_HINSI_V2_F            0
32#define NJ_HINSI_SUUJI_B        14
33#define NJ_HINSI_BUNTOU_B        3
34#define NJ_HINSI_TANKANJI_F      4
35#define NJ_HINSI_TANKANJI_B      5
36#define NJ_HINSI_MEISI_F         6
37#define NJ_HINSI_MEISI_B         7
38#define NJ_HINSI_JINMEI_F        8
39#define NJ_HINSI_JINMEI_B        9
40#define NJ_HINSI_CHIMEI_F       10
41#define NJ_HINSI_CHIMEI_B       11
42#define NJ_HINSI_KIGOU_F        12
43#define NJ_HINSI_KIGOU_B        13
44#define NJ_HINSI_V1_F           15
45#define NJ_HINSI_V3_F           16
46#define NJ_RULE_TYPE_BTOF       0
47#define NJ_RULE_TYPE_FTOB       1
48
49#define NJD_SAME_INDEX_LIMIT    50
50
51#define NJ_INT16_READ(in)                                               \
52    (((((NJ_INT16)((in)[0])) << 8) & 0xff00U) + ((in)[1] & 0xffU))
53
54#define NJ_INT32_READ(in)                                               \
55    (((((NJ_INT32)((in)[0])) << 24) & 0xff000000) |                     \
56     ((((NJ_INT32)((in)[1])) << 16) &   0xff0000) |                     \
57     ((((NJ_INT32)((in)[2])) <<  8) &     0xff00) |                     \
58     ((((NJ_INT32)((in)[3]))      ) &       0xff))
59
60#define NJ_INT32_WRITE(to, from)\
61        {(to)[0]=(NJ_UINT8)(((from)>>24) & 0x000000ff);\
62         (to)[1]=(NJ_UINT8)(((from)>>16) & 0x000000ff);\
63         (to)[2]=(NJ_UINT8)(((from)>>8) & 0x000000ff);\
64         (to)[3]=(NJ_UINT8)((from) & 0x000000ff);}
65
66#define NJ_INT16_WRITE(to, from)\
67        {(to)[0]=(NJ_UINT8)(((from)>>8) & 0x00ff);\
68         (to)[1]=(NJ_UINT8)((from) & 0x00ff);}
69
70#define NJ_GET_MAX_YLEN(h) ((NJ_INT16)(NJ_INT16_READ((h)+0x16)/sizeof(NJ_CHAR)))
71
72#define NJ_GET_MAX_KLEN(h) ((NJ_INT16)(NJ_INT16_READ((h)+0x1A)/sizeof(NJ_CHAR)))
73
74#define NJ_GET_DIC_TYPE(h) ((NJ_UINT32)(NJ_INT32_READ((h)+8)))
75
76#define F_HINSI_SET_CNT(h) ((NJ_UINT16)(NJ_INT16_READ((h)+0x1C)))
77#define B_HINSI_SET_CNT(h) ((NJ_UINT16)(NJ_INT16_READ((h)+0x1E)))
78
79
80#endif
81