⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 func.h

📁 一个解析数学表达式的c++程序
💻 H
字号:
#ifndef _FUNC_INCLUDED
#define _FUNC_INCLUDED

#include "..\..\..\MTParserLib\MTParserPrivate.h"
#include <math.h>

class DateFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("date"); }

	virtual const MTCHAR* getHelpString(){ return _T("date(year, month, day)"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns a number representing this date"); }	
	virtual int getNbArgs(){ return 3; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		COleDateTime dt;
		dt.SetDate(pArg[0], pArg[1], pArg[2]);
		return dt.m_dt;
	}

	virtual MTFunctionI* spawn() { return new DateFunc(); }

};

class TimeFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("time"); }

	virtual const MTCHAR* getHelpString(){ return _T("time(hour, minute, second)"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns a number representing this time"); }	
	virtual int getNbArgs(){ return 3; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		COleDateTime dt;
		dt.SetTime(pArg[0], pArg[1], pArg[2]);
		return dt.m_dt;
	}

	virtual MTFunctionI* spawn() { return new TimeFunc(); }

};

class DayFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("day"); }

	virtual const MTCHAR* getHelpString(){ return _T("day(date_value)"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns the day of the month corresponding to this date value"); }	
	virtual int getNbArgs(){ return 1; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		COleDateTime dt(pArg[0]);
		return dt.GetDay();
	}

	virtual MTFunctionI* spawn() { return new DayFunc(); }

};

class HourFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("hour"); }

	virtual const MTCHAR* getHelpString(){ return _T("hour(date_value)"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns the number of hours corresponding to this date value"); }	
	virtual int getNbArgs(){ return 1; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		COleDateTime dt(pArg[0]);
		return dt.GetHour();
	}

	virtual MTFunctionI* spawn() { return new HourFunc(); }

};

class MinuteFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("minute"); }

	virtual const MTCHAR* getHelpString(){ return _T("minute(date_value)"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns the number of minutes corresponding to this date value"); }	
	virtual int getNbArgs(){ return 1; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		COleDateTime dt(pArg[0]);
		return dt.GetMinute();
	}

	virtual MTFunctionI* spawn() { return new MinuteFunc(); }

};

class SecondFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("second"); }

	virtual const MTCHAR* getHelpString(){ return _T("second(date_value)"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns the number of second corresponding to this date value"); }	
	virtual int getNbArgs(){ return 1; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		COleDateTime dt(pArg[0]);
		return dt.GetSecond();
	}

	virtual MTFunctionI* spawn() { return new SecondFunc(); }

};

class YearFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("year"); }

	virtual const MTCHAR* getHelpString(){ return _T("year(date_value)"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns the year corresponding to this date value"); }	
	virtual int getNbArgs(){ return 1; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		COleDateTime dt(pArg[0]);
		return dt.GetYear();
	}

	virtual MTFunctionI* spawn() { return new YearFunc(); }

};

class MonthFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("month"); }

	virtual const MTCHAR* getHelpString(){ return _T("month(date_value)"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns the month corresponding to this date value"); }	
	virtual int getNbArgs(){ return 1; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		COleDateTime dt(pArg[0]);
		return dt.GetMonth();
	}

	virtual MTFunctionI* spawn() { return new MonthFunc(); }

};

class DayOfWeekFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("weekday"); }

	virtual const MTCHAR* getHelpString(){ return _T("weekday(date_value)"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns the day of the week (1:sunday..7:saturday) corresponding to this date value"); }	
	virtual int getNbArgs(){ return 1; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		COleDateTime dt(pArg[0]);
		return dt.GetDayOfWeek();
	}

	virtual MTFunctionI* spawn() { return new DayOfWeekFunc(); }

};

class DayOfYearFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("yearday"); }

	virtual const MTCHAR* getHelpString(){ return _T("yearday(date_value)"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns the day of the year (January 1 = 1) corresponding to this date value"); }	
	virtual int getNbArgs(){ return 1; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		COleDateTime dt(pArg[0]);
		return dt.GetDayOfYear();
	}

	virtual MTFunctionI* spawn() { return new DayOfYearFunc(); }

};

class NowDateFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("nowdate"); }

	virtual const MTCHAR* getHelpString(){ return _T("nowdate()"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns today's date"); }	
	virtual int getNbArgs(){ return 0; }
	virtual bool isConstant(){ return false; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		time_t curTime;   
		time(&curTime);   
		
		COleDateTime dt(curTime);
		return (int)dt.m_dt;	// only the date by cutting the decimal part 
	}

	virtual MTFunctionI* spawn() { return new NowDateFunc(); }

};

class NowTimeFunc : public MTFunctionI
{		
	
	virtual const MTCHAR* getSymbol(){return _T("nowtime"); }

	virtual const MTCHAR* getHelpString(){ return _T("nowtime()"); }
	virtual const MTCHAR* getDescription(){ return _T("Returns current time"); }	
	virtual int getNbArgs(){ return 0; }
	virtual bool isConstant(){ return false; }
	virtual MTDOUBLE evaluate(unsigned int nbArgs, const MTDOUBLE *pArg)
	{
		time_t curTime;   
		time(&curTime);   
		
		COleDateTime dt(curTime);
		return fmod(dt.m_dt, (int)dt.m_dt);
	}

	virtual MTFunctionI* spawn() { return new NowTimeFunc(); }

};


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -