コード例 #1
0
ファイル: f8precomp.cpp プロジェクト: mattyv/fix8
//-----------------------------------------------------------------------------------------
int precompfixt(XmlElement& xft, XmlElement& xf, ostream& outf, bool nounique)
{
	int depth(1);
	XmlElement::XmlSet fldlist;
	xft.find("fix/fields/field", fldlist);
	xf.find("fix/fields/field", fldlist);
	if (!nounique)
		filter_unique(fldlist);

	XmlElement::XmlSet comlist, comlistfixt;
	Components components, componentsfixt;
	xft.find("fix/components/component", comlistfixt);
	xf.find("fix/components/component", comlist);
	load_components(comlistfixt, componentsfixt);
	load_components(comlist, components);

	outf << doctype << endl;
	outf << '<' << xft.GetTag();
	output_attributes(xft, outf);
	outf << '>' << endl;

	const XmlElement *header(xft.find("fix/header"));
	if (header)
		process_messages(*header, componentsfixt, "header", 0, outf);
	const XmlElement *trailer(xft.find("fix/trailer"));
	if (trailer)
		process_messages(*trailer, componentsfixt, "trailer", 0, outf);

	outf << string(depth * 2, ' ') << "<messages>" << endl;

	XmlElement::XmlSet msglist;
	xft.find("fix/messages/message", msglist);
	for(XmlElement::XmlSet::const_iterator itr(msglist.begin()); itr != msglist.end(); ++itr)
		process_messages(**itr, componentsfixt, "message", depth, outf);

	msglist.clear();
	xf.find("fix/messages/message", msglist);
	for(XmlElement::XmlSet::const_iterator itr(msglist.begin()); itr != msglist.end(); ++itr)
		process_messages(**itr, components, "message", depth, outf);
	outf << string(depth * 2, ' ') << "</messages>" << endl;

	process_fields(fldlist, depth, outf);

	outf << "</" << xft.GetTag() << '>' << endl;

	return 0;
}
コード例 #2
0
OMX_ERRORTYPE cmd_process(HTEST *hTest)
{
	char rep[10];
	OMX_BOOL bExit = OMX_FALSE;

	while(bExit == OMX_FALSE)
	{
		printf("Input test cmd:\n");
		printf("[l]load component\n");
		printf("[t]tunnel component\n");
		printf("[s]state trans\n");
		printf("[d]port disbale\n");
		printf("[e]port enable\n");
		printf("[x]exit\n");
		scanf("%s", rep);
		if(rep[0] == 'l')
			load_components(hTest);
		else if(rep[0] == 't')
		{
			OMX_U32 aIdx, aPort, bIdx, bPort;
			printf("Tunnel method:\n");
			printf("AIdx,APort,BIdx,BPort\n");
			scanf("%d,%d,%d,%d", &aIdx, &aPort, &bIdx, &bPort);
			hTest->component[aIdx].bPortTunneled[aPort] = OMX_TRUE;
			hTest->component[bIdx].bPortTunneled[bPort] = OMX_TRUE;
			tunnel_component(hTest->component[aIdx].hComponent, aPort,
			                 hTest->component[bIdx].hComponent, bPort);
		}
		else if(rep[0] == 's')
		{
			OMX_U32 state = 0;
			printf("State trans to:\n");
			printf("0 -- Invalid\n");
			printf("1 -- Loaded\n");
			printf("2 -- Idle\n");
			printf("3 -- Executing\n");
			printf("4 -- Pause\n");
			printf("5 -- WaitForResources\n");
			scanf("%d", &state);
			StateTrans(hTest, (OMX_STATETYPE)state);
		}
		else if(rep[0] == 'd')
		{
			tunneled_port_pair_disable(hTest);
		}
		else if(rep[0] == 'e')
		{
			tunneled_port_pair_enable(hTest);
		}
		else if(rep[0] == 'x')
		{
			MSG sMsg;
			sMsg.type = EXIT;
			hTest->pMsgQ->Add(&sMsg);
			hTest->bStop = OMX_TRUE;
			bExit = OMX_TRUE;
			unload_components(hTest);
		}
	}

	return OMX_ErrorNone;
}