#include "grammarCase.h"

#include <iostream>

NounCount WStringToNounCount(std::wstring str)
{
	if (str == L"NC_SINGULAR")
	{
		return NC_SINGULAR;
	}
	if (str == L"NC_PLURAL")
	{
		return NC_PLURAL;
	}

	std::cout << "Error in WStringToNounCount!" << std::endl;
	return NC_SINGULAR;
}

std::wstring NounCountToWString(NounCount nounCount)
{
	if (nounCount == NC_SINGULAR)
	{
		return L"NC_SINGULAR";
	}
	if (nounCount == NC_PLURAL)
	{
		return L"NC_PLURAL";
	}

	std::cout << "Error in NounCountToWString!" << std::endl;
	return L"";
}


std::wstring NounGrammaticalCaseToWString(NounGrammaticalCase nounGrammaticalCase)
{
	switch (nounGrammaticalCase)
	{
	case NGC_P1_NOMINATIVE: return L"NGC_P1_NOMINATIVE";
	case NGC_P2_GENITIVE: return L"NGC_P2_GENITIVE";
	case NGC_P3_DATIVE: return L"NGC_P3_DATIVE";
	case NGC_P4_ACCUSATIVE: return L"NGC_P4_ACCUSATIVE";
	case NGC_P5_INSTRUMENTAL: return L"NGC_P5_INSTRUMENTAL";
	case NGC_P6_PREPOSITIONAL: return L"NGC_P6_PREPOSITIONAL";
	}

	return L"";
}

NounGrammaticalCase WStringToNounGrammaticalCase(std::wstring str)
{

	if (str == L"NGC_P1_NOMINATIVE")
	{
		return NGC_P1_NOMINATIVE;
	}
	if (str == L"NGC_P2_GENITIVE")
	{
		return NGC_P2_GENITIVE;
	}
	if (str == L"NGC_P3_DATIVE")
	{
		return NGC_P3_DATIVE;
	}
	if (str == L"NGC_P4_ACCUSATIVE")
	{
		return NGC_P4_ACCUSATIVE;
	}
	if (str == L"NGC_P5_INSTRUMENTAL")
	{
		return NGC_P5_INSTRUMENTAL;
	}
	if (str == L"NGC_P6_PREPOSITIONAL")
	{
		return NGC_P6_PREPOSITIONAL;
	}

	std::cout << "Error in WStringToNounGrammaticalCase!" << std::endl;
	return NGC_P1_NOMINATIVE;
}




bool charIsConsolant(wchar_t c) //except й
{
	std::wstring consolants = L"цкнгшщзхфвпрлджчсмтб";

	for (wchar_t ic : consolants)
	{
		if (c == ic)
		{
			return true;
		}
	}

	return false;
}

bool charIsVowel(wchar_t c)
{
	std::wstring vovels = L"аоуыэяёюие";

	for (wchar_t ic : vovels)
	{
		if (c == ic)
		{
			return true;
		}
	}

	return false;
}


std::wstring i_form_consolants = L"гхкжшчщ";
std::wstring u_form_consolants = L"бпдтвфзснмлрц";

bool charIsIFormConsolant(wchar_t c)
{
	return i_form_consolants.find(c) != i_form_consolants.npos;
}

bool charIsUFormConsolant(wchar_t c)
{
	return u_form_consolants.find(c) != i_form_consolants.npos;
}
