#include <cassert>
#include <string>
#include <iostream>
using namespace std;
enum weekday {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
WEEKDAY_SIZE
};
bool getWeekday(int index, weekday& result) {
result = static_cast<weekday>(index);
return index >= 0 && index < static_cast<int>(WEEKDAY_SIZE);
}
bool getName(weekday& index, string& result) {
switch (static_cast<weekday>(index)) {
case SUNDAY:
result = "Sunday";
break;
case MONDAY:
result = "Monday";
break;
case TUESDAY:
result = "Tuesday";
break;
case WEDNESDAY:
result = "Wednesday";
break;
case THURSDAY:
result = "Thursday";
break;
case FRIDAY:
result = "Friday";
break;
case SATURDAY:
result = "Saturday";
break;
default:
assert("Short Circut Failed");
return false;
}
return true;
}
int main() {
const int index = 0;
weekday Weekday;
string Name;
getWeekday(index, Weekday) && getName(Weekday, Name);
cout << Name << endl;
}
I2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgplbnVtIHdlZWtkYXkgewoJU1VOREFZLAoJTU9OREFZLAoJVFVFU0RBWSwKCVdFRE5FU0RBWSwKCVRIVVJTREFZLAoJRlJJREFZLAoJU0FUVVJEQVksCglXRUVLREFZX1NJWkUKfTsKCmJvb2wgZ2V0V2Vla2RheShpbnQgaW5kZXgsIHdlZWtkYXkmIHJlc3VsdCkgewoJcmVzdWx0ID0gc3RhdGljX2Nhc3Q8d2Vla2RheT4oaW5kZXgpOwoKCXJldHVybiBpbmRleCA+PSAwICYmIGluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihXRUVLREFZX1NJWkUpOwp9Cgpib29sIGdldE5hbWUod2Vla2RheSYgaW5kZXgsIHN0cmluZyYgcmVzdWx0KSB7Cglzd2l0Y2ggKHN0YXRpY19jYXN0PHdlZWtkYXk+KGluZGV4KSkgewoJY2FzZSBTVU5EQVk6CgkJcmVzdWx0ID0gIlN1bmRheSI7CgkJYnJlYWs7CgljYXNlIE1PTkRBWToKCQlyZXN1bHQgPSAiTW9uZGF5IjsKCQlicmVhazsKCWNhc2UgVFVFU0RBWToKCQlyZXN1bHQgPSAiVHVlc2RheSI7CgkJYnJlYWs7CgljYXNlIFdFRE5FU0RBWToKCQlyZXN1bHQgPSAiV2VkbmVzZGF5IjsKCQlicmVhazsKCWNhc2UgVEhVUlNEQVk6CgkJcmVzdWx0ID0gIlRodXJzZGF5IjsKCQlicmVhazsKCWNhc2UgRlJJREFZOgoJCXJlc3VsdCA9ICJGcmlkYXkiOwoJCWJyZWFrOwoJY2FzZSBTQVRVUkRBWToKCQlyZXN1bHQgPSAiU2F0dXJkYXkiOwoJCWJyZWFrOwoJZGVmYXVsdDoKCQlhc3NlcnQoIlNob3J0IENpcmN1dCBGYWlsZWQiKTsKCQlyZXR1cm4gZmFsc2U7Cgl9CglyZXR1cm4gdHJ1ZTsKfQoKaW50IG1haW4oKSB7Cgljb25zdCBpbnQgaW5kZXggPSAwOwoJd2Vla2RheSBXZWVrZGF5OwoJc3RyaW5nIE5hbWU7CgoJZ2V0V2Vla2RheShpbmRleCwgV2Vla2RheSkgJiYgZ2V0TmFtZShXZWVrZGF5LCBOYW1lKTsKCgljb3V0IDw8IE5hbWUgPDwgZW5kbDsKfQ==