#include <stdio.h>
#include <stdlib.h>
typedef int new;
typedef new func1(int);
typedef int func2(void);
typedef struct _manko {
func1 *insert;
} manko;
typedef struct _tinko {
func2 *dopyu;
} tinko;
new f1(int v) {
return 1 + v;
}
int f2(void) {
return 1;
}
manko* newmanko(void) {
manko
* $manko
= (manko
*)malloc(sizeof(manko
)); $manko->insert = f1;
return $manko;
}
tinko* newtinko(void) {
tinko
* $tinko
= (tinko
*)malloc(sizeof(tinko
)); $tinko->dopyu = f2;
return $tinko;
}
int main(void) {
tinko *$tinko = newtinko();
manko *$manko = newmanko();
new $child = $manko->insert($tinko->dopyu());
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgaW50IG5ldzsKdHlwZWRlZiBuZXcgZnVuYzEoaW50KTsKdHlwZWRlZiBpbnQgZnVuYzIodm9pZCk7Cgp0eXBlZGVmIHN0cnVjdCBfbWFua28gewoJZnVuYzEgKmluc2VydDsKfSBtYW5rbzsKCnR5cGVkZWYgc3RydWN0IF90aW5rbyB7CglmdW5jMiAqZG9weXU7Cn0gdGlua287CgpuZXcgZjEoaW50IHYpIHsKCXJldHVybiAxICsgdjsKfQoKaW50IGYyKHZvaWQpIHsKCXJldHVybiAxOwp9CgptYW5rbyogbmV3bWFua28odm9pZCkgewoJbWFua28qICRtYW5rbyA9IChtYW5rbyopbWFsbG9jKHNpemVvZihtYW5rbykpOwoJJG1hbmtvLT5pbnNlcnQgPSBmMTsKCXJldHVybiAkbWFua287Cn0KCnRpbmtvKiBuZXd0aW5rbyh2b2lkKSB7Cgl0aW5rbyogJHRpbmtvID0gKHRpbmtvKiltYWxsb2Moc2l6ZW9mKHRpbmtvKSk7CgkkdGlua28tPmRvcHl1ID0gZjI7CglyZXR1cm4gJHRpbmtvOwp9CgppbnQgbWFpbih2b2lkKSB7Cgl0aW5rbyAqJHRpbmtvID0gbmV3dGlua28oKTsgCgltYW5rbyAqJG1hbmtvID0gbmV3bWFua28oKTsKCQoJCgkKCW5ldyAkY2hpbGQgPSAkbWFua28tPmluc2VydCgkdGlua28tPmRvcHl1KCkpOwoJCgkKCQoJcmV0dXJuIDA7Cn0K