#ifndef PREPOSITION_H_INCLUDED
#define PREPOSITION_H_INCLUDED

#include <string>
#include <map>
#include <set>
#include <vector>
#include <fstream>

#include "boost/algorithm/string.hpp"

#include "grammarCase.h"


namespace PP
{

	struct PrepositionRecord : public WordHolder
	{

		bool getAvailableForGenitive() const;
		bool getAvailableForDative() const;
		bool getAvailableForAccusative() const;
		bool getAvailableForInstrumental() const;
		bool getAvailableForPrepositional() const;

		void SetAllFields();
		void SetAllFields(const std::vector<std::wstring>& lineArr);

		PrepositionRecord();

		PrepositionRecord(std::wstring line);

	};

	class PrepositionModificator : public WordModificatorInterface
	{
	};


	struct PrepositionPair : public WordPairInterface
	{
	protected:

		PrepositionModificator modificator;
		PrepositionRecord wordRecord;

	public:

		PrepositionPair();

		PrepositionPair(PrepositionModificator iModificator, PrepositionRecord iWordRecord);

		virtual const WordModificatorInterface& wordModificator() const;

		virtual const WordHolder& word() const;

		virtual std::wstring getType();
	};


	extern std::vector<PrepositionRecord> PrepositionRecordArr;

	void RecognizeWord(std::wstring word, std::vector<std::shared_ptr<WordPairInterface>>& wordPair);


	void LoadWordSet(std::string filename);
}

#endif //PREPOSITION_H_INCLUDED
