1c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada/*
2c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada * Copyright (C) 2013 The Android Open Source Project
3c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada *
4c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada * Licensed under the Apache License, Version 2.0 (the "License");
5c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada * you may not use this file except in compliance with the License.
6c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada * You may obtain a copy of the License at
7c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada *
8c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada *      http://www.apache.org/licenses/LICENSE-2.0
9c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada *
10c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada * Unless required by applicable law or agreed to in writing, software
11c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada * distributed under the License is distributed on an "AS IS" BASIS,
12c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada * See the License for the specific language governing permissions and
14c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada * limitations under the License.
15c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada */
16c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada
17c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanadapackage com.android.inputmethod.latin.makedict;
18c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada
19ea89cb40b7641764d385bbc200c5910e08a29c1aKeisuke Kuroyanagiimport com.android.inputmethod.annotations.UsedForTesting;
20c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanadaimport com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
2170e81af72678d95c2a38412c478e06837a51c7cbYuichiro Hanadaimport com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
22c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada
23c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanadaimport java.io.IOException;
249168ab60cf08385554a7a8255e40698988ee37f6Akifumi Yoshimotoimport java.util.HashMap;
25c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada
26c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada/**
27c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada * An interface of binary dictionary encoder.
28c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada */
29c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanadapublic interface DictEncoder {
30ea89cb40b7641764d385bbc200c5910e08a29c1aKeisuke Kuroyanagi    @UsedForTesting
31c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada    public void writeDictionary(final FusionDictionary dict, final FormatOptions formatOptions)
32c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada            throws IOException, UnsupportedFormatException;
3370e81af72678d95c2a38412c478e06837a51c7cbYuichiro Hanada
3470e81af72678d95c2a38412c478e06837a51c7cbYuichiro Hanada    public void setPosition(final int position);
3570e81af72678d95c2a38412c478e06837a51c7cbYuichiro Hanada    public int getPosition();
3670e81af72678d95c2a38412c478e06837a51c7cbYuichiro Hanada    public void writePtNodeCount(final int ptNodeCount);
379168ab60cf08385554a7a8255e40698988ee37f6Akifumi Yoshimoto    public void writePtNode(final PtNode ptNode, final FusionDictionary dict,
389168ab60cf08385554a7a8255e40698988ee37f6Akifumi Yoshimoto            final HashMap<Integer, Integer> codePointToOneByteCodeMap);
39c922c8a504ab31aae26193f1bf319bf9f91406a5Yuichiro Hanada}
40