ULAPI  8.0
ulconjugator.h
1 
7 #ifndef ULCONJUGATOR_H
8 #define ULCONJUGATOR_H
9 
10 #include "ulworker.h"
11 #include "ulinflector.h"
12 #include "uldissector.h"
13 
20 class ULConjugator : public ULWorker
21 {
22 public:
23  ULConjugator();
24  ULConjugator(const ULConjugator& other);
25  virtual ~ULConjugator();
26 
27  ULConjugator& operator=(const ULConjugator& other);
28  void clear();
29 
30  // Accessors
32  void setInflector(ULInflector *inflector);
34  void setDissector(ULDissector *dissector);
35  const ULLanguage& getLanguage() const;
36 
37  // ULWorker interfaces.
38  virtual bool isServiceAvailable(const ULServiceDescriptor& service);
39  virtual void getAvailableServices(ULList<ULServiceDescriptor>& services);
40 
41  // The core services provided by the conjugator.
43 
45 
47 
48  ULError getInfinitivesMatchingPrefix(const ULString& prefix, uluint32 maxMatches, ULList<ULString>& infinitiveList);
49 
50  ULError getInfinitivesMatchingPrefix(const ULString& prefix, uluint32 maxMatches, ULList<ULDerivation>& infinitiveList);
51 
52  ULError getTensesForVerb(const ULDerivation& verb, ULList<ULTense>& tenseList);
53 
55  const ULTense& tense,
56  ULList<ULPerson>& personList);
57 
59  const ULTense& tense,
60  const ULPerson& person,
61  ULDerivation& conjugation);
62 
64  const ULTense& tense,
65  ULList<ULDerivation>& conjugationList);
66 
67  ULError getAllConjugations(const ULDerivation& verb, ULList<ULDerivation>& conjugationList);
68 
69  void getPronouns(const ULPerson& person,
70  ULList<ULString>& pronounList);
71 
72  void getPronouns(const ULPerson& person,
73  const ULNumber& number,
74  const ULFormality& formality,
75  ULList<ULString>& pronounList);
76 
77  void getConjugationDisplayComponents(const ULDerivation& conjugation,
78  ULString& pronounText,
79  ULString& separatorText,
80  ULString& conjugationText);
81 
83 
84 private:
85  ULInflector *inflector;
86  ULDissector *dissector;
87 
88  ULError getConjugatedForms(const ULDerivation& verb,
89  const ULTense& tense,
90  const ULPerson& person,
91  ULList<ULString>& conjugatedForms);
92 
93  void removeDerivationsUsedForStemmingOnly(ULList<ULDerivation>& derivationList);
94 
95  static int derivationCmp(ULDerivation& a, ULDerivation& b, void *context);
96  static bool pospSatisfiesPOSP(const ULPartOfSpeech& a, const ULPartOfSpeech& b);
97 };
98 
99 #endif
100