Lines Matching defs:pss
5772 static void setupSequence( SequenceSpec *pss ){
5774 pss->uSeqIndexMax = 0;
5775 pss->isNotEOF = 0;
5776 bSameSigns = (pss->iBase < 0)==(pss->iTerm < 0);
5777 if( pss->iTerm < pss->iBase ){
5780 nuspan = (sqlite3_uint64)(pss->iBase - pss->iTerm);
5785 nuspan += pss->iBase;
5786 nuspan += -(pss->iTerm+1);
5788 if( pss->iStep<0 ){
5789 pss->isNotEOF = 1;
5791 pss->uSeqIndexMax = ( pss->iStep>LLONG_MIN )? nuspan/-pss->iStep : 1;
5792 }else if( pss->iStep>LLONG_MIN ){
5793 pss->uSeqIndexMax = nuspan/-pss->iStep;
5796 }else if( pss->iTerm > pss->iBase ){
5799 puspan = (sqlite3_uint64)(pss->iTerm - pss->iBase);
5804 puspan += pss->iTerm;
5805 puspan += -(pss->iBase+1);
5807 if( pss->iStep>0 ){
5808 pss->isNotEOF = 1;
5809 pss->uSeqIndexMax = puspan/pss->iStep;
5811 }else if( pss->iTerm == pss->iBase ){
5812 pss->isNotEOF = 1;
5813 pss->uSeqIndexMax = 0;
5815 pss->uSeqIndexNow = (pss->isReversing)? pss->uSeqIndexMax : 0;
5816 pss->iValueNow = (pss->isReversing)
5817 ? genSeqMember(pss->iBase, pss->iStep, pss->uSeqIndexMax)
5818 : pss->iBase;
5826 static int progressSequence( SequenceSpec *pss ){
5827 if( !pss->isNotEOF ) return 0;
5828 if( pss->isReversing ){
5829 if( pss->uSeqIndexNow > 0 ){
5830 pss->uSeqIndexNow--;
5831 pss->iValueNow -= pss->iStep;
5833 pss->isNotEOF = 0;
5836 if( pss->uSeqIndexNow < pss->uSeqIndexMax ){
5837 pss->uSeqIndexNow++;
5838 pss->iValueNow += pss->iStep;
5840 pss->isNotEOF = 0;
5843 return pss->isNotEOF;