#include "StdAfx.h" #include "RecipeFormula.h" CRecipeFormula::CRecipeFormula(void) { Reset(); } CRecipeFormula::~CRecipeFormula(void) { } int CRecipeFormula::GetItemCount() const { return (int)m_vectorFormulaItem.size(); } void CRecipeFormula::SetItemCount(int nCount) { m_vectorFormulaItem.resize(nCount); } const CFormulaItem* CRecipeFormula::GetItem(int nIndex) const { if (nIndex < 0 || nIndex > m_vectorFormulaItem.size()-1) return NULL; return &m_vectorFormulaItem[nIndex]; } void CRecipeFormula::SetItem(int nIndex, const CFormulaItem& formulaItem) { if (nIndex<0 || nIndex>=(int)m_vectorFormulaItem.size()) return; m_vectorFormulaItem[nIndex] = formulaItem; } void CRecipeFormula::AddItem(const CFormulaItem& formulaItem) { m_vectorFormulaItem.push_back(formulaItem); } double CRecipeFormula::CalculateFormula() const { double dReturnValue = 0.0; for (int i=0; inIndex>=0 && pItem->nType!=ResultConstant) { strTemp.Format(_T("[%c%d"), '%', pItem->nIndex); strString += strTemp; } else { strTemp.Format(_T("[")); strString += strTemp; } switch(pItem->nType) { case ResultConstant: strTemp.Format(_T("%.3lf]"), pItem->dValue); break; case ResultCenter: strTemp.Format(_T("_C]")); break; case ResultFirst: strTemp.Format(_T("_F]")); break; case ResultSecond: strTemp.Format(_T("_S]")); break; case ResultLength: strTemp.Format(_T("_L]")); break; case ResultAngle: strTemp.Format(_T("_A]")); break; } strString += strTemp; switch(pItem->nOperator) { case OperatorNone: strTemp = _T(""); break; case OperatorPlus: strTemp = _T("+"); break; case OperatorMinus: strTemp = _T("-"); break; case OperatorMulti: strTemp = _T("*"); break; case OperatorDiv: strTemp = _T("/"); break; } strString += strTemp; } return strString; } CResultFormula::CResultFormula(void) { Reset(); } CResultFormula::~CResultFormula(void) { }