Как генерировать код с определенным числом циклов while и шаблоном, зависящим от параметра - PullRequest
0 голосов
/ 28 марта 2019

Я продолжаю копировать код и думаю, что должен быть лучший способ.Поэтому, если я передам 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;
}
...