📄 formulamodula.h
字号:
// FormulaModula.h: interface for the CFormulaModula class.
//
//////////////////////////////////////////////////////////////////////
/*
* Generated by MyEclipse Struts
*
* Written by Yang Huaisheng
* Homepage: http://codefan.spaces.live.com
* version 0.01
* create at 2006-04-30
*
* Distribute freely, except: don't remove my name from the source or
* documentation (don't take credit for my work), mark your changes (don't
* get me blamed for your possible bugs), don't alter or remove this
* notice.
* No warrantee of any kind, express or implied, is included with this
* software; use at your own risk, responsibility for damages (if any) to
* anyone resulting from the use of this software rests entirely with the
* user.
*
* Send bug reports, bug fixes, enhancements, requests, flames, etc. to
* codefan@hotmial.com
*
*/
#if !defined(AFX_FORMULAMODULA_H__52BAC31A_AC7F_4B85_ABE9_44FE8C687D2D__INCLUDED_)
#define AFX_FORMULAMODULA_H__52BAC31A_AC7F_4B85_ABE9_44FE8C687D2D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "..\Interface\ConstDef.h"
#include "..\Interface\IFormula.h"
//#include <list>
#include <Afxtempl.h>
class CVarItem{
public:
int nAllocType;// 0:nualloc 1:alloc char[] 2:alloc float[]
VAR_DATA_TYPE vType;//
char szName[SIGNLENGTH+1]; //char[32]
union{
int nLen;
float fVal;
// char * sVal;
};
float * fArVal;
CString szValue;
public:
int nISN;
union{
BOOL isUsed; //is used before the end of compiler
BOOL isLocked;
};
VAR_ITEM_STYLE nStyle;// 0:unknow 1:varialbe 2:const variable 3:temp variable
public:
CVarItem & Clone (CVarItem & tmpItem);
CVarItem & operator=(CVarItem & tmpItem);
// CVarItem & operator=(CVarItem tmpItem);
public:
CVarItem();
virtual ~CVarItem();
public:
void SetName(LPCTSTR sn);
void SetType(VAR_DATA_TYPE vt);
void SetValue(LPCTSTR sv);
void SetString(LPCTSTR sv);
void SetFloat(float fv);
void SetArrayNumber(int nl,float * lpv,bool bCopy=false);
inline void SetUsed();
public:
CString GetName();
VAR_DATA_TYPE GetType();
CString GetValue();
float GetFloat(float fPos=0);
BOOL ToBool();
float ToFloat();
int ToInt();
float MinFloat();
float MaxFloat();
float SumFloat();
float AveFloat();
int GetCount();
CString ToString();
CString GetDescribe(LIST_VAR_TYPE nListType=LV_SUMMARY);
public:
friend CVarItem AFXAPI operator+(CVarItem & tmpItem, CVarItem & tmpItem2);
friend CVarItem AFXAPI operator-(CVarItem & tmpItem, CVarItem & tmpItem2);
friend CVarItem AFXAPI operator*(CVarItem & tmpItem, CVarItem & tmpItem2);
friend CVarItem AFXAPI operator/(CVarItem & tmpItem,CVarItem & tmpItem2);
friend BOOL AFXAPI operator==(CVarItem & tmpItem,CVarItem & tmpItem2);
friend BOOL AFXAPI operator!=(CVarItem & tmpItem,CVarItem & tmpItem2);
friend BOOL AFXAPI operator>(CVarItem & tmpItem,CVarItem & tmpItem2);
friend BOOL AFXAPI operator<(CVarItem & tmpItem,CVarItem & tmpItem2);
friend BOOL AFXAPI operator>=(CVarItem & tmpItem,CVarItem & tmpItem2);
friend BOOL AFXAPI operator<=(CVarItem & tmpItem,CVarItem & tmpItem2);
friend BOOL AFXAPI operator!(CVarItem & tmpItem);
friend BOOL AFXAPI operator||(CVarItem & tmpItem,CVarItem & tmpItem2);
friend BOOL AFXAPI operator&&(CVarItem & tmpItem,CVarItem & tmpItem2);
};
typedef CVarItem VARITEM;
//typedef std::list<CVarItem> VARTABLE;
typedef CList<CVarItem,CVarItem&> VARTABLE;
typedef CVarItem * PVARITEM;
struct SFormulaItem{ //四元式结构
//public:
int nOpt;//int
union{
int nResult;//int
PVARITEM pvRes;
};
union{
int nPrm;//int
PVARITEM pvPrm;
};
union{
int nPrm2;//int
PVARITEM pvPrm2;
};
//public:
};
//typedef std::list<SFormulaItem> FORMULATABLE;
//typedef CList<SFormulaItem,SFormulaItem&> FORMULATABLE;
typedef SFormulaItem * PFORMULAITEM;
typedef CArray<SFormulaItem,SFormulaItem&> FORMULATABLE;
class CFormulaModule;
typedef CFormulaModule * PFORMUALMODULE;
class CFormulaModule{
public:
VAR_DATA_TYPE vRetType;
int nPrmSum;
CString sModuleName;
PFORMUALMODULE pParentModule;
private:
int nSourceLen;
char* szSource;
int nFormulaSum;
FORMULATABLE formulaTable;
public:
VARTABLE varTable;
CFormulaModule();
virtual ~CFormulaModule();
public:
void Reset();
void Release();
CFormulaModule & operator=(CFormulaModule & tmpFM);
void SetSource(LPCTSTR szSou, int nL=-1);
LPCTSTR GetSource();
int GetSourceLen();
void GetVarInPlace();
private:
int nCurVarISN;
int nCurTempISN;
int nCurConstISN;
CString GetDescribe(PFORMULAITEM pFI , LIST_FORMULA_ITEM_TYPE nListType);
public:
PVARITEM AddVarItem(VAR_ITEM_STYLE nS);
int AddVariable(LPCTSTR szName);
int AddConst(LPCTSTR szValue);
int AddTemp(LPCTSTR szValue);
void LockTemp(int nIsn);
void UnlockTemp(int nIsn);
int UsedTemp();
BOOL IsTemp(int nIsn);
int GetCurTemp();
void SetValue(int isn,LPCTSTR szValue);
int SetFloat(LPCTSTR szName,float fVal);
int SetVariable(LPCTSTR szName,LPCTSTR szValue);
int SetArrayNumberVar(LPCTSTR szName,int nLen,float * lpValue);
int GetVariableSum();
int GetVarISN(LPCTSTR szName);
PVARITEM GetVarItem(LPCTSTR szName,int & nLay);
PVARITEM GetVarItem(int isn);
CString GetVarName(int isn);
//int GetVariableIndex(LPCTSTR szName);
VAR_DATA_TYPE GetVariableType(LPCTSTR szName);
CString ListVariable(int nVarInd, LIST_VAR_TYPE nListType=LV_SUMMARY);
void ReplicateVarTable( VARTABLE & desTable);
int GetFormulaItemSum();
int AddFormulaItem(SFormulaItem & fi);
PFORMULAITEM GetFormulaItem(int nInd);
CString ListFormulaItem(int nFormulaInd = -1, LIST_FORMULA_ITEM_TYPE nListType=LFI_LABEL);
};
//typedef std::list<CFormulaModule> FORMUALMODULALIST;
//typedef CArray<CFormulaModule,CFormulaModule&> FORMUALMODULALIST;
typedef CList<CFormulaModule,CFormulaModule&> FORMUALMODULALIST;
#endif // !defined(AFX_FORMULAMODULA_H__52BAC31A_AC7F_4B85_ABE9_44FE8C687D2D__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -