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

📄 simumodel.cpp

📁 用于仿真系统中多个仿真对象间的内存管理
💻 CPP
字号:
// SimuModel.cpp: implementation of the SimuModel class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SimuModel.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

SimuModel::SimuModel()
{
	
}

SimuModel::~SimuModel()
{
	vector<IOPort*>::iterator it_inport = inport_list.begin();
	for(;it_inport != inport_list.end();it_inport++)
	{
		delete (*it_inport);
		(*it_inport) = 0;
	}

	vector<IOPort*>::iterator it_outport = outport_list.begin();
	for(;it_outport != outport_list.end();it_outport++)
	{
		delete (*it_outport);
		(*it_outport) = 0;
	}
}

void SimuModel::Sim_Inital()
{
	Inital_InPort();
	Inital_OutPort();
}

void SimuModel::Sim_Simulate()
{
	InPutData();
	OutPutData();
	GenerateData();
	
}

void SimuModel::Sim_Complete()
{
	GenResult();

	vector<IOPort*>::iterator it_outport= outport_list.begin();
	for(;it_outport != outport_list.end();it_outport++)
		(*it_outport)->AccomplishIO();

	vector<IOPort*>::iterator it_inport = inport_list.begin();
	for(;it_inport != inport_list.end();it_inport++)
		(*it_inport)->AccomplishIO();
}


void SimuModel::OutPutData()
{
	
}

IOPort* SimuModel::ConnectBeginPort(int port_id)
{
	if((port_id <0)||(port_id > (inportnum + outportnum)))
		return 0;
	vector<IOPort*>::iterator it_outport = outport_list.begin();
	for(;it_outport != outport_list.end();it_outport++)
	{
		if((*it_outport)->GetPortID() == port_id)
			break;
	}
	return *it_outport;
}

void SimuModel::Sim_Set(int thresh,MemoryPool* pool)
{
	InitBuffer(thresh,pool);
}

void SimuModel::InitBuffer(int thresh,MemoryPool* pool)
{
	vector<IOPort*>::iterator it_port = outport_list.begin();
	
	for(;it_port != outport_list.end();it_port++)
	{
		(*it_port)->InitOutBuf(thresh,pool);
		(*it_port)->SetRelatePortBuf();
	}


}

const long SimuModel::GetDataSize() const
{
	return nblock * nsamp;
}

void SimuModel::GenerateData()
{
}

void SimuModel::GenResult()
{
}



float* SimuModel::GetBuf(int port_id)
{
	if((port_id <0)||(port_id > (inportnum + outportnum)))
		return 0;
	if(port_id <inportnum)
	{
		vector<IOPort*>::iterator it_inport = inport_list.begin();
		for(;it_inport != inport_list.end();it_inport++)
		{
			if((*it_inport)->GetPortID() == port_id)
				break;
		}
		return ((*it_inport)->GetBuf());
	}
	vector<IOPort*>::iterator it_outport = outport_list.begin();
	for(;it_outport != outport_list.end();it_outport++)
	{
		if((*it_outport)->GetPortID() == port_id)
			break;
	}
	return ((*it_outport)->GetBuf());
}



void SimuModel::InPutData()
{

}

IOPort* SimuModel::ConnectEndPort(int port_id)
{
	if((port_id <0)||(port_id > inportnum ))
		return 0;
	vector<IOPort*>::iterator it_inport = inport_list.begin();
	for(;it_inport != inport_list.end();it_inport++)
	{
		if((*it_inport)->GetPortID() == port_id)
			break;
	}
	return *it_inport;
}


⌨️ 快捷键说明

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