#include <stdio.h>
typedef enum {tarasB = 0, superhackkiller1997, other_shit} users_t;
const char * users[] = {"tarasB", "superhackkiller1997", "other_shit"};
typedef struct say_struct_t {
users_t usr;
void operator () (const char * str) {
fprintf(stderr, "%s: %s\n", users[usr], str);
}
} *say_struct_p;
say_struct_t bind(users_t usr) {
say_struct_p p = new say_struct_t;
p->usr = usr;
return *p;
}
int main(void) {
bind(tarasB)("shit");
bind(superhackkiller1997)("i'm god");
bind(other_shit)("ko-ko-ko");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIGVudW0ge3RhcmFzQiA9IDAsIHN1cGVyaGFja2tpbGxlcjE5OTcsIG90aGVyX3NoaXR9IHVzZXJzX3Q7Cgpjb25zdCBjaGFyICogdXNlcnNbXSA9IHsidGFyYXNCIiwgInN1cGVyaGFja2tpbGxlcjE5OTciLCAib3RoZXJfc2hpdCJ9OwoKdHlwZWRlZiBzdHJ1Y3Qgc2F5X3N0cnVjdF90IHsKICB1c2Vyc190IHVzcjsKICB2b2lkIG9wZXJhdG9yICgpIChjb25zdCBjaGFyICogc3RyKSB7CiAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiAlc1xuIiwgdXNlcnNbdXNyXSwgc3RyKTsKICB9Cn0gKnNheV9zdHJ1Y3RfcDsKCnNheV9zdHJ1Y3RfdCBiaW5kKHVzZXJzX3QgdXNyKSB7CiAgc2F5X3N0cnVjdF9wIHAgPSBuZXcgc2F5X3N0cnVjdF90OwogIHAtPnVzciA9IHVzcjsKICByZXR1cm4gKnA7Cn0KCmludCBtYWluKHZvaWQpIHsKICBiaW5kKHRhcmFzQikoInNoaXQiKTsKICBiaW5kKHN1cGVyaGFja2tpbGxlcjE5OTcpKCJpJ20gZ29kIik7CiAgYmluZChvdGhlcl9zaGl0KSgia28ta28ta28iKTsKICByZXR1cm4gMDsKfQ==