// ==========  This file is under  LGPL, the GNU Lesser General Public Licence
// ==========  Dialing Lemmatizer (www.aot.ru)
// ==========  Copyright by Alexey Sokirko

#ifndef __PARADIGM_H_
#define __PARADIGM_H_

#include  "../common/utilit.h"

class CLemmatizer;


class CFormInfo 
{
	bool					m_bCutPrefixes;
	bool					m_bCutFlexia;
	CAutomAnnotationInner m_InnerAnnot;
	const CLemmaInfoAndLemma& GetLemmaInfo() const;
	const CFlexiaModel& GetFlexiaModel() const;
	bool  IsValid() const;
public:
	const CLemmatizer*			m_pParent;
	string						m_InputWordBase;
	bool						m_bFound;

	
	CFormInfo();
	void	Create(const CLemmatizer*	pParent, const CAutomAnnotationInner& A, const string& InputWordForm, bool bFound);
	void	Copy(const CFormInfo& from);
	void	AttachLemmatizer(const CLemmatizer* parent);
	bool	SetParadigmId(DWORD newVal);

	DWORD	GetParadigmId() const;
	DWORD	GetCount () const;
	
	string	GetSrcNorm() const; 
	// returns the weight of a word form 
	int		GetHomonymWeightWithForm(WORD pos) const; 
	// returns the weight of this word 
	int		GetWordWeight() const;

	string	GetAncode(WORD pos) const;
	string	GetWordForm (WORD pos) const;
	string	GetSrcAncode() const;
	int		GetHomonymWeight() const;
	BYTE	GetAccentedVowel(WORD pos) const;
	BYTE	GetSrcAccentedVowel() const;
	string	GetCommonAncode() const;
	string	GetLemSign() const; 
	size_t	GetLemmaPrefixLength() const; 
};


#endif //__PARADIGM_H_
