5.5.1.1.4 : La fonction principale du programme
Maintenant, implémentons la fonctions principale :
1 |
int main(int argc, char** argv){ |
On créé notre parseur d'argument avec la fonction createOptionParser définie plus tôt :
1 2 |
OptionParser parser = createOptionParser();
parser.parseArgument(argc, argv);
|
On récupère les arguments qui ont été passés au programme (les valeurs par défauts sont gérées automatiquement) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
const OptionMode & defaultMode = parser.getDefaultMode(); float killRate(0.062f), feedRate(0.03f), dt(1.0f); size_t nbImage(100lu), nbRow(1080lu), nbCol(1920lu), nbExtraStep(1lu); defaultMode.getValue(killRate, "killrate"); defaultMode.getValue(feedRate, "feedrate"); defaultMode.getValue(nbImage, "nbimage"); defaultMode.getValue(nbExtraStep, "nbextrastep"); defaultMode.getValue(nbRow, "nbrow"); defaultMode.getValue(nbCol, "nbcol"); defaultMode.getValue(dt, "deltat"); size_t blockSizeRow(72lu), blockSizeCol(127lu); defaultMode.getValue(blockSizeRow, "blocksizerow"); defaultMode.getValue(blockSizeCol, "blocksizecol"); size_t nbThread(0lu); defaultMode.getValue(nbThread, "nbthread"); std::string outputFile(""); defaultMode.getValue(outputFile, "output"); |
On appelle notre fonction générale :
1 |
bool b(simulateImage(nbRow, nbCol, nbImage, nbExtraStep, killRate, feedRate, dt, outputFile, blockSizeRow, blockSizeCol, nbThread));
|
On retourne 0 en cas de sucès et -1 en cas d'erreur :
1 |
return b - 1; |
On finit la fonction principale :
1 |
} |