#include <iostream>
class Color {
public:
enum Value { RED, GREEN, BLUE};
Color(Color::Value value);
bool operator ==(const Color &other);
bool isHappy() const;
Color rotate() const;
int intensity() const;
private:
Color::Value color;
};
bool Color::operator ==(const Color &other) {
return other.color == this->color;
}
Color::Color(Color::Value value) : color(value) {}
bool Color::isHappy() const {
return color == RED || color==GREEN;
}
Color Color::rotate() const {
if(color == RED) return Color(GREEN);
if(color == GREEN) return Color(BLUE);
return Color(RED);
}
int Color::intensity() const {
if(color == RED) return 11;
if(color == GREEN) return 4;
return 42;
}
int main() {
Color c1 = Color(Color::RED);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQ29sb3IgewpwdWJsaWM6CgllbnVtIFZhbHVlIHsgUkVELCBHUkVFTiwgQkxVRX07CglDb2xvcihDb2xvcjo6VmFsdWUgdmFsdWUpOwoJYm9vbCBvcGVyYXRvciA9PShjb25zdCBDb2xvciAmb3RoZXIpOwoJYm9vbCBpc0hhcHB5KCkgY29uc3Q7CglDb2xvciByb3RhdGUoKSBjb25zdDsKCWludCBpbnRlbnNpdHkoKSBjb25zdDsKCQpwcml2YXRlOgoJQ29sb3I6OlZhbHVlIGNvbG9yOwp9OwoKCmJvb2wgQ29sb3I6Om9wZXJhdG9yID09KGNvbnN0IENvbG9yICZvdGhlcikgewoJcmV0dXJuIG90aGVyLmNvbG9yID09IHRoaXMtPmNvbG9yOwp9CgpDb2xvcjo6Q29sb3IoQ29sb3I6OlZhbHVlIHZhbHVlKSA6IGNvbG9yKHZhbHVlKSB7fQoKYm9vbCBDb2xvcjo6aXNIYXBweSgpIGNvbnN0IHsKCXJldHVybiBjb2xvciA9PSBSRUQgfHwgY29sb3I9PUdSRUVOOwp9CgpDb2xvciBDb2xvcjo6cm90YXRlKCkgY29uc3QgewoJaWYoY29sb3IgPT0gUkVEKSByZXR1cm4gQ29sb3IoR1JFRU4pOwoJaWYoY29sb3IgPT0gR1JFRU4pIHJldHVybiBDb2xvcihCTFVFKTsKCXJldHVybiBDb2xvcihSRUQpOwp9CgoKaW50IENvbG9yOjppbnRlbnNpdHkoKSBjb25zdCB7CglpZihjb2xvciA9PSBSRUQpIHJldHVybiAxMTsKCWlmKGNvbG9yID09IEdSRUVOKSByZXR1cm4gNDsKCXJldHVybiA0MjsKfQoKaW50IG1haW4oKSB7CglDb2xvciBjMSA9IENvbG9yKENvbG9yOjpSRUQpOwoJcmV0dXJuIDA7Cn0=