/*
    Copyright (C) 2012 Bartosz Broda, Jacek Bochenek, Łukasz Biłeńkij, 
    Damian Jaworski, Wojciech Mazur, Dominik Piasecki, Maciej Piasecki, 
    Radosław Ramocki
    
    This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option)
any later version.

    This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. 

    See the LICENSE and COPYING files for more details.
*/

#ifndef LEXICALUNTIS_SIMPLE_WORD_H
#define LEXICALUNTIS_SIMPLE_WORD_H

#include "lex_headers.h"
#include "LexicalUnit.h"

namespace LexicalUnits
{

	class SimpleWord : public LexicalUnit
	{
	public:
		SimpleWord ( boost::shared_ptr<Word> head );

		/**
		* Creates Xml representation of current LexicalUnit, that could be
		* deserialized in the future
		*/
		virtual std::string ToXmlString();

		/**
		Check if this lexical unit occures in the given sentence on current position.
		\param snetence Sentence to check.
		\param head_index If match is found, the head index is set to head of current LU.
		\param constituents If match is found, all constituent indices are put into this set.
		\returns true if this lexical unit occures in the given sentence.
		 */
		virtual bool CheckCurrentPosition ( Corpus::CSentence &sentence, size_t &head_index,
				std::set<size_t> &constituents );


	};
}

#endif

