void SourcesManager::sourceRemove(long anIndex)
{
    if(anIndex < m_sources.size() && anIndex >= 0)
    {
        int numberOfGroups = m_sources[anIndex]->getNumberOfGroups();
        int indexOfGroup = -1;
        for(int i = 0; i < numberOfGroups; i++)
        {
             indexOfGroup = m_sources[anIndex]->getGroupIndex(i);
            
            if(indexOfGroup >= 0 && indexOfGroup < getNumberOfGroups());
               m_groups[indexOfGroup]->removeSource(anIndex);
        }
        for(int i = 0; i < numberOfGroups; i++)
        {
            indexOfGroup = m_sources[anIndex]->getGroupIndex(i);
            m_sources[anIndex]->removeGroup(indexOfGroup);
        }
        m_sources[anIndex]->setExistence(0);
        m_sources[anIndex]->setDescription("");
        m_sources[anIndex]->setColor(0.2, 0.2, 0.2, 1.);
        m_sources[anIndex]->setCoordinatesCartesian(0., 1.);
        m_sources[anIndex]->setMute(0);
    }
}
	void SourcesManager::groupClean()
	{
		for(int i = 0; i <= getNumberOfGroups(); i++)
		{
			if(groupGetExistence(i))
			{
				for(int j = 0; j <= getNumberOfGroups(); j++)
				{
					if (i != j && groupGetExistence(j))
					{
						if(groupGetNumberOfSources(i) == groupGetNumberOfSources(j))
						{
							int check = 0;
							for(int k = 0; k < groupGetNumberOfSources(i); k++)
							{
								for(int l = 0; l < groupGetNumberOfSources(i); l++)
								{
									if(groupGetSourceIndex(i, k) == groupGetSourceIndex(j, l))
										check++;
								}
							}
							if(check == groupGetNumberOfSources(j))
								groupRemove(j);
						}
					}
				}
			}
		}

		for(int i = 0; i < getNumberOfGroups(); i++)
		{
			if(groupGetExistence(i))
			{
				if(groupGetNumberOfSources(i) < 2)
				{
					groupRemove(i);
				}
			}
		}
	}
	long SourcesManager::groupGetNextIndex()
	{
		if(getNumberOfGroups() != 0)
		{
			for(int i = 0; i < getMaximumIndexOfGroup()+2; i++)
			{
				if(!groupGetExistence(i))
				{
					return i;
				}
			}
		}
		return getMaximumIndexOfGroup();
	}
示例#4
0
void cleanTicketNumbers(LPFIELDSRESULTS lpFieldsResults) {
	 char *resultsStr = lpFieldsResults->result;
	 int numGr, i, k;
	 int iStart, iStop;
	 char strT[10];
	 int ret;
	 int numLines = 0;

	 int thGroups = 5;
	 int numChars;
	 int beginCut = 0;
	 resultTmp[0] = 0;
	 cand2Tmp[0] = 0;
// test every line
//printf("\n\n");
//printf(resultsStr);
//printf("\n\n");
// get number of lines
	 i = 0;
	 while(1){
		if(getLine(resultsStr, i, &iStart, &iStop) < 0) break;
		numLines++;
		i++;
	 }
// test last lines
// printf("--- numLines= %d\n",numLines);

	 k = numLines-1;
	 while(k>0){
		 if(getLine(resultsStr, k, &iStart, &iStop) < 0) break;
		 if(testLineConf(lpFieldsResults, iStart, iStop) < 0)
			 numLines--;
		 else
			 break;
		 k--;
	 }

	 i = 0;
	 k = 0;
	 while(i < numLines){
		if(getLine(resultsStr, i, &iStart, &iStop) < 0) break;
           testLeftSideForLine(resultsStr, &iStart, iStop);
//printLine(resultsStr, iStart, iStop);

	    numGr = getNumberOfGroups(resultsStr, iStart, iStop);
	    beginCut = 0;
// printf("--- line i= %d; numGr= %d, iStart= %d, iStop= %d\n",i, numGr, iStart, iStop);
        numChars = getNumChars(resultsStr, iStart, iStop);
//printf("--- line i= %d; numGr= %d, numChars= %d\n",i, numGr, numChars);
        if(numGr == thGroups){
        	beginCut = testBeginCut(lpFieldsResults, iStart, iStop);
            if(beginCut > 0)
            	numGr++;
        }

//   printLine(resultsStr, iStart, iStop);

//   printf("--- line i= %d; numGr= %d, numChars= %d\n",i, numGr, numChars);
	    if(numGr > thGroups && strlen(resultsStr) > 15 && numChars < 20){
	       copyLine(lpFieldsResults, iStart, iStop);
//  printLine(resultsStr, iStart, iStop);

//    printfQuad();
//  printf("--- line i= %d; %s\n",i, result);
	       if(beginCut > 0){


//  printf("--- line i= %d; beginCut= %d\n",i, beginCut);

               strT[0] = 'A'+k;
               strT[1] = 32;
               strT[2] = 0;
               replaceChars(0, -1, strT);
	       }else{
              getFirstCharFromNumLine(&iStart, &iStop);

//  printfQuad();
//   printf("--- getFirstCharFromNumLine i= %d; iStart= %d, iStop= %d\n",i, iStart, iStop);

              if(numGr < 8 && iStart == 0 && iStop == 0 && result[1] != 32) {
                 strT[0] = 'A'+k;
                 strT[1] = 32;
                 strT[2] = 0;
                 replaceChars(0, -1, strT);
             }else{
//  	   printf("--- numGr= %d; iStart= %d, iStop= %d, result[1]= %d\n",numGr, iStart, iStop, result[1]);
                 strT[0] = 'A'+k;
                 strT[1] = 0;
                replaceChars(iStart, iStop, strT);
             }
	       }
           iStop = -1;
           ret = getFirstQPFromNumLine(&iStart, &iStop);
           if(ret >= 0) {
               replaceChars(iStart, iStop, "QP");
           }
           if( ret > 0 || numGr >6) {
              if(getSecondQPFromNumLine(&iStart, &iStop) >=0){
                 replaceChars(iStart, iStop, "QP");
              }
           }
	       addLineToTmp();
	       k++;
//printTmp();
	    }
	    i++;
	 }
	 copyResultsBack(lpFieldsResults);
}