1053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/*
259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
3053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *
4053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * you may not use this file except in compliance with the License.
6053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * You may obtain a copy of the License at
7053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *
8053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *
10053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * See the License for the specific language governing permissions and
14053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * limitations under the License.
15053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */
16053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
17053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#include "nj_lib.h"
18053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#include "nj_err.h"
19053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#include "nj_ext.h"
20053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#include "nj_dic.h"
21053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
22053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
23053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
24053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectstatic NJ_INT16 set_previous_selection(NJ_CLASS *iwnn, NJ_RESULT *result);
25053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectstatic NJ_INT16 set_learn_word_info(NJ_CLASS *iwnn, NJ_LEARN_WORD_INFO *lword, NJ_RESULT *result);
26053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
27053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
28053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
29053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_select(NJ_CLASS *iwnn, NJ_RESULT *r_result) {
30053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    NJ_INT16 ret;
31053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    NJ_DIC_SET *dics;
32053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
33053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
34053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if (iwnn == NULL) {
35053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
36053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return NJ_SET_ERR_VAL(NJ_FUNC_NJ_SELECT, NJ_ERR_PARAM_ENV_NULL);
37053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
38053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    dics = &(iwnn->dic_set);
39053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
40053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if (dics->rHandle[NJ_MODE_TYPE_HENKAN] == NULL) {
41053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return NJ_SET_ERR_VAL(NJ_FUNC_NJ_SELECT, NJ_ERR_NO_RULEDIC);
42053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
43053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
44053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
45053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if ( r_result != NULL ) {
46053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
47053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        ret = set_previous_selection(iwnn, r_result);
48053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        if (ret < 0) {
49053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            return ret;
50053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
51053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    } else {
52053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
53053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        set_previous_selection(iwnn, NULL);
54053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
55053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    return 0;
56053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project}
57053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
58053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_init(NJ_CLASS *iwnn) {
59053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
60053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if (iwnn == NULL) {
61053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
62053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return NJ_SET_ERR_VAL(NJ_FUNC_NJ_INIT, NJ_ERR_PARAM_ENV_NULL);
63053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
64053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
65053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
66053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    set_previous_selection(iwnn, NULL);
67053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    return 0;
68053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project}
69053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
70053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_get_candidate(NJ_CLASS *iwnn, NJ_RESULT *result, NJ_CHAR *buf, NJ_UINT16 buf_size) {
71053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    NJ_INT16 ret;
72053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
73053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
74053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if (iwnn == NULL) {
75053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
76053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return NJ_SET_ERR_VAL(NJ_FUNC_NJ_GET_CANDIDATE, NJ_ERR_PARAM_ENV_NULL);
77053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
78053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if (result == NULL) {
79053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return NJ_SET_ERR_VAL(NJ_FUNC_NJ_GET_CANDIDATE, NJ_ERR_PARAM_RESULT_NULL);
80053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
81053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
82053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if ((buf == NULL) || (buf_size == 0)) {
83053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return NJ_SET_ERR_VAL(NJ_FUNC_NJ_GET_CANDIDATE, NJ_ERR_BUFFER_NOT_ENOUGH);
84053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
85053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
86053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    switch (NJ_GET_RESULT_OP(result->operation_id)) {
87053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    case NJ_OP_SEARCH:
88053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        ret = njd_get_candidate(iwnn, result, buf, buf_size);
89053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        break;
90053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
91053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    default:
92053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
93053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        ret = NJ_SET_ERR_VAL(NJ_FUNC_NJ_GET_CANDIDATE, NJ_ERR_INVALID_RESULT);
94053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        break;
95053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
96053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
97053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    return ret;
98053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project}
99053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
100053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_EXTERN NJ_INT16 njx_get_stroke(NJ_CLASS *iwnn, NJ_RESULT *result, NJ_CHAR *buf, NJ_UINT16 buf_size) {
101053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    NJ_INT16 ret;
102053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
103053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
104053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if (iwnn == NULL) {
105053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
106053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return NJ_SET_ERR_VAL(NJ_FUNC_NJ_GET_STROKE, NJ_ERR_PARAM_ENV_NULL);
107053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
108053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if (result == NULL) {
109053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return NJ_SET_ERR_VAL(NJ_FUNC_NJ_GET_STROKE, NJ_ERR_PARAM_RESULT_NULL);
110053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
111053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
112053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if ((buf == NULL) || (buf_size == 0)) {
113053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return NJ_SET_ERR_VAL(NJ_FUNC_NJ_GET_STROKE, NJ_ERR_BUFFER_NOT_ENOUGH);
114053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
115053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
116053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    switch (NJ_GET_RESULT_OP(result->operation_id)) {
117053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    case NJ_OP_SEARCH:
118053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        ret = njd_get_stroke(iwnn, result, buf, buf_size);
119053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        break;
120053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
121053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    default:
122053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
123053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        ret = NJ_SET_ERR_VAL(NJ_FUNC_NJ_GET_STROKE, NJ_ERR_INVALID_RESULT);
124053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        break;
125053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
126053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    return ret;
127053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project}
128053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
129053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
130053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectstatic NJ_INT16 set_previous_selection(NJ_CLASS *iwnn, NJ_RESULT *result) {
131053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    NJ_INT16   ret;
132053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    NJ_PREVIOUS_SELECTION_INFO *prev_info = &(iwnn->previous_selection);
133053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
134053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
135053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if (result == NULL) {
136053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        prev_info->count = 0;
137053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project   } else {
138053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        ret = set_learn_word_info(iwnn, &(prev_info->selection_data), result);
139053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        if (ret < 0) {
140053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
141053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            return ret;
142053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
143053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
144053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        prev_info->count = 1;
145053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
146053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
147053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    return 0;
148053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project}
149053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
150053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectstatic NJ_INT16 set_learn_word_info(NJ_CLASS *iwnn, NJ_LEARN_WORD_INFO *lword, NJ_RESULT *result)
151053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project{
152053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    NJ_INT16 ret;
153053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    NJ_DIC_SET *dics = &(iwnn->dic_set);
154053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
155053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
156053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
157053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#if 0
158053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
159053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    ret = njx_get_stroke(iwnn, result, lword->yomi, sizeof(lword->yomi));
160053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if (ret < 0) {
161053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return ret;
162053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
163053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    lword->yomi_len = (NJ_UINT8)ret;
164053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    ret = njx_get_candidate(iwnn, result, lword->hyouki, sizeof(lword->hyouki));
165053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if (ret < 0) {
166053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return ret;
167053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
168053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    lword->hyouki_len = (NJ_UINT8)ret;
169053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#else
170053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    lword->yomi[0] = 0x0000;
171053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    lword->yomi_len = 0;
172053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    lword->hyouki[0] = 0x0000;
173053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    lword->hyouki_len = 0;
174053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#endif
175053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
176053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
177053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    lword->f_hinsi = NJ_GET_FPOS_FROM_STEM(&(result->word));
178053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    lword->stem_b_hinsi = NJ_GET_BPOS_FROM_STEM(&(result->word));
179053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    lword->b_hinsi = NJ_GET_BPOS_FROM_STEM(&(result->word));
180053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
181053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
182053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    ret = njd_r_get_hinsi(dics->rHandle[NJ_MODE_TYPE_HENKAN], NJ_HINSI_TANKANJI_F);
183053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if ((ret != 0) && (lword->f_hinsi == (NJ_UINT16)ret)) {
184053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        ret = njd_r_get_hinsi(dics->rHandle[NJ_MODE_TYPE_HENKAN], NJ_HINSI_CHIMEI_F);
185053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        if (ret != 0) {
186053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            lword->f_hinsi = (NJ_UINT16)ret;
187053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
188053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
189053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
190053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
191053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    ret = njd_r_get_hinsi(dics->rHandle[NJ_MODE_TYPE_HENKAN], NJ_HINSI_TANKANJI_B);
192053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if ((ret != 0) && (lword->b_hinsi == (NJ_UINT16)ret)) {
193053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        ret = njd_r_get_hinsi(dics->rHandle[NJ_MODE_TYPE_HENKAN], NJ_HINSI_CHIMEI_B);
194053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        if (ret != 0) {
195053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            lword->b_hinsi = (NJ_UINT16)ret;
196053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
197053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
198053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
199053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
200053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    ret = njd_r_get_hinsi(dics->rHandle[NJ_MODE_TYPE_HENKAN], NJ_HINSI_TANKANJI_B);
201053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    if ((ret != 0) && (lword->stem_b_hinsi == (NJ_UINT16)ret)) {
202053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        ret = njd_r_get_hinsi(dics->rHandle[NJ_MODE_TYPE_HENKAN], NJ_HINSI_CHIMEI_B);
203053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        if (ret != 0) {
204053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            lword->stem_b_hinsi = (NJ_UINT16)ret;
205053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
206053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
207053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
208053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    return 0;
209053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
210053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project}
211