#include <iostream>
using namespace std;
#define PARAM_A_VAL_0 0
#define PARAM_A_VAL_1 1
bool external_function_param_a(int param_a) {
cout << param_a << endl;
}
struct wrapper
{
class PARAM_A {
int val;
PARAM_A(int val) : val(val) {}
friend class ::wrapper;
public:
static const PARAM_A VAL_0;
static const PARAM_A VAL_1;
};
bool SetParamA(wrapper::PARAM_A a);
};
const wrapper::PARAM_A wrapper::PARAM_A::VAL_0 = wrapper::PARAM_A(PARAM_A_VAL_0);
const wrapper::PARAM_A wrapper::PARAM_A::VAL_1 = wrapper::PARAM_A(PARAM_A_VAL_1);
bool wrapper::SetParamA(wrapper::PARAM_A a)
{
return external_function_param_a(a.val);
}
int main() {
wrapper w;
w.SetParamA(wrapper::PARAM_A::VAL_0);
w.SetParamA(wrapper::PARAM_A::VAL_1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCiNkZWZpbmUgUEFSQU1fQV9WQUxfMCAwCiNkZWZpbmUgUEFSQU1fQV9WQUxfMSAxCmJvb2wgZXh0ZXJuYWxfZnVuY3Rpb25fcGFyYW1fYShpbnQgcGFyYW1fYSkgewoJY291dCA8PCBwYXJhbV9hIDw8IGVuZGw7Cn0Kc3RydWN0IHdyYXBwZXIKewogICAgY2xhc3MgUEFSQU1fQSB7CiAgICAJaW50IHZhbDsKICAgIAlQQVJBTV9BKGludCB2YWwpIDogdmFsKHZhbCkge30KICAgIAlmcmllbmQgY2xhc3MgOjp3cmFwcGVyOwogICAgcHVibGljOgogICAgCXN0YXRpYyBjb25zdCBQQVJBTV9BIFZBTF8wOwogICAgCXN0YXRpYyBjb25zdCBQQVJBTV9BIFZBTF8xOwogICAgfTsKICAgIGJvb2wgU2V0UGFyYW1BKHdyYXBwZXI6OlBBUkFNX0EgYSk7Cn07CgoKY29uc3Qgd3JhcHBlcjo6UEFSQU1fQSB3cmFwcGVyOjpQQVJBTV9BOjpWQUxfMCA9IHdyYXBwZXI6OlBBUkFNX0EoUEFSQU1fQV9WQUxfMCk7CmNvbnN0IHdyYXBwZXI6OlBBUkFNX0Egd3JhcHBlcjo6UEFSQU1fQTo6VkFMXzEgPSB3cmFwcGVyOjpQQVJBTV9BKFBBUkFNX0FfVkFMXzEpOwoKYm9vbCB3cmFwcGVyOjpTZXRQYXJhbUEod3JhcHBlcjo6UEFSQU1fQSBhKQp7CiAgICAgcmV0dXJuIGV4dGVybmFsX2Z1bmN0aW9uX3BhcmFtX2EoYS52YWwpOwp9CgppbnQgbWFpbigpIHsKICAgIHdyYXBwZXIgdzsKICAgIHcuU2V0UGFyYW1BKHdyYXBwZXI6OlBBUkFNX0E6OlZBTF8wKTsKICAgIHcuU2V0UGFyYW1BKHdyYXBwZXI6OlBBUkFNX0E6OlZBTF8xKTsKICAgIHJldHVybiAwOwp9