node.h

来自「故障诊断工作涉及的领域相当广泛」· C头文件 代码 · 共 286 行

H
286
字号
// node.h: interface for the node class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_NODE_H__DDA05662_B4D2_43F1_9BDB_7D914C7C0679__INCLUDED_)
#define AFX_NODE_H__DDA05662_B4D2_43F1_9BDB_7D914C7C0679__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
enum node_type{basic,indata,outdata,bpnet,dft,dwt};
#include "mydata.h"
#include "datastructure.h"
enum relation{add,abstract,mult,conect,invert,equ};
struct dpt
{double x,y;
dpt* pre;
dpt* next;
	dpt()
	{pre=next=NULL;
	x=-10000;
	y=-10000;
	};
	dpt(CPoint& pt)
	{dpt();
		this->x=pt.x;
		this->y=pt.y;
	}
	dpt(CSize& pt)
	{dpt();
		this->x=pt.cx;
		this->y=pt.cy;
	}
	dpt(double x,double y)
	{dpt();
		this->x=x;
		this->y=y;
	}
	void operator=(dpt& pt)
	{dpt();
		x=pt.x;
		y=pt.y;
	}
	
	dpt operator+(dpt& pt)
	{dpt pt0;
		pt0.x=pt.x+x;
		pt0.y=pt.y+y;
		return pt0;
	}
	dpt operator*(double& s)
	{dpt pt0;
		pt0.x=x*s;
		pt0.y=y*s;
		return pt0;
	}
	dpt operator-(dpt& pt)
	{dpt pt0;
	 pt0.x=x-pt.x;
	 pt0.y=y-pt.y;
	 return pt0;
	}
	void operator+=(dpt& pt)
	{x+=pt.x;
	y+=pt.y;
	}
	void operator=(CPoint& pt)
	{x=pt.x;
	y=pt.y;
	}
	_declspec(dllexport) friend void operator<<(CArchive&,dpt&);
	_declspec(dllexport) friend void operator>>(CArchive&,dpt&);
};

struct drec
{
	double left,right,top,bottom;
	drec()
	{
	};
	drec(double x1,double y1,double x2,double y2)
	{left=x1;
	 right=x2;
	 top=y1;
	 bottom=y2;
	}
	drec(dpt x,dpt y)
	{left=x.x;
	 right=y.x;
	 top=x.y;
	 bottom=y.y;
	}
	void operator=(drec& rec)
	{left=rec.left;
	 right=rec.right;
	 top=rec.top;
	 bottom=rec.bottom;
	}
	_declspec(dllexport) friend void operator<<(CArchive&,drec&);
	_declspec(dllexport) friend void operator>>(CArchive&,drec&);
};

class ptlist  
{	unsigned int cnt;
	dpt* head;
	dpt* tail;
	dpt* pdpt;
public:
	void setpath(CDC* pDC);
	void scale(dpt rspt,double scale);
	void move(dpt& pt);
	void draw(CDC* pDC);
	void clear();
	BOOL add(dpt* pdpt);
	ptlist();
	virtual ~ptlist();
void	operator =(ptlist &in);
void	operator =(ptlist *in);
_declspec(dllexport) friend void operator<<(CArchive&,ptlist&);
_declspec(dllexport) friend void operator>>(CArchive&,ptlist&);
friend class mygraph;

};
class nd
{
public:
	int index;//node编号
	int32 p;//node指针
	int which;//接受数据输入的针脚编号
	nd* pre;
	nd* next;
	nd()
	{pre=next=NULL;
	index=-1;
	which=-1;
	p=0;
	}
	operator=(nd& in)
	{
		index=in.index;
		p=in.p;
		which=in.which;
	};
	_declspec(dllexport) friend void operator<<(CArchive&,nd&);	
	_declspec(dllexport) friend void operator>>(CArchive&,nd&);
};
class ndlist;
class myview;
class node : public CObject  
{	
double scale;
	void* pnode;
public:
	CView* pv;
	myview* pmv;
	char runinfo[1005];
	unsigned int runinfolth;
	node_type type;
	int number;//节点编号
	int grade;//节点级别
	BOOL bfrosen;
	BOOL bselect;
	unsigned int frosencnt;
	unsigned int infrosencnt;
	unsigned int infreecnt;
	unsigned int incnt;//输入参数数量
	BOOL* binfrosen;//输入点是否编辑冻结
	BOOL* binvalid;//输入点是否有效
	ptlist* pptlist;//存放输入路经的点坐标
	ptlist ptlstcon[5];//存放控制输入路经的点坐标
	BOOL bconinfrosen[5];
	unsigned int outcnt;//输出参数数量
	BOOL* boutfrosen;//输出点是否编辑冻结
	BOOL boutvalid;//输出点是否有效	
	BOOL bconoutfrosen[5];//输出点是否编辑冻结
	BOOL bconoutvalid;//输出点是否有效	
	unsigned int concnt;
	BOOL bconfrosen[5];
	dpt concenter[10];
	dpt contop[10];
	dpt conbottom[10];
	drec conrect[10];
	mydata in;
	mydata out;
	nd precon[5];
	int32 preconpin[5];
	nd* pre;//存放为输入端提供数据的节点指针
	int32* prepin;//存放为输入端提供数据的节点的针脚序号
	ndlist* nextcon;
	ndlist *next;
	relation* prerelation;
	unsigned int precnt;
	unsigned int nextcnt;
	node* pnn;//后邻居
	node* ppn;//前邻居
	//node* poutnn;//后输出邻居
	//node* poutpn;//前输出邻居
	command* pcmd;//封装的目标命令模块
	unsigned int cmd_id;
	unsigned int cmd_level;
	int funcnumber;//目标接口索引号码
	BOOL frenew;
public:
	int invalidcnt;
	BOOL bwait;
public: 
		dpt center;	
		drec dipan;//图形参数
		drec area; 
		dpt* incenter;
		dpt* inleft;
		dpt* inright;
		drec* inrect;
		dpt* outcenter;
		dpt* outleft;
		dpt* outright;
		drec* outrect;
public:
	CWinThread* pthrd;
	HANDLE m_hThread;   
public:
	int senddata();
	void move(dpt pt);
	void setdipan(CView* pv);
	void finishflag(CView *pv);
	BOOL is_in_snap(dpt& pt,int* ppin);
	BOOL is_out_snap(dpt& pt,int* ppin);
	BOOL is_con_snap(dpt& pt,int* ppin);
	BOOL is_dipan_snap(dpt& pt);
	void see();
	void move();
	void change();
	CSize back;
	BOOL is_snap(dpt point,BOOL bway);
	void renew_graph(CDC* pDC,dpt pt);
	void renew_node(CDC *pDC, dpt pt);
	void rs(CDC*);
	BOOL create(myview* pmv,CView* pv,dpt& point);
	void draw(CView* pv,CDC* pDC);
	void upgrade(int g);
	mydata* prepare(double* in,unsigned int cnt=1);
	mydata* prepare(mwArray* in,unsigned int cnt=1);
	mydata* prepare(mydata* in,unsigned int cnt=1);
	UINT run();
	/*BOOL is_snap(const CPoint &point);*/
	node();
	node(void* pnode);
	virtual ~node();
public:
	_declspec(dllexport) void Serialize(CArchive&);
	_declspec(dllexport) friend void operator<<(CArchive&,node&);
	_declspec(dllexport) friend void operator>>(CArchive&,node&);
public:
	void set_data_structure(int which);
	node* pfirst;
	CFile* pfile;
	CString filename;
	CArchive* par;
	datastructure* pstructure;
	BOOL conect_data_file();
};

class ndlist  
{	
unsigned int cnt;
	nd* head;
	nd* tail;
	nd* pnd;
public:
	void rebuild(node* head);
	void upgrade(int g);
	BOOL remove(int index);
	BOOL add(node* pnd,int which);
	ndlist();
	virtual ~ndlist();
void	operator =(ndlist &in);
void	operator =(ndlist *in);
_declspec(dllexport) friend void operator<<(CArchive&,ndlist&);	
_declspec(dllexport) friend void operator>>(CArchive&,ndlist&);
friend class mygraph;
friend class node;

};

#endif // !defined(AFX_NODE_H__DDA05662_B4D2_43F1_9BDB_7D914C7C0679__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?