#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;
};

struct TranslationUnit
{
	std::wstring meaning;
	std::wstring comment;
	std::wstring example;
};


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
