Simplify addition of variants
authorFabian Fichter <ianfab@users.noreply.github.com>
Fri, 3 Sep 2021 07:53:04 +0000 (09:53 +0200)
committerFabian Fichter <ianfab@users.noreply.github.com>
Fri, 3 Sep 2021 07:55:04 +0000 (09:55 +0200)
src/variant.cpp
src/variant.h

index 4c1bc0f..205168b 100644 (file)
@@ -1365,101 +1365,101 @@ namespace {
 
 void VariantMap::init() {
     // Add to UCI_Variant option
-    add("chess", chess_variant()->conclude());
-    add("normal", chess_variant()->conclude());
-    add("fischerandom", chess960_variant()->conclude());
-    add("nocastle", nocastle_variant()->conclude());
-    add("armageddon", armageddon_variant()->conclude());
-    add("fairy", fairy_variant()->conclude()); // fairy variant used for endgame code initialization
-    add("makruk", makruk_variant()->conclude());
-    add("makpong", makpong_variant()->conclude());
-    add("cambodian", cambodian_variant()->conclude());
-    add("karouk", karouk_variant()->conclude());
-    add("asean", asean_variant()->conclude());
-    add("ai-wok", aiwok_variant()->conclude());
-    add("shatranj", shatranj_variant()->conclude());
-    add("chaturanga", chaturanga_variant()->conclude());
-    add("amazon", amazon_variant()->conclude());
-    add("nightrider", nightrider_variant()->conclude());
-    add("grasshopper", grasshopper_variant()->conclude());
-    add("hoppelpoppel", hoppelpoppel_variant()->conclude());
-    add("newzealand", newzealand_variant()->conclude());
-    add("kingofthehill", kingofthehill_variant()->conclude());
-    add("racingkings", racingkings_variant()->conclude());
-    add("knightmate", knightmate_variant()->conclude());
-    add("losers", losers_variant()->conclude());
-    add("giveaway", giveaway_variant()->conclude());
-    add("antichess", antichess_variant()->conclude());
-    add("suicide", suicide_variant()->conclude());
-    add("codrus", codrus_variant()->conclude());
-    add("extinction", extinction_variant()->conclude());
-    add("kinglet", kinglet_variant()->conclude());
-    add("threekings", threekings_variant()->conclude());
-    add("horde", horde_variant()->conclude());
-    add("nocheckatomic", nocheckatomic_variant()->conclude());
-    add("atomic", atomic_variant()->conclude());
-    add("3check", threecheck_variant()->conclude());
-    add("5check", fivecheck_variant()->conclude());
-    add("crazyhouse", crazyhouse_variant()->conclude());
-    add("loop", loop_variant()->conclude());
-    add("chessgi", chessgi_variant()->conclude());
-    add("bughouse", bughouse_variant()->conclude());
-    add("koedem", koedem_variant()->conclude());
-    add("pocketknight", pocketknight_variant()->conclude());
-    add("placement", placement_variant()->conclude());
-    add("sittuyin", sittuyin_variant()->conclude());
-    add("seirawan", seirawan_variant()->conclude());
-    add("shouse", shouse_variant()->conclude());
-    add("minishogi", minishogi_variant()->conclude());
-    add("mini", minishogi_variant()->conclude());
-    add("kyotoshogi", kyotoshogi_variant()->conclude());
-    add("micro", microshogi_variant()->conclude());
-    add("dobutsu", dobutsu_variant()->conclude());
-    add("gorogoro", gorogoroshogi_variant()->conclude());
-    add("judkins", judkinsshogi_variant()->conclude());
-    add("torishogi", torishogi_variant()->conclude());
-    add("euroshogi", euroshogi_variant()->conclude());
-    add("losalamos", losalamos_variant()->conclude());
-    add("gardner", gardner_variant()->conclude());
-    add("almost", almost_variant()->conclude());
-    add("chigorin", chigorin_variant()->conclude());
-    add("shatar", shatar_variant()->conclude());
-    add("coregal", coregal_variant()->conclude());
-    add("clobber", clobber_variant()->conclude());
-    add("breakthrough", breakthrough_variant()->conclude());
-    add("ataxx", ataxx_variant()->conclude());
-    add("minixiangqi", minixiangqi_variant()->conclude());
+    add("chess", chess_variant());
+    add("normal", chess_variant());
+    add("fischerandom", chess960_variant());
+    add("nocastle", nocastle_variant());
+    add("armageddon", armageddon_variant());
+    add("fairy", fairy_variant()); // fairy variant used for endgame code initialization
+    add("makruk", makruk_variant());
+    add("makpong", makpong_variant());
+    add("cambodian", cambodian_variant());
+    add("karouk", karouk_variant());
+    add("asean", asean_variant());
+    add("ai-wok", aiwok_variant());
+    add("shatranj", shatranj_variant());
+    add("chaturanga", chaturanga_variant());
+    add("amazon", amazon_variant());
+    add("nightrider", nightrider_variant());
+    add("grasshopper", grasshopper_variant());
+    add("hoppelpoppel", hoppelpoppel_variant());
+    add("newzealand", newzealand_variant());
+    add("kingofthehill", kingofthehill_variant());
+    add("racingkings", racingkings_variant());
+    add("knightmate", knightmate_variant());
+    add("losers", losers_variant());
+    add("giveaway", giveaway_variant());
+    add("antichess", antichess_variant());
+    add("suicide", suicide_variant());
+    add("codrus", codrus_variant());
+    add("extinction", extinction_variant());
+    add("kinglet", kinglet_variant());
+    add("threekings", threekings_variant());
+    add("horde", horde_variant());
+    add("nocheckatomic", nocheckatomic_variant());
+    add("atomic", atomic_variant());
+    add("3check", threecheck_variant());
+    add("5check", fivecheck_variant());
+    add("crazyhouse", crazyhouse_variant());
+    add("loop", loop_variant());
+    add("chessgi", chessgi_variant());
+    add("bughouse", bughouse_variant());
+    add("koedem", koedem_variant());
+    add("pocketknight", pocketknight_variant());
+    add("placement", placement_variant());
+    add("sittuyin", sittuyin_variant());
+    add("seirawan", seirawan_variant());
+    add("shouse", shouse_variant());
+    add("minishogi", minishogi_variant());
+    add("mini", minishogi_variant());
+    add("kyotoshogi", kyotoshogi_variant());
+    add("micro", microshogi_variant());
+    add("dobutsu", dobutsu_variant());
+    add("gorogoro", gorogoroshogi_variant());
+    add("judkins", judkinsshogi_variant());
+    add("torishogi", torishogi_variant());
+    add("euroshogi", euroshogi_variant());
+    add("losalamos", losalamos_variant());
+    add("gardner", gardner_variant());
+    add("almost", almost_variant());
+    add("chigorin", chigorin_variant());
+    add("shatar", shatar_variant());
+    add("coregal", coregal_variant());
+    add("clobber", clobber_variant());
+    add("breakthrough", breakthrough_variant());
+    add("ataxx", ataxx_variant());
+    add("minixiangqi", minixiangqi_variant());
 #ifdef LARGEBOARDS
-    add("shogi", shogi_variant()->conclude());
-    add("shoshogi", shoshogi_variant()->conclude());
-    add("yarishogi", yarishogi_variant()->conclude());
-    add("okisakishogi", okisakishogi_variant()->conclude());
-    add("capablanca", capablanca_variant()->conclude());
-    add("capahouse", capahouse_variant()->conclude());
-    add("caparandom", caparandom_variant()->conclude());
-    add("gothic", gothic_variant()->conclude());
-    add("janus", janus_variant()->conclude());
-    add("modern", modern_variant()->conclude());
-    add("chancellor", chancellor_variant()->conclude());
-    add("embassy", embassy_variant()->conclude());
-    add("centaur", centaur_variant()->conclude());
-    add("jesonmor", jesonmor_variant()->conclude());
-    add("courier", courier_variant()->conclude());
-    add("grand", grand_variant()->conclude());
-    add("opulent", opulent_variant()->conclude());
-    add("tencubed", tencubed_variant()->conclude());
-    add("shako", shako_variant()->conclude());
-    add("clobber10", clobber10_variant()->conclude());
+    add("shogi", shogi_variant());
+    add("shoshogi", shoshogi_variant());
+    add("yarishogi", yarishogi_variant());
+    add("okisakishogi", okisakishogi_variant());
+    add("capablanca", capablanca_variant());
+    add("capahouse", capahouse_variant());
+    add("caparandom", caparandom_variant());
+    add("gothic", gothic_variant());
+    add("janus", janus_variant());
+    add("modern", modern_variant());
+    add("chancellor", chancellor_variant());
+    add("embassy", embassy_variant());
+    add("centaur", centaur_variant());
+    add("jesonmor", jesonmor_variant());
+    add("courier", courier_variant());
+    add("grand", grand_variant());
+    add("opulent", opulent_variant());
+    add("tencubed", tencubed_variant());
+    add("shako", shako_variant());
+    add("clobber10", clobber10_variant());
 #ifdef ALLVARS
-    add("amazons", amazons_variant()->conclude());
+    add("amazons", amazons_variant());
 #endif
-    add("xiangqi", xiangqi_variant()->conclude());
-    add("manchu", manchu_variant()->conclude());
-    add("supply", supply_variant()->conclude());
-    add("janggi", janggi_variant()->conclude());
-    add("janggitraditional", janggi_traditional_variant()->conclude());
-    add("janggimodern", janggi_modern_variant()->conclude());
-    add("janggicasual", janggi_casual_variant()->conclude());
+    add("xiangqi", xiangqi_variant());
+    add("manchu", manchu_variant());
+    add("supply", supply_variant());
+    add("janggi", janggi_variant());
+    add("janggitraditional", janggi_traditional_variant());
+    add("janggimodern", janggi_modern_variant());
+    add("janggicasual", janggi_casual_variant());
 #endif
 }
 
@@ -1500,7 +1500,7 @@ void VariantMap::parse_istream(std::istream& file) {
                                                    : VariantParser<DoCheck>(attribs).parse();
             if (v->maxFile <= FILE_MAX && v->maxRank <= RANK_MAX)
             {
-                add(variant, v->conclude());
+                add(variant, v);
                 // In order to allow inheritance, we need to temporarily add configured variants
                 // even when only checking them, but we remove them later after parsing is finished.
                 if (DoCheck)
@@ -1537,8 +1537,8 @@ void VariantMap::parse(std::string path) {
 template void VariantMap::parse<true>(std::string path);
 template void VariantMap::parse<false>(std::string path);
 
-void VariantMap::add(std::string s, const Variant* v) {
-  insert(std::pair<std::string, const Variant*>(s, v));
+void VariantMap::add(std::string s, Variant* v) {
+  insert(std::pair<std::string, const Variant*>(s, v->conclude()));
 }
 
 void VariantMap::clear_all() {
index 21caac6..81527ab 100644 (file)
@@ -264,7 +264,7 @@ public:
   std::vector<std::string> get_keys();
 
 private:
-  void add(std::string s, const Variant* v);
+  void add(std::string s, Variant* v);
 };
 
 extern VariantMap variants;