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 EDIT THIS FILE !!!!!
196bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi *
206bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi * This file was generated from
2188bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi *   dictionary/structure/v4/content/probability_entry.h
226bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi */
236bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
2407e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanagi#ifndef LATINIME_BACKWARD_V402_PROBABILITY_ENTRY_H
2507e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanagi#define LATINIME_BACKWARD_V402_PROBABILITY_ENTRY_H
266bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
276bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi#include "defines.h"
2888bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/property/historical_info.h"
2988bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/structure/backward/v402/ver4_dict_constants.h"
306bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
316bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanaginamespace latinime {
326bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanaginamespace backward {
3307e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanaginamespace v402 {
346bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
356bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagiclass ProbabilityEntry {
366bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi public:
376bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    ProbabilityEntry(const ProbabilityEntry &probabilityEntry)
386bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi            : mFlags(probabilityEntry.mFlags), mProbability(probabilityEntry.mProbability),
396bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi              mHistoricalInfo(probabilityEntry.mHistoricalInfo) {}
406bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
416bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    // Dummy entry
426bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    ProbabilityEntry()
436bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi            : mFlags(0), mProbability(NOT_A_PROBABILITY), mHistoricalInfo() {}
446bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
456bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    // Entry without historical information
466bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    ProbabilityEntry(const int flags, const int probability)
476bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi            : mFlags(flags), mProbability(probability), mHistoricalInfo() {}
486bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
496bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    // Entry with historical information.
506bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    ProbabilityEntry(const int flags, const int probability,
516bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi            const HistoricalInfo *const historicalInfo)
526bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi            : mFlags(flags), mProbability(probability), mHistoricalInfo(*historicalInfo) {}
536bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
546bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    const ProbabilityEntry createEntryWithUpdatedProbability(const int probability) const {
556bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi        return ProbabilityEntry(mFlags, probability, &mHistoricalInfo);
566bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    }
576bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
586bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    const ProbabilityEntry createEntryWithUpdatedHistoricalInfo(
596bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi            const HistoricalInfo *const historicalInfo) const {
606bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi        return ProbabilityEntry(mFlags, mProbability, historicalInfo);
616bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    }
626bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
636bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    bool hasHistoricalInfo() const {
646bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi        return mHistoricalInfo.isValid();
656bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    }
666bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
676bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    int getFlags() const {
686bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi        return mFlags;
696bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    }
706bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
716bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    int getProbability() const {
726bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi        return mProbability;
736bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    }
746bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
756bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    const HistoricalInfo *getHistoricalInfo() const {
766bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi        return &mHistoricalInfo;
776bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    }
786bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
796bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi private:
806bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    // Copy constructor is public to use this class as a type of return value.
816bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    DISALLOW_ASSIGNMENT_OPERATOR(ProbabilityEntry);
826bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi
836bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    const int mFlags;
846bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    const int mProbability;
856bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi    const HistoricalInfo mHistoricalInfo;
866bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi};
8707e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanagi} // namespace v402
886bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi} // namespace backward
896bf268132d60061fd26bd8cba63a12b56b22056eKeisuke Kuroyanagi} // namespace latinime
9007e14126318f7661f76fdce421d723d64e7ea8deKeisuke Kuroyanagi#endif /* LATINIME_BACKWARD_V402_PROBABILITY_ENTRY_H */
91