59 lines
1016 B
C++
59 lines
1016 B
C++
#ifndef GRAMMAR_CASE_H_INCLUDED
|
|
#define GRAMMAR_CASE_H_INCLUDED
|
|
|
|
|
|
#include <set>
|
|
#include <string>
|
|
|
|
enum NounGender
|
|
{
|
|
NG_MALE = 0,
|
|
NG_FEMALE,
|
|
NG_NEUTRAL
|
|
};
|
|
|
|
enum NounGrammaticalCase
|
|
{
|
|
NGC_P1_NOMINATIVE = 0,
|
|
NGC_P2_GENITIVE,
|
|
NGC_P3_DATIVE,
|
|
NGC_P4_ACCUSATIVE,
|
|
NGC_P5_INSTRUMENTAL,
|
|
NGC_P6_PREPOSITIONAL,
|
|
NGC_SIZE
|
|
};
|
|
|
|
enum NounCount
|
|
{
|
|
NC_SINGULAR = 0,
|
|
NC_PLURAL,
|
|
NC_SIZE
|
|
};
|
|
|
|
|
|
struct GrammaticalTableRecord
|
|
{
|
|
NounCount count;
|
|
|
|
NounGrammaticalCase grammaticalCase;
|
|
|
|
std::set<std::wstring> ending;
|
|
};
|
|
|
|
|
|
std::wstring NounCountToWString(NounCount nounCount);
|
|
NounCount WStringToNounCount(std::wstring str);
|
|
std::wstring NounGrammaticalCaseToWString(NounGrammaticalCase nounGrammaticalCase);
|
|
NounGrammaticalCase WStringToNounGrammaticalCase(std::wstring str);
|
|
|
|
|
|
bool charIsConsolant(wchar_t c); //except й
|
|
|
|
bool charIsVowel(wchar_t c);
|
|
|
|
bool charIsIFormConsolant(wchar_t c);
|
|
bool charIsUFormConsolant(wchar_t c);
|
|
|
|
|
|
#endif //GRAMMAR_CASE_H_INCLUDED
|