#include <iostream>
#include <cstdint>
using namespace std;
enum enum_Effect { SomeValue };
class IRDN_Padidar_Zone
{
public:
bool callAnimation(enum_Effect state);
uint16_t Animate_None(enum_Effect inOut) { cout << __func__; return 0; }
uint16_t Animate_Print(enum_Effect inOut) { cout << __func__; return 0; }
uint16_t Animate_Print_Random(enum_Effect inOut) { cout << __func__; return 0; }
uint16_t Animate_Print_Barfak(enum_Effect inOut) { cout << __func__; return 0; }
uint16_t Animate_Print_Laser(enum_Effect inOut) { cout << __func__; return 0; }
typedef uint16_t (IRDN_Padidar_Zone::*animatFunction)(enum_Effect);
animatFunction animations[5] = {&IRDN_Padidar_Zone::Animate_None, &IRDN_Padidar_Zone::Animate_Print, &IRDN_Padidar_Zone::Animate_Print_Random, &IRDN_Padidar_Zone::Animate_Print_Barfak, &IRDN_Padidar_Zone::Animate_Print_Laser};
};
bool IRDN_Padidar_Zone::callAnimation(enum_Effect state)
{
uint16_t frameCounter = (this->*(animations[0]))(state);
return true;
}
int main()
{
IRDN_Padidar_Zone z;
z.callAnimation(SomeValue);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGludD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmVudW0gZW51bV9FZmZlY3QgeyBTb21lVmFsdWUgfTsKCmNsYXNzIElSRE5fUGFkaWRhcl9ab25lCnsKcHVibGljOgogICAgYm9vbCBjYWxsQW5pbWF0aW9uKGVudW1fRWZmZWN0IHN0YXRlKTsgIAogICAgdWludDE2X3QgQW5pbWF0ZV9Ob25lKGVudW1fRWZmZWN0IGluT3V0KSB7IGNvdXQgPDwgX19mdW5jX187IHJldHVybiAwOyB9CiAgICB1aW50MTZfdCBBbmltYXRlX1ByaW50KGVudW1fRWZmZWN0IGluT3V0KSB7IGNvdXQgPDwgX19mdW5jX187IHJldHVybiAwOyB9CiAgICB1aW50MTZfdCBBbmltYXRlX1ByaW50X1JhbmRvbShlbnVtX0VmZmVjdCBpbk91dCkgeyBjb3V0IDw8IF9fZnVuY19fOyByZXR1cm4gMDsgfQogICAgdWludDE2X3QgQW5pbWF0ZV9QcmludF9CYXJmYWsoZW51bV9FZmZlY3QgaW5PdXQpIHsgY291dCA8PCBfX2Z1bmNfXzsgcmV0dXJuIDA7IH0KICAgIHVpbnQxNl90IEFuaW1hdGVfUHJpbnRfTGFzZXIoZW51bV9FZmZlY3QgaW5PdXQpIHsgY291dCA8PCBfX2Z1bmNfXzsgcmV0dXJuIDA7IH0KCiAgICB0eXBlZGVmIHVpbnQxNl90IChJUkROX1BhZGlkYXJfWm9uZTo6KmFuaW1hdEZ1bmN0aW9uKShlbnVtX0VmZmVjdCk7CgogICAgYW5pbWF0RnVuY3Rpb24gYW5pbWF0aW9uc1s1XSA9IHsmSVJETl9QYWRpZGFyX1pvbmU6OkFuaW1hdGVfTm9uZSwgJklSRE5fUGFkaWRhcl9ab25lOjpBbmltYXRlX1ByaW50LCAmSVJETl9QYWRpZGFyX1pvbmU6OkFuaW1hdGVfUHJpbnRfUmFuZG9tLCAmSVJETl9QYWRpZGFyX1pvbmU6OkFuaW1hdGVfUHJpbnRfQmFyZmFrLCAmSVJETl9QYWRpZGFyX1pvbmU6OkFuaW1hdGVfUHJpbnRfTGFzZXJ9Owp9OwoKYm9vbCBJUkROX1BhZGlkYXJfWm9uZTo6Y2FsbEFuaW1hdGlvbihlbnVtX0VmZmVjdCBzdGF0ZSkKewogICAgdWludDE2X3QgZnJhbWVDb3VudGVyID0gKHRoaXMtPiooYW5pbWF0aW9uc1swXSkpKHN0YXRlKTsKICAgIHJldHVybiB0cnVlOwp9CgppbnQgbWFpbigpCnsKCUlSRE5fUGFkaWRhcl9ab25lIHo7Cgl6LmNhbGxBbmltYXRpb24oU29tZVZhbHVlKTsKCXJldHVybiAwOwp9