bool SequentialDatabase::BEPValid_1(frequencyPattern & p)
{
	int i;
	int itemSize = p.frePattern.size();
	int currentId = 0;
	vector<Element>::iterator ip = p.frePattern.begin();
	vector<int> sviType1, sviType2;
	TimeLine prevTil, nextTil;
	int pSize = p.pTir.size();
	vector<int> Stemp1, frequencyStemp1;
	vector<int> Stemp2, frequencyStemp2;
	for (i = 0; i < pSize; ++i)
	{
		vector<int> sviType1 = generateBEPType_1(p.pTir[i].sId, p.pTir[i].til[currentId]);
		generateStempType1(sviType1, Stemp1, frequencyStemp1);
		prevTil = TimeLine();
		if (currentId < itemSize - 1)
			nextTil = p.pTir[i].til[currentId + 1];
		else
			nextTil = TimeLine();
		vector<int> sviType2 = generateBEPType_2(p.pTir[i].sId, p.pTir[i].til[currentId],
			prevTil, nextTil, ip->items.front(), ip->items.back());
		generateStempType1(sviType2, Stemp2, frequencyStemp2);
	}
	for (i = 0; i < frequencyStemp1.size(); ++i)
		if (frequencyStemp1[i] == p.pTir.size())
			return false;
	for (i = 0; i < frequencyStemp2.size(); ++i)
		if (frequencyStemp2[i] == p.pTir.size())
			return false;
	currentId++;
	ip++;
	while (currentId < itemSize)
	{
		Stemp2.clear();
		frequencyStemp2.clear();
		for (i = 0; i < pSize; ++i)
		{
			prevTil = p.pTir[i].til[currentId - 1];
			if (currentId < itemSize - 1)
				nextTil = p.pTir[i].til[currentId + 1];
			else
				nextTil = TimeLine();
			vector<int> sviType2 = generateBEPType_2(p.pTir[i].sId, p.pTir[i].til[currentId],
				prevTil, nextTil, ip->items.front(), ip->items.back());
			generateStempType1(sviType2, Stemp2, frequencyStemp2);
		}
		for (i = 0; i < frequencyStemp2.size(); ++i)
			if (frequencyStemp2[i] == p.pTir.size())
				return false;
		currentId++;
		ip++;
	}
	return true;
}
示例#2
0
void QDeclarativeTimeLinePrivate::add(QDeclarativeTimeLineObject &g, const Op &o)
{
    if (g._t && g._t != q) {
        qWarning() << "QDeclarativeTimeLine: Cannot modify a QDeclarativeTimeLineValue owned by"
                   << "another timeline.";
        return;
    }
    g._t = q;

    Ops::Iterator iter = ops.find(&g);
    if (iter == ops.end()) {
        iter = ops.insert(&g, TimeLine());
        if (syncPoint > 0)
            q->pause(g, syncPoint);
    }
    if (!iter->ops.isEmpty() &&
       o.type == Op::Pause &&
       iter->ops.last().type == Op::Pause) {
        iter->ops.last().length += o.length;
        iter->length += o.length;
    } else {
        iter->ops.append(o);
        iter->length += o.length;
    }

    if (iter->length > length)
        length = iter->length;

    if (!clockRunning) {
        q->stop();
        prevTime = 0;
        clockRunning = true;

        if (syncMode == QDeclarativeTimeLine::LocalSync)  {
            syncAdj = -1;
        } else {
            syncAdj = 0;
        }
        q->start();
/*        q->tick(0);
        if (syncMode == QDeclarativeTimeLine::LocalSync)  {
            syncAdj = -1;
        } else {
            syncAdj = 0;
        }
        */
    }
}
bool SequentialDatabase::BEPValid_2(frequencyPattern & p)
{
	int i;
	int itemSize = p.frePattern.size() - 1;
	int currentId = 0;
	int pSize = p.pTir.size();
	int minT = THRESHOLD - pSize;
	int maxT1 = -1, maxT2 = -1;
	vector<Element>::iterator ip = p.frePattern.begin();
	vector<int> Stemp1, frequencyStemp1;
	vector<int> Stemp2, frequencyStemp2;
	for (i = 0; i < pSize; ++i)
	{
		if (!generateStempType_1(
				generateBEPType_1(p.pTir[i].sId, p.pTir[i].til[currentId]),
					Stemp1, frequencyStemp1, maxT1, minT + i)
			) break;
	}
	if(i == pSize)
	{
		for (i = 0; i < frequencyStemp1.size(); ++i)
			if (frequencyStemp1[i] == p.pTir.size())
				return false;
	}
	if (currentId < itemSize)
	{
		for (i = 0; i < pSize; ++i)
		{
			if (!generateStempType_1(
					generateBEPType_2(p.pTir[i].sId, p.pTir[i].til[currentId],
						TimeLine(), p.pTir[i].til[currentId + 1], 
						ip->items.front(), ip->items.back()), 
						Stemp2, frequencyStemp2, maxT2, minT + i)
				) break;
		}
	}
	else
	{
		for (i = 0; i < pSize; ++i)
		{
			if (!generateStempType_1(
					generateBEPType_2(p.pTir[i].sId, p.pTir[i].til[currentId],
						TimeLine(), TimeLine(), ip->items.front(), ip->items.back()), 
						Stemp2, frequencyStemp2, maxT2, minT + i)
				) break;
		}
	}
	if (i == pSize)
	{
		for (i = 0; i < frequencyStemp2.size(); ++i)
			if (frequencyStemp2[i] == p.pTir.size())
				return false;
	}
	currentId++;
	ip++;
	for(; currentId < itemSize; currentId++, ip++)
	{
		Stemp2.clear();
		frequencyStemp2.clear();
		maxT2 = -1;
		for (i = 0; i < pSize; ++i)
		{
			if (!generateStempType_1(
					generateBEPType_2(p.pTir[i].sId, p.pTir[i].til[currentId],
						p.pTir[i].til[currentId - 1], p.pTir[i].til[currentId + 1], 
						ip->items.front(), ip->items.back()), 
						Stemp2, frequencyStemp2, maxT2, minT + i)
				) break;
		}
		if(i==pSize)
		{
			for (i = 0; i < frequencyStemp2.size(); ++i)
				if (frequencyStemp2[i] == p.pTir.size())
					return false;
		}
	}
	if (currentId == itemSize)
	{
		Stemp2.clear();
		frequencyStemp2.clear();
		maxT2 = -1;
		for (i = 0; i < pSize; ++i)
		{
			if (!generateStempType_1(
					generateBEPType_2(p.pTir[i].sId, p.pTir[i].til[currentId],
						p.pTir[i].til[currentId - 1], TimeLine(), 
						ip->items.front(), ip->items.back()), 
						Stemp2, frequencyStemp2, maxT2, minT + i)
				) break;
		}
		if (i == pSize)
		{
			for (i = 0; i < frequencyStemp2.size(); ++i)
				if (frequencyStemp2[i] == p.pTir.size())
					return false;
		}
	}
	return true;
}