www.pudn.com > MathHead > MathNode.h


#pragma once 
 
 
class CMathNode 
{ 
public: 
	enum NodeType 
	{ 
		Node_Null = 0, 
		Node_Approx, 
		Node_Exact, 
		Node_Var, 
		Node_Op 
	}; 
 
	enum OpType 
	{ 
		Op_Null, 
 
		// Arithmetic 
		Op_Add, 
		Op_Sub, 
		Op_Mul, 
		Op_Div, 
 
		// Exponentiation 
		Op_Exp, 
		Op_Log, 
 
		// Peuso-operators : Used to group 
		Op_ParOpen, 
		Op_ParClose 
	}; 
 
	CMathNode(void); 
	~CMathNode(void); 
 
	NodeType	m_Type; 
	union 
	{ 
		int		__RawData[3]; 
 
		__int64	m_Exact; 
		double	m_Approx; 
		wchar_t	m_Var; 
		struct 
		{ 
			OpType		m_Op; 
			CMathNode * m_pSubArray; 
			unsigned	m_nSubs; 
		}; 
	}; 
	void Null(void); 
	void MoveTo(CMathNode * pDest); 
	void CopyTo(CMathNode * pDest); 
 
	// Assignment functions 
	bool MakeExact(__int64); 
	bool MakeApprox(double); 
	bool MakeVar(wchar_t); 
	bool MakeOp(CMathNode::OpType); 
};