/****************************************************************************
	Kalkulon - A programmable calculator for programmers

	This file is part of the Kalkulon core.
	
	If you find this source code useful, your are encouraged to use it in your own projects.
	Please give me credit!

	COPYRIGHT by Juergen Holetzeck 2003 - 2008
	e-mail:		contact@kalkulon.de
	homepage:	www.kalkulon.de
****************************************************************************/



// FuncObject.h: Schnittstelle für die Klasse FuncObject.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_FUNCOBJECT_H__52D9BF27_F365_4AC8_9660_8AE674779BC6__INCLUDED_)
#define AFX_FUNCOBJECT_H__52D9BF27_F365_4AC8_9660_8AE674779BC6__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <map>
#include <string>
#include <vector>
#include "DataObject.h"
#include "Token.h"

namespace Kalkulon{
struct FuncObject  
{
	std::string name;
	std::vector< std::string > param_list;
  RPNStack_t rpn_stack;

	operator std::string();

  //////////////////////////////////////////////////////////////
  // methods for persisting FuncObject state
  void serialize(std::ostream& os) const;
  static FuncObject deserialize(std::istream& is);
  //
};
}

std::ostream& operator<< (std::ostream& out, Kalkulon::FuncObject& fo);


#endif // !defined(AFX_FUNCOBJECT_H__52D9BF27_F365_4AC8_9660_8AE674779BC6__INCLUDED_)
