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);
};