Ejemplo n.º 1
0
void OrderedList::ReSortOrder(ListComparator Compare, BOOL Reverse)
{
	OrderSequence *TheSeq = FindSequence(Compare, Reverse);	// Find existing Seq?

	if (TheSeq == NULL)										// No such seq - exit
		return;

	SortSequence(TheSeq);									// Force a sort
}
Ejemplo n.º 2
0
List *OrderedList::SelectOrder(ListComparator Compare, BOOL Reverse)
{
	if (Compare == NULL || Compare == Unsorted)
		return(&MasterList);

	OrderSequence *TheSeq = FindSequence(Compare, Reverse);	// Find existing Seq?

	if (TheSeq == NULL)										// No - create new one
		TheSeq = CreateSequence(Compare, Reverse);

	if (TheSeq == NULL)										// Failed - argh!
		return(NULL);

	if (!TheSeq->Cached)									// Needs sorting?
		SortSequence(TheSeq);

	TheSeq->UsageCount++;									// Increment the usage count

	return(&TheSeq->Sequence);
}
Ejemplo n.º 3
0
TTypeQualifier TTypeQualifierBuilder::getVariableTypeQualifier(TDiagnostics *diagnostics) const
{
    ASSERT(IsInvariantCorrect(mQualifiers));

    if (!checkSequenceIsValid(diagnostics))
    {
        return TTypeQualifier(
            static_cast<const TStorageQualifierWrapper *>(mQualifiers[0])->getQualifier(),
            mQualifiers[0]->getLine());
    }

    // If the qualifier checks are relaxed, then it is easier to sort the qualifiers so
    // that the order imposed by the GLSL ES 3.00 spec is kept. Then we can use the same code to
    // combine the qualifiers.
    if (AreTypeQualifierChecksRelaxed(mShaderVersion))
    {
        // Copy the qualifier sequence so that we can sort them.
        QualifierSequence sortedQualifierSequence = mQualifiers;
        SortSequence(sortedQualifierSequence);
        return GetVariableTypeQualifierFromSortedSequence(sortedQualifierSequence, diagnostics);
    }
    return GetVariableTypeQualifierFromSortedSequence(mQualifiers, diagnostics);
}