1 /* 2 * Copyright (C) 2013 The Android Open Source Project 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 LATINIME_BINARY_DICTIONARY_BIGRAMS_ITERATOR_H 18 #define LATINIME_BINARY_DICTIONARY_BIGRAMS_ITERATOR_H 19 20 #include "defines.h" 21 #include "suggest/core/policy/dictionary_bigrams_structure_policy.h" 22 23 namespace latinime { 24 25 class BinaryDictionaryBigramsIterator { 26 public: 27 BinaryDictionaryBigramsIterator( 28 const DictionaryBigramsStructurePolicy *const bigramsStructurePolicy, const int pos) 29 : mBigramsStructurePolicy(bigramsStructurePolicy), mPos(pos), 30 mBigramPos(NOT_A_DICT_POS), mProbability(NOT_A_PROBABILITY), 31 mHasNext(pos != NOT_A_DICT_POS) {} 32 33 AK_FORCE_INLINE bool hasNext() const { 34 return mHasNext; 35 } 36 37 AK_FORCE_INLINE void next() { 38 mBigramsStructurePolicy->getNextBigram(&mBigramPos, &mProbability, &mHasNext, &mPos); 39 } 40 41 AK_FORCE_INLINE int getProbability() const { 42 return mProbability; 43 } 44 45 AK_FORCE_INLINE int getBigramPos() const { 46 return mBigramPos; 47 } 48 49 private: 50 DISALLOW_COPY_AND_ASSIGN(BinaryDictionaryBigramsIterator); 51 52 const DictionaryBigramsStructurePolicy *const mBigramsStructurePolicy; 53 int mPos; 54 int mBigramPos; 55 int mProbability; 56 bool mHasNext; 57 }; 58 } // namespace latinime 59 #endif // LATINIME_BINARY_DICTIONARY_BIGRAMS_ITERATOR_H 60