diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2015-01-03 21:07:56 -0800 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2015-01-03 21:58:26 -0800 |
commit | 00da6b5977574a0564169172227d8aab45be188f (patch) | |
tree | dd52eee506a98e1eb9fcdea52e7db25079a7ad28 /src/map/itemdb.cpp | |
parent | 4c91abd6a020ee030114ae3f22d8f6066e7528be (diff) | |
download | tmwa-00da6b5977574a0564169172227d8aab45be188f.tar.gz tmwa-00da6b5977574a0564169172227d8aab45be188f.tar.bz2 tmwa-00da6b5977574a0564169172227d8aab45be188f.tar.xz tmwa-00da6b5977574a0564169172227d8aab45be188f.zip |
Switch MATCH to separate begin/end macros
The for loop trick turned out to be very prone to infinite loops
at runtime. It's better to force compiler errors even if it's ugly.
Diffstat (limited to 'src/map/itemdb.cpp')
-rw-r--r-- | src/map/itemdb.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/map/itemdb.cpp b/src/map/itemdb.cpp index dbe2dd6..c2fd0e2 100644 --- a/src/map/itemdb.cpp +++ b/src/map/itemdb.cpp @@ -92,8 +92,11 @@ Option<Borrowed<struct item_data>> itemdb_exists(ItemNameId nameid) Borrowed<struct item_data> itemdb_search(ItemNameId nameid) { Option<P<struct item_data>> id_ = item_db.search(nameid); - if OPTION_IS_SOME_NOLOOP(id, id_) + OMATCH_BEGIN_SOME (id, id_) + { return id; + } + OMATCH_END (); P<struct item_data> id = item_db.init(nameid); @@ -172,13 +175,13 @@ bool itemdb_readdb(ZString filename) PRINTF("%s\n"_fmt, res.get_failure()); ast::item::ItemOrComment ioc = TRY_UNWRAP(std::move(res.get_success()), return false); - MATCH (ioc) + MATCH_BEGIN (ioc) { - CASE(const ast::item::Comment&, c) + MATCH_CASE (const ast::item::Comment&, c) { (void)c; } - CASE(const ast::item::Item&, item) + MATCH_CASE (const ast::item::Item&, item) { ln++; @@ -207,6 +210,7 @@ bool itemdb_readdb(ZString filename) *id = std::move(idv); } } + MATCH_END (); } } |