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 }
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); }
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); }