⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aiassert.cpp

📁 一个面向对象的产生式推理模型
💻 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 + -