c++ - prefer switch over long-ish if/else (be nice to compiler)

This commit is contained in:
artemp
2014-02-10 12:18:52 +00:00
parent e8bd180f00
commit 5e87cfed5a

View File

@@ -1,25 +1,28 @@
#include <llmr/style/value.hpp>
llmr::Value llmr::parseValue(pbf data) {
while (data.next()) {
if (data.tag == 1) { // string_value
while (data.next())
{
switch (data.tag)
{
case 1: // string_value
return data.string();
} else if (data.tag == 2) { // float_value
case 2: // float_value
return data.float32();
} else if (data.tag == 3) { // double_value
case 3: // double_value
return data.float64();
} else if (data.tag == 4) { // int_value
case 4: // int_value
return data.varint<int64_t>();
} else if (data.tag == 5) { // uint_value
case 5: // uint_value
return data.varint<uint64_t>();
} else if (data.tag == 6) { // sint_value
case 6: // sint_value
return data.svarint<int64_t>();
} else if (data.tag == 7) { // bool_value
case 7: // bool_value
return data.boolean();
} else {
default:
data.skip();
break;
}
}
return false;
}