📄 aiassert.cpp
字号:
#include "stdafx.h"
#include "AiAssert.h"
#include "AiMt.h"
#include "AiWffs.h"
IMPLEMENT_SERIAL(AiAssert,CObject,0)
int* AiAssert::gm_numAssert;
AiMention* AiAssert::gm_mention;
void AiAssert::SetAssertNumTo(int* pNumAssert )
{
gm_numAssert = pNumAssert;
}
void AiAssert::SetAssertMentionTo(AiMention* pMention )
{
gm_mention = pMention;
}
void AiAssert::EndSetAssert()
{
gm_mention = NULL;
gm_numAssert = NULL;
}
AiAssert::AiAssert(CString Tstr,CString Fstr)
{
ASSERT(gm_numAssert!=NULL && gm_mention!=NULL);
m_id = *gm_numAssert;
m_sign = NeedNotVersa;
(*gm_numAssert)++;
ASSERT(*gm_numAssert>0 && *gm_numAssert<MaxNum);
gm_mention[m_id].SetMention(Tstr,Fstr);
char temp[4];
itoa(m_id,temp,10);
char str[10];
strcpy(str,"#");
strcat(str,temp);
gm_mention[m_id].SetAbbreviation(str);
}
AiAssert::AiAssert()
{
m_id = 0;
m_sign = 0;
}
AiAssert::AiAssert(AiAssert& assert)
{
m_id = assert.m_id;
m_sign = assert.m_sign;//?
}
AiMt AiAssert::operator & (AiAssert mtSrc)
{
AiMt* mt1 = new AiMt;
AiMt* mt2 = new AiMt;
mt1->SetId(this->GetId());
mt1->SetSign(this->GetSign());
//don't set wff1's pre
//假设&运算符从左到右结合
mt2->SetId(mtSrc.GetId());
mt2->SetSign(mtSrc.GetSign());
mt2->SetPre(mt1);
return *mt2;
}
AiMt AiAssert::operator & (AiMt mtSrc)
{
AiMt* mt1 = new AiMt;
AiMt* mt2 = new AiMt;
mt1->SetId(this->GetId());
mt1->SetSign(this->GetSign());
//don't set wff1's pre
//假设&运算符从左到右结合
mt2->SetId(mtSrc.GetId());
mt2->SetSign(mtSrc.GetSign());
mt2->SetPre(mt1);
return *mt2;
}
AiMt AiAssert::operator ! ()
{
AiMt* mt = new AiMt;
mt->SetId(this->GetId());
mt->SetSign(NeedVersa);
mt->SetPre(NULL);
return (AiMt)*mt;
}
void AiAssert::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{ ar<<m_id;}
else
{ ar>>m_id;}
}
int AiAssert::GetId()
{
return m_id;
}
int AiAssert::GetSign()
{
return m_sign;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -