Я продолжаю копировать код и думаю, что должен быть лучший способ.Поэтому, если я передам 3, я хочу 3 булевых переменных и 3 цикла while, каждая из которых использует эти три переменные, за исключением 3-й (самый внешний цикл), которая является while (true) и заканчивается кодом немного другим, чем в whileloop.
Если я передам 4, я хочу, чтобы внутренние циклы while 3 следовали аналогичному шаблону, а 4-й (внешний) - while (true) с немного другим кодом.
i = startIndex;
updateMasks(0,i);
i++;
if (i > stopIndex) goto finished;
bool firstTime1 = true;
bool firstTime2 = true;
bool firstTime3 = true;
bool firstTime4 = true;
while(true){
while(mask4 == 0 || firstTime4){
firstTime4 = false;
while(mask3 == 0 || firstTime3){
firstTime3 = false;
while(mask2 == 0 || firstTime2){
firstTime2 = false;
while(mask1 == 0 || firstTime1){
firstTime1 = false;
updateMasks(1,i);
i++;
if (i > stopIndex) goto finished;
}
updateMasks(2, i);
i++;
if (i > stopIndex) goto finished;
}
updateMasks(3,i);
i++;
if (i > stopIndex) goto finished;
}
updateMasks(4,i);
i++;
if (i > stopIndex) goto finished;
}
updateMasks(5,i);
if (mask5) { // we have found one or more matches
identifyMatches(mask5, i, numberOfTables);
}
i++;
if (i > stopIndex) goto finished;
}