/* 
 * Tactic is the legal property of its developers, whose names are too numerous 
 * to list here.  Please refer to the COPYRIGHT file distributed with this 
 * source distribution. 
 * 
 * This library 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 2.1 of the License, or (at your option) any later version. 
 * 
 * This library 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 GNU 
 * Lesser General Public License for more details. 
 * 
 * You should have received a copy of the GNU Lesser General Public 
 * License along with this library; if not, write to the Free Software 
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
 *
 * See README for more informations
 *
 * Operator.h
 *
 * This abstract class define the operator operation.
 *
 * 20/01/06
 *
 */

#ifndef OPERATOR_H
#define OPERATOR_H

#include <string>
#include "FuzzyValue.h"

class Operator{

public :

	/**
	 *operate : Do the operation of the object. It can be and, or, implication.
	 * 
	 *@param v1 : First operande
	 *@param v2 : Second operande
	 * 
	 *@return FuzzyValue : The FuzzyValue which contains the value of the result
	 *                     of the operation
	 * 						
	 */
	virtual FuzzyValue operate(FuzzyValue* v1, FuzzyValue* v2) = 0;

	/**
	 *toString : Return a string which represent the operator
	 * 
	 *@param void
	 * 
	 *@return string : The string whiwh represent the operator
	 *
	 */
	virtual std::string toString() = 0;

};

#endif

