16bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi/* 26bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * Copyright (C) 2013 The Android Open Source Project 36bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * 46bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License"); 56bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * you may not use this file except in compliance with the License. 66bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * You may obtain a copy of the License at 76bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * 86bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * http://www.apache.org/licenses/LICENSE-2.0 96bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * 106bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software 116bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS, 126bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * See the License for the specific language governing permissions and 146bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * limitations under the License. 156bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi */ 166bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 176bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi/* 186bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * !!!!! DO NOT CHANGE THE LOGIC IN THIS FILE !!!!! 196bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * Do not edit this file other than updating policy's interface. 206bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * 216bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * This file was generated from 226bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h 236bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi */ 246bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 2507e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanagi#ifndef LATINIME_BACKWARD_V402_VER4_BIGRAM_LIST_POLICY_H 2607e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanagi#define LATINIME_BACKWARD_V402_VER4_BIGRAM_LIST_POLICY_H 276bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 286bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi#include "defines.h" 2988bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/interface/dictionary_bigrams_structure_policy.h" 3088bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/structure/backward/v402/content/bigram_entry.h" 316bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 326bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanaginamespace latinime { 336bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanaginamespace backward { 3407e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanaginamespace v402 { 356bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 366bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagiclass BigramDictContent; 3707e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanagi} // namespace v402 386bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi} // namespace backward 3979bb37d499ed6fcabe981153d5ff0b5b69509933Keisuke Kuroyanagiclass NgramProperty; 406bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanaginamespace backward { 4107e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanaginamespace v402 { 4207e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanagi} // namespace v402 436bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi} // namespace backward 446bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagiclass HeaderPolicy; 456bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanaginamespace backward { 4607e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanaginamespace v402 { 476bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagiclass TerminalPositionLookupTable; 486bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 496bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagiclass Ver4BigramListPolicy : public DictionaryBigramsStructurePolicy { 506bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi public: 516bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi Ver4BigramListPolicy(BigramDictContent *const bigramDictContent, 526bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi const TerminalPositionLookupTable *const terminalPositionLookupTable, 536bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi const HeaderPolicy *const headerPolicy) 546bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi : mBigramDictContent(bigramDictContent), 556bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi mTerminalPositionLookupTable(terminalPositionLookupTable), 566bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi mHeaderPolicy(headerPolicy) {} 576bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 586bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi void getNextBigram(int *const outBigramPos, int *const outProbability, 596bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi bool *const outHasNext, int *const bigramEntryPos) const; 606bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 613225b6fe66a84ed7f499daf84d085141a66bb346Keisuke Kuroyanagi bool skipAllBigrams(int *const pos) const { 626bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi // Do nothing because we don't need to skip bigram lists in ver4 dictionaries. 633225b6fe66a84ed7f499daf84d085141a66bb346Keisuke Kuroyanagi return true; 646bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi } 656bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 666bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi bool addNewEntry(const int terminalId, const int newTargetTerminalId, 6779bb37d499ed6fcabe981153d5ff0b5b69509933Keisuke Kuroyanagi const NgramProperty *const ngramProperty, bool *const outAddedNewEntry); 686bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 696bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi bool removeEntry(const int terminalId, const int targetTerminalId); 706bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 716bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi bool updateAllBigramEntriesAndDeleteUselessEntries(const int terminalId, 726bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi int *const outBigramCount); 736bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 746bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi int getBigramEntryConut(const int terminalId); 756bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 766bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi private: 776bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4BigramListPolicy); 786bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 796bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi int getEntryPosToUpdate(const int targetTerminalIdToFind, const int bigramListPos, 806bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi int *const outTailEntryPos) const; 816bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 826bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi const BigramEntry createUpdatedBigramEntryFrom(const BigramEntry *const originalBigramEntry, 8379bb37d499ed6fcabe981153d5ff0b5b69509933Keisuke Kuroyanagi const NgramProperty *const ngramProperty) const; 846bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 856bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi bool updateHasNextFlag(const bool hasNext, const int bigramEntryPos); 866bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi 876bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi BigramDictContent *const mBigramDictContent; 886bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi const TerminalPositionLookupTable *const mTerminalPositionLookupTable; 896bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi const HeaderPolicy *const mHeaderPolicy; 906bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi}; 9107e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanagi} // namespace v402 926bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi} // namespace backward 936bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi} // namespace latinime 9407e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanagi#endif /* LATINIME_BACKWARD_V402_VER4_BIGRAM_LIST_POLICY_H */ 95