예제 #1
0
    void post_process_options() {
        // On peut faire des tests plus approfondi sur les options
        // par exemple vérifier que la couleurs est seulemenet une de celles
        // autorisée, ...
        // if ( !(this->color=="blue" || this->color=="white" || this->color=="red" ) )  {
        //     cerr << "Erreur valeur de color incorrecte : " << this->color << endl;
        //     cerr << parser->get("--color")->get_help();
        //     exit(1);
        // }


        // Validation des types énumérés, ...


        // Lecture des paramètres supplémentaires (sans clé associée)
        // Paramètre 1 : fichier d'entrée
        //  this->filename = "";
        //  parser->add_string_option("--infile", this->filename)
        //        ->set_desc("Fichier d'instance (à traité ou à généré).")
        //        ->add_alias("-i");

        this->filename = "";
        if (parser->params.size() >= 1) {
            this->filename = parser->params[0];
        }

        // Lecture des paramètres supplémentaires (sans clé associée)
        // Paramètre 2 : fichier de sortie
        //  this->outfilename = "_AUTO_";
        //  buf.str(""); // pour raz buf
        //  buf << "Fichier de la solution à enregistrer.\n"
        //      << "    - défaut : \"<infile>.sol\"\n"
        //      << "    - passer \"\" pour éviter la création d'un fichier de sortie.";
        //  parser->add_string_option("--outfile", this->outfilename)
        //        ->set_desc(buf.str())
        //        ->add_alias("-o");
        this->outfilename = "_AUTO_";
        if (parser->params.size() >= 2) {
            this->outfilename = parser->params[1];
        }

        // Traitement des arguments résiduels, et vérif. de la cohérence de
        // certaines options reçues

        if (this->filename == "" && this->solver != 0) {
            cout << "\n\nManque le fichier d'entrée.\n\n";;
            exit(1);
        }

        // On pourrait vérifier ici l'existance du fichier
        if (Log::level >= 2) {
            cout << "\nNouvelles valeurs des options :\n";
            parser->print_values(cout);
        }

        // traitemenet du générateur aléatoire
        //
        if (this->seed == 0) {
            this->seed = time(0);  // TODO : TESTER NECESSITE => OUI CA L'EST !!
        }
        cout << "seed=" << this->seed << endl;
        srand(this->seed);

    }