📄 aimt.cpp
字号:
#include "stdafx.h"
#include "AIMt.h"
#include "AiAssert.h"
#include "AiWffs.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_SERIAL(AiMt,CObject,0)
AiMt::AiMt()
{
m_id = 0;
m_sign = NeedNotVersa;
m_pre = NULL;
}
AiMt::AiMt(AiMt& mt)
{
m_id = mt.m_id;
m_sign = mt.m_sign;
m_pre = mt.m_pre;
}
AiMt::~AiMt()
{
}
AiMt::AiMt(int id,int sign,AiMt* pre)
{
m_id = id;
m_sign = sign;
m_pre = pre;
}
AiMt::AiMt(AiAssert& assert)
{
m_id = assert.GetId();
m_pre = NULL;
m_sign = assert.m_sign;
}
AiMt::AiMt(int id,AiMt* pre)
{
m_id=id;
m_pre = pre;
}
int AiMt::GetId()
{
return m_id;
}
int AiMt::GetSign()
{
return m_sign;
}
const AiMt& AiMt::operator = (const AiMt& mtSrc)
{
m_id = mtSrc.m_id;
m_pre = mtSrc.m_pre;
m_sign = mtSrc.m_sign;
return *this;
}
AiMt& AiMt::operator ! ()
{
if (m_sign==NeedVersa)
m_sign=NeedNotVersa;
else
m_sign=NeedVersa;
return *this;
}
AiMt AiMt::operator & (AiMt mt)
{
AiMt* mt1 = new AiMt;
AiMt* mt2 = new AiMt;
mt1->SetId(this->GetId());
mt1->SetSign(this->GetSign());
mt1->SetPre( (this->GetPre()) );
//don't set wff1's pre
//假设&运算符从左到右结合
mt2->SetId(mt.GetId());
mt2->SetSign(mt.GetSign());
mt2->SetPre(mt1);
return *mt2;
}
void AiMt::SetId(int id)
{
m_id = id;
}
void AiMt::SetSign(int sign)
{
m_sign = sign;
}
void AiMt::SetPre(AiMt * pmt)
{
m_pre = pmt;
}
AiMt* AiMt::GetPre()
{
return m_pre;
}
void AiMt::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{ ar<<m_id<<m_sign;
}
else
{ ar>>m_id>>m_sign;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -