00001
00002 #ifndef DETLEMMA_H
00003 #define DETLEMMA_H
00004 #pragma warning(disable:4786)
00005 #include <string>
00006 #include <stack>
00007 #include <map>
00008 #include <vector>
00009 #include "UMString.h"
00010 #include "Flexform.h"
00011 #include "XMLReader.h"
00012 #include "JXDictionary.h"
00016 struct result_lemma{
00017
00018 string lemma;
00019 string entry_dt;
00020 string entry_engl;
00021 string lemma_form;
00022 string lemma_vflexkl;
00023 string lemma_kanji;
00024 string lemma_hira;
00027 };
00028 class HypoLemma{
00029 vector<JVerbalFlexion*> m_jvf_history;
00030 typedef vector<JVerbalFlexion*>::iterator IT;
00032 string m_hira_rest;
00033 int m_cur_level;
00034 string m_components;
00035 string m_hira_check;
00037 public:
00038
00039 HypoLemma(JVerbalFlexion*, string&, string&);
00040 ~HypoLemma();
00041 bool insertElement(JVerbalFlexion*);
00042 bool insertElement(JVerbalFlexion*, string&, string&);
00043 bool deleteElement(UINT pos);
00046 string GetHiraRest(){ return m_hira_rest;};
00049 string GetHiraCheck(){ return m_hira_check;};
00052 string GetComponents(){ return m_components;};
00054 void clearHistory(){ m_jvf_history.clear();};
00055 string GetCompString();
00058 void SetHiraRest(string& rest){ m_hira_rest=rest;};
00061 void SetHiraCheck(string& check){ m_hira_check=check;};
00064 JVerbalFlexion* GetLastJVF(){ return m_jvf_history.back();};
00065
00066
00067 };
00068
00069
00070 class DetLemma{
00071
00072 private:
00073 vector<FlexLevel*> m_flexlevel;
00074 typedef vector <FlexLevel*> ::iterator IT;
00076 vector<HypoLemma> m_hypothesen;
00077 typedef vector<HypoLemma>::iterator HIT;
00079 int m_number_of_levels;
00080 int m_number_of_entries;
00081 int m_flexmaxlength;
00083 int m_level_counter[MAXFLEX];
00084 int getHighestLevel(char*);
00086 list<result_lemma> m_result_list;
00087 string m_cur_reqform;
00088 string m_cur_reqflexart;
00090 JVerbalFlexion* hypo;
00093 public:
00094 DetLemma();
00095 ~DetLemma();
00096 bool fillFlex(char*);
00097 bool detLemma(string&, JXDictionary*, list<result_lemma>&, FILE*);
00098 bool confirmLemma(string&, string& , JXDictionary*, result_lemma&);
00099 bool findInLevel(string&, UINT);
00100 bool insertFlextoLevel(FlexLevel*, int);
00101 void HypoPrint();
00102 bool insertPossibleHypos(JVerbalFlexion* jvf, UMString hirastr, int j);
00103 };
00104
00105
00106 #endif