Example #1
0
void CMathParser::AddVar(MPExtended Value, LPCTSTR lpszVarName)
{
	if( NULL == lpszVarName || strlen(lpszVarName) == 0 )
		return;

	VARSTRU *pvar = new VARSTRU;
	CSPString VarName	=	lpszVarName;
	VarName.MakeUpper();

	pvar->Value = Value;
	strncpy( pvar->VarName, VarName.GetBuffer(MP_MaxVarNameLen-1), MP_MaxVarNameLen-1 );
	m_VarMap.SetAt( VarName, pvar );
}
Example #2
0
BOOL CMathParser::GetVar( LPCTSTR lpszVarName, MPExtended &Value)
{
	if( m_VarMap.IsEmpty() || NULL == lpszVarName || strlen(lpszVarName) == 0 )
		return FALSE;

	CSPString	VarName	=	lpszVarName;
	VarName.MakeUpper();
	void	*	pvar	=	NULL;
	if( m_VarMap.Lookup( VarName, pvar ) )
	{
		Value = ((VARSTRU *)pvar)->Value;
		return TRUE;
	}

	return FALSE;
}
Example #3
0
BOOL CMathParser::IsFunc(CSPString S)//{ Checks to see if the parser is about to read a function }
{
	WORD P, SLen;
	CSPString FuncName;
	BOOL bIsFunc;

	P = Position;
	FuncName = "";

	while (P < FInput.GetLength())// && (FInput[P] in ['A'..'Z', 'a'..'z', '0'..'9', '_']) 
	{
		if(!((FInput.GetAt(P) <= 'Z' && FInput.GetAt(P) >= 'A')
		  ||(FInput.GetAt(P) <= 'z' && FInput.GetAt(P) >= 'a')
		  ||(FInput.GetAt(P) <= '9' && FInput.GetAt(P) >= '0')
		  ||(FInput.GetAt(P) == '_')))
		  break;

		//FInput.SetAt(P, FInput.GetAt(P));
		FuncName = FuncName + FInput.GetAt(P);//[P];
		P++;//Inc(P);
	}//  end; { while }

	FuncName.MakeUpper();
	if (FuncName == S )//Uppercase(FuncName) = S
	{
		SLen = S.GetLength();
		CurrToken.FuncName = FInput.Mid(Position, SLen);
		CurrToken.FuncName.MakeUpper();
		Position += SLen;
		//Inc(Position, SLen);
		bIsFunc = TRUE;
	}
	else
		bIsFunc = FALSE;

	return bIsFunc;
}