#include <map>
#include <iostream>
using namespace std;
// build formatters
// in this case just assign int value
enum FormatterType {
simple_formatter,
integer_formatter,
decimal_formatter,
currency_formatter,
date_formatter,
date_local_formatter,
time_formatter,
time_local_formatter,
enum_formatter
};
// build formatter index
map<string, FormatterType> index = {
{ "text", simple_formatter },
{ "integer", integer_formatter },
{ "decimal", decimal_formatter },
{ "currency", currency_formatter },
{ "date", date_formatter },
{ "date-local", date_local_formatter },
{ "time", time_formatter },
{ "time-local", time_local_formatter },
{ "enum", enum_formatter }
};
FormatterType resolveFormatter(string name)
{
auto it = index.find(name);
return (it != index.end()) ? it->second : simple_formatter;
}
int main() {
auto f1 = resolveFormatter("integer");
auto f2 = resolveFormatter("zzzz");
auto f3 = resolveFormatter("date");
cout << "f1 = " << (int)f1 << endl;
cout << "f2 = " << (int)f2 << endl;
cout << "f3 = " << (int)f3 << endl;
return 0;
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gYnVpbGQgZm9ybWF0dGVycwovLyBpbiB0aGlzIGNhc2UganVzdCBhc3NpZ24gaW50IHZhbHVlCmVudW0gRm9ybWF0dGVyVHlwZSB7CglzaW1wbGVfZm9ybWF0dGVyLAoJaW50ZWdlcl9mb3JtYXR0ZXIsCglkZWNpbWFsX2Zvcm1hdHRlciwKCWN1cnJlbmN5X2Zvcm1hdHRlciwKCWRhdGVfZm9ybWF0dGVyLAoJZGF0ZV9sb2NhbF9mb3JtYXR0ZXIsCgl0aW1lX2Zvcm1hdHRlciwKCXRpbWVfbG9jYWxfZm9ybWF0dGVyLAoJZW51bV9mb3JtYXR0ZXIKfTsKCi8vIGJ1aWxkIGZvcm1hdHRlciBpbmRleAptYXA8c3RyaW5nLCBGb3JtYXR0ZXJUeXBlPiBpbmRleCA9IHsKCXsgInRleHQiLCBzaW1wbGVfZm9ybWF0dGVyIH0sCgl7ICJpbnRlZ2VyIiwgaW50ZWdlcl9mb3JtYXR0ZXIgfSwKCXsgImRlY2ltYWwiLCBkZWNpbWFsX2Zvcm1hdHRlciB9LAoJeyAiY3VycmVuY3kiLCBjdXJyZW5jeV9mb3JtYXR0ZXIgfSwKCXsgImRhdGUiLCBkYXRlX2Zvcm1hdHRlciB9LAoJeyAiZGF0ZS1sb2NhbCIsIGRhdGVfbG9jYWxfZm9ybWF0dGVyIH0sCgl7ICJ0aW1lIiwgdGltZV9mb3JtYXR0ZXIgfSwKCXsgInRpbWUtbG9jYWwiLCB0aW1lX2xvY2FsX2Zvcm1hdHRlciB9LAoJeyAiZW51bSIsIGVudW1fZm9ybWF0dGVyIH0KfTsKCkZvcm1hdHRlclR5cGUgcmVzb2x2ZUZvcm1hdHRlcihzdHJpbmcgbmFtZSkKewoJYXV0byBpdCA9IGluZGV4LmZpbmQobmFtZSk7CglyZXR1cm4gKGl0ICE9IGluZGV4LmVuZCgpKSA/IGl0LT5zZWNvbmQgOiBzaW1wbGVfZm9ybWF0dGVyOwp9CgppbnQgbWFpbigpIHsKCWF1dG8gZjEgPSByZXNvbHZlRm9ybWF0dGVyKCJpbnRlZ2VyIik7CglhdXRvIGYyID0gcmVzb2x2ZUZvcm1hdHRlcigienp6eiIpOwoJYXV0byBmMyA9IHJlc29sdmVGb3JtYXR0ZXIoImRhdGUiKTsKCWNvdXQgPDwgImYxID0gIiA8PCAoaW50KWYxIDw8IGVuZGw7Cgljb3V0IDw8ICJmMiA9ICIgPDwgKGludClmMiA8PCBlbmRsOwoJY291dCA8PCAiZjMgPSAiIDw8IChpbnQpZjMgPDwgZW5kbDsKCXJldHVybiAwOwp9