#ifndef OTHER_H_INCLUDED
#define OTHER_H_INCLUDED

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

#include "boost/algorithm/string.hpp"

#include "grammarCase.h"


namespace OT
{

	struct OtherWordRecord : public WordHolder
	{
		std::wstring getType() const;

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

		OtherWordRecord();

		OtherWordRecord(std::wstring line);

	};


	class OtherWordModificator : public WordModificatorInterface
	{
	//public:
	//	virtual boost::property_tree::wptree GetModificators() const;
	};


	struct OtherWordPair : public WordPairInterface
	{
	protected:

		OtherWordModificator modificator;
		OtherWordRecord wordRecord;

	public:

		OtherWordPair();

		OtherWordPair(OtherWordModificator iModificator, OtherWordRecord iWordRecord);

		virtual const WordModificatorInterface& wordModificator() const;

		virtual const WordHolder& word() const;

		virtual std::wstring getType();
	};


	extern std::vector<OtherWordRecord> OtherWordRecordArr;

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

	void LoadWordSet(std::string filename);
}

#endif //OTHER_H_INCLUDED
