コード例 #1
0
ファイル: t_iccentry.cpp プロジェクト: Esclapion/qt-mobility
CContactIdArray* TestFindInTextDefL(CContactDatabase& aDatabase, const MDesCArray& aFindWords,CContactTextDef* aTextDef, const TCallBack &aWordParserCallback, RTest& aTest)
	{
	CContactIdArray* retval = NULL;
	retval = aDatabase.FindInTextDefLC(aFindWords, aTextDef, aWordParserCallback);
	aTest(retval==NULL);
	CleanupStack::Pop( retval );
	return retval;
	}
コード例 #2
0
ファイル: t_iccentry.cpp プロジェクト: Esclapion/qt-mobility
CContactIdArray* TestFindL(CContactDatabase& aDatabase, const TDesC& aText, const CContactItemFieldDef *aFieldDef, RTest& aTest)
	{
	CContactIdArray* retval = NULL;
	
	retval = aDatabase.FindLC(aText, aFieldDef);
	aTest(retval == NULL);
	CleanupStack::Pop( retval );
	
	return retval;
	}
コード例 #3
0
ファイル: TaskManager.cpp プロジェクト: OPRoS/TaskEngine
int TaskManager::loadWorker(std::string workerFileName, OSFileSys* fsys)
{
	int result = 0;
	int errorCount = 0;

	std::auto_ptr<EParser> aTest(new EParser(m_ostr));
	//EParser* aTest = new EParser(m_ostr);

	aTest->setFilename(workerFileName);
	int res = aTest->extractInclude(workerFileName, TaskConfig::getDeployHome());
	if(res != 0){
		result = res;
		errorCount = res;
	}

	if(aTest->getInclude() != 0){
		//preprocessing include
		EList<std::string> includedFiles = aTest->getInclude()->getIncludeFiles();
		if(includedFiles.moveHead()){
			do{
				std::string fName = includedFiles.getCurObject();
				//parsing
				LOG_TRACE(m_log, "Reading the file, '%s'...", fName.c_str());
				aTest->setFilename(fName);
				errorCount = aTest->parseScript(TaskConfig::getDeployHome() + fName);
				if(errorCount>0){					
					result = errorCount; ///////////////////////////////////에러코드정리
					LOG_ERROR(m_log, "Parser can not open the file '%s'.", fName.c_str());
					break;
				}
			}
			while(includedFiles.moveNext());
		}
	}

	if(errorCount == 0){
		GparsedResult* pRslt = aTest->getParsingResult();

		EList<Genum*>*		enumlist	= pRslt->getEnums();
		EList<Gmodel*>*		modellist	= pRslt->getModels();
		EList<Gaction*>*	actionlist	= pRslt->getActions();
//		EList<Gworker*>*	workerlist	= pRslt->getWorkers();     //예전 방법 task 정의
		EList<Gtask*>*		tasklist	= pRslt->getTasks();       //최근 방법 task 정의
		EList<Gbehavior*>*	bhvlist		= pRslt->getbehaviors();
		EList<Gconnector*>* connlist	= pRslt->getconnectors();

		
		
		SymTAB4Task* newSymT = new SymTAB4Task();
		std::auto_ptr<RTObjBuilder> rtmBuilder(new RTObjBuilder(m_ostr, newSymT));
		//RTObjBuilder *rtmBuilder = new RTObjBuilder(m_ostr, newSymT);

		EList<RFSMtask*>*		rtasks	= NULL;
		EList<RFSMbehavior*>*	rbhvs	= NULL;
		EList<RFSMconnector*>*	rconns	= NULL;

		try{
			//model, action, enum 검사
			LOG_TRACE(m_log, "Checking Model composed of Symbol, Function, Action and Enum ...");
			rtmBuilder->makeSymTable(pRslt);

			//TASK 명세 검사
			LOG_TRACE(m_log, "Checking Tasks ...");
			rtasks	= rtmBuilder->checkSemantics(tasklist);
			rbhvs	= rtmBuilder->checkSemantics(bhvlist);
			rconns	= rtmBuilder->checkSemantics(connlist);

			//Model 파일수가 여러개 이더라도 1개의 심볼테이블이 만들어진다.
			//파일이 나누어져도 하나의 파일로 간주
			//SymTAB4Task* newSymT = rtmBuilder->getSymT();

	/*		
			if(workerlist !=NULL && workerlist->getSize()>0 && workerlist->moveHead()){
				do{
					Gworker* worker = workerlist->getCurObject();
					std::string workerName = worker->getName()->getData();

					//Task 들을 등록
					result = m_taskMem->addTask(workerName, worker->getStartBhv()->getData());

					//심볼테이블 등록
					if(result ==0){
						newSymT->pluRefCount();
						result = m_taskMem->addSymbolT(workerName, newSymT);
					}
					else
						result = 100; ///////////////////////////////////에러코드정리
				}
				while(workerlist->moveNext());
			}
*/
			if(rtasks !=NULL && rtasks->getSize()>0 && rtasks->moveHead()){
				do{
					RFSMtask* task = rtasks->getCurObject();
					std::string taskName = task->getName();

					//Task 들을 등록
					result = m_taskMem->addTask2(taskName, task);
					
//여기까지 했다 다음부터 구현 할 것

					//심볼테이블 등록
					if(result ==0){
						newSymT->pluRefCount();
						result = m_taskMem->addSymbolT(taskName, newSymT);
					}
					else
						result = 100; ///////////////////////////////////에러코드정리
				}
				while(rtasks->moveNext());
			}
	//		else
	//			delete newSymT; //task가 없으면 나중에 지울 수가 없기 때문에...

			//Behavior 등록
			if(result ==0){
				if(rbhvs != NULL && rbhvs->getSize()>0 && rbhvs->moveHead()){
					do{
						RFSMbehavior* bhv = rbhvs->getCurObject();
						//아래 순서 중요.. 모니터링에서 behavior테이블로 중복을 검사하기 때문에
						//1. 모니터링 정보 등록
						m_taskMem->addMonitorInfo(bhv);
						//2. behavior등록
						result = m_taskMem->addBehavior(bhv);						
					}
					while(rbhvs->moveNext());
				}

				if(rconns != NULL && rconns->getSize()>0 && rconns->moveHead()){
					do{
						RFSMconnector*  rconn= rconns->getCurObject();
						//아래 순서 중요.. 모니터링에서 behavior테이블로 중복을 검사하기 때문에
						//1. 모니터링 정보 등록
						//m_taskMem->addMonitorInfo(rconn);
						//2. behavior등록
						result = m_taskMem->addConnector(rconn);						
					}
					while(rconns->moveNext());
				}
			}
			else
				result = 100; ///////////////////////////////////에러코드정리
/*
			//bhv에 관련된 worker이름을 저장
			if(result ==0){
				if(workerlist !=NULL && workerlist->getSize()>0 && workerlist->moveHead()){
					do{
						Gworker* worker = workerlist->getCurObject();
						std::string workerName = worker->getName()->getData();
						std::string startBhvName = worker->getStartBhv()->getData();

						RFSMbehavior* t = m_taskMem->findBehavior(startBhvName);
						if(t == NULL){//task의 시작 behavior가 존재하지 않는 경우							
							LOG_ERROR(m_log, "The root behavior, <%s()>, cannot be found.", startBhvName.c_str());
							return 100;////////////////////////에러코드정리							
						}
						else{
							t->addRefTask(workerName);
							EList<std::string> tlist;
							setWorkerName(t, workerName, tlist);

							//각각의 worker에 대해서 dot파일 생성
						  
							std::string dot = getDot(workerName, t, tlist);
							std::ofstream dotfile;
							std::string dotfilename = workerName;
							dotfilename.append(".dot");
							dotfile.open(dotfilename.c_str());
							dotfile << dot.c_str() << "\n";
							dotfile.flush();
							dotfile.close();

							LOG_TRACE(m_log, "%s.dot file, which represents graphical view of a worker, is created.", workerName.c_str());
					    }
						
					}
					while(workerlist->moveNext());
				}
			}
*/

			//bhv에 관련된 worker이름을 저장
			if(result ==0){
				if(rtasks !=NULL && rtasks->getSize()>0 && rtasks->moveHead()){
					do{						
						RFSMtask* task = rtasks->getCurObject();
						std::string taskName = task->getName();

						//task에 포함된 모든 behavior와 conexer의 이름
						std::vector<RFSMstmt*>* runBlock = task->getRunBlock();
						std::vector<std::string> startList;
						task->extractStartNodes(runBlock, startList);

						//runblock에 포함된 모든 behavior나 conexer에 대해서
						std::vector<std::string>::iterator it;
						for(it=startList.begin(); it<startList.end(); it++){
							std::string startNodeName = *it;
							RFSMtreenode* startNode = m_taskMem->findBehavior(startNodeName);
							if(startNode == NULL){//task의 시작 behavior가 존재하지 않는 경우
								startNode = m_taskMem->findConnector(startNodeName);
								if(startNode == NULL){
									LOG_ERROR(m_log, "The root node(behavior or conexer), <%s()>, cannot be found.", startNodeName.c_str());
									result = 100;////////////////////////에러코드정리
									break;
								}
							}
							
							startNode->addRefTask(taskName);
							EList<std::string> tlist; // for dot
							setWorkerName(startNode, taskName, tlist);
							tlist.clearAllchild(); //이걸해야 tlist의 new EListElement<T>(obj); 으로 만들어진 부분이 삭제된다.
						}

						//각각의 worker에 대해서 dot파일 생성
						
						
						// 아래 부분은 task노드를 root로 하는 구조로 바뀌어야 한다.

						/*
						std::string dot = getDot(taskName, t, tlist);
						std::ofstream dotfile;
						std::string dotfilename = taskName;
						dotfilename.append(".dot");
						dotfile.open(dotfilename.c_str());
						dotfile << dot.c_str() << "\n";
						dotfile.flush();
						dotfile.close();

						LOG_TRACE(m_log, "%s.dot file, which represents graphical view of a worker, is created.", taskName.c_str());
					    
						*/
					}
					while(result == 0 && rtasks->moveNext());
				}
			}

			if(rtasks != 0 && rtasks->getSize()>0 && rtasks->moveHead()){
				do{
					RFSMtreenode* rtask = rtasks->getCurObject();
					setSubNodes(rtask);
				}while(rtasks->moveNext());
			}

			if(rbhvs != 0 && rbhvs->getSize()>0 && rbhvs->moveHead()){
				do{
					RFSMtreenode* rbhv = rbhvs->getCurObject();
					setSubNodes(rbhv);
				}while(rbhvs->moveNext());
			}

			if(rconns != 0 && rconns->getSize()>0 && rconns->moveHead()){
				do{
					RFSMtreenode* rconn = rconns->getCurObject();
					setSubNodes(rconn);
				}while(rconns->moveNext());
			}

			if(rconns != 0 && rconns->getSize()>0 && rconns->moveHead()){
				do{
					RFSMconnector* rconn = (RFSMconnector*)rconns->getCurObject();
					std::map<int, int>	synchInfo = checkValidSynchIDs(rconn);
					rconn->setSynchInfo(synchInfo);
					//rconn->checkValidSynchIDs();
				}while(rconns->moveNext());
			}

			if(rtasks != 0 && rtasks->getSize()>0 && rtasks->moveHead()){
				do{
					std::set<int> ids;
					RFSMtask* rtask = (RFSMtask*)(rtasks->getCurObject());
					rtask->setSynchidInTask();
				}while(rtasks->moveNext());
			}
			

			
			/* 삭제(껍데기만 내용은 TaskMem에 저장) */
			if(rtasks != NULL){
				while(rtasks->getSize()>0 && rtasks->moveHead()){
					//RFSMtask* obj = rtasks->getCurObject();
					//delete obj;
					rtasks->delHead();
				}
				delete rtasks; rtasks = NULL;
			}
			if(rbhvs != NULL){
				while(rbhvs->getSize()>0 && rbhvs->moveHead()){
					//RFSMbehavior* obj = rbhvs->getCurObject();
					//delete obj;
					rbhvs->delHead();
				}
				delete rbhvs; rbhvs = NULL;
			}
			if(rconns != NULL){
				while(rconns->getSize()>0 && rconns->moveHead()){
					//RFSMconnector* obj = rconns->getCurObject();
					//delete obj;
					rconns->delHead();
				}
				delete rconns; rconns = NULL;
			}		
/*			
			//시나리오 파일 처리
			if(pRslt->getSCs().size()>0){
				std::string inclstr;
				if(aTest->getInclude() != 0){
					Ginclude* inclList = aTest->getInclude();
					if(inclList->moveHead()){
						do{
							Gtoken* tok = inclList->getCurObject();
							std::string fname = tok->getFileName();
							std::string incl = tok->getData();
							if(fname==workerFileName)
								inclstr.append("#include \"").append(incl).append("\"\n");
						}
						while(inclList->moveNext());
					}
				}
				TPLGenerator tplGen(fsys, workerFileName, inclstr, pRslt->getSTasks(), pRslt->getSCs(), pRslt->getSBehaviors(), pRslt->getSEvents());
				tplGen.generateTPL();
			}
*/
		}
		catch(SemanticsEH& semEH){
			LOG_ERROR(m_log, "The parser returned %d errors, Task loading aborted.", semEH.hasError_());
			delete newSymT; newSymT = NULL;
			delete rtasks; rtasks = NULL;
			delete rbhvs; rbhvs = NULL;
			delete rconns; rconns = NULL;
			result = 100;/////////////////////////////////////////////////////에러코드 정리
		}

	}

	
	//aTest 에서 pRslt가 지워진다.
	//delete aTest;

	return result;
}
コード例 #4
0
void cAppliMICMAC::DoCorrelLeastQuare(const Box2di &  aBoxOut,const Box2di & aBoxIn,const cCorrel2DLeastSquare & aClsq)
{
    int aPer = aClsq.PeriodEch();


    cOneTestLSQ  aTest
                 (
                     TheNbIterLine,
                     PDV1()->LoadedIm().DataFloatIm()[0],PDV1()->LoadedIm().SzIm(),
                     PDV2()->LoadedIm().DataFloatIm()[0],PDV2()->LoadedIm().SzIm(),
                     CurEtape()->InterpFloat(),
                     aClsq
                 );


    Pt2di aP0Red = round_up(Pt2dr(aBoxOut._p0) / double(aPer));
    Pt2di aP1Red = round_up(Pt2dr(aBoxOut._p1) / double(aPer));
    Pt2di aSzRed = aP1Red - aP0Red;

    Im2D_REAL8 aImDepX(aSzRed.x,aSzRed.y);
    Im2D_REAL8 aImDepY(aSzRed.x,aSzRed.y);

    Pt2di aPRed;

    const cOneNappePx & aPx1 = mLTer->KthNap(0);
    const cOneNappePx & aPx2 = mLTer->KthNap(1);

    for (aPRed.x=aP0Red.x  ; aPRed.x<aP1Red.x ; aPRed.x++)
    {
        for (aPRed.y=aP0Red.y ; aPRed.y<aP1Red.y ; aPRed.y++)
        {
             // std::cout <<"REST " << aP1Red - aPRed << "\n";

              Pt2di aP = aPRed  * aPer;
              Pt2di aPLoc = aP-aBoxIn._p0;
              double aPx[2];
              aPx[0] = aPx1.mTPxInit.get(aPLoc);
              aPx[1] = aPx2.mTPxInit.get(aPLoc);

              mCurEtape->GeomTer().PxDisc2PxReel(aPx,aPx);

              //aTest.SetPIm1(PDV1()->Geom().CurObj2Im(Pt2dr(aP),aPx));
              //aTest.SetPIm2(PDV2()->Geom().CurObj2Im(Pt2dr(aP),aPx));

              aTest.MinimByLSQandGolden
              (
                   PDV1()->Geom().CurObj2Im(Pt2dr(aP),aPx),
                   PDV2()->Geom().CurObj2Im(Pt2dr(aP),aPx)
              );

              double aPx0[2]={0,0};
              Pt2dr aP20 = PDV2()->Geom().CurObj2Im(Pt2dr(aP),aPx0);
              Pt2dr aP2 = aTest.Im2().PImCur();

              aImDepX.SetR(aPRed-aP0Red,aP2.x-aP20.x);
              aImDepY.SetR(aPRed-aP0Red,aP2.y-aP20.y);
         }
    }

    Tiff_Im   aFileRX = mCurEtape->KPx(0).FileIm();
    Tiff_Im   aFileRY = mCurEtape->KPx(1).FileIm();


    ELISE_COPY
    (
         rectangle(aP0Red,aP1Red),
         trans(aImDepX.in(),-aP0Red),
         aFileRX.out()
    );
    ELISE_COPY
    (
         rectangle(aP0Red,aP1Red),
         trans(aImDepY.in(),-aP0Red),
         aFileRY.out()
    );
/*
*/

}