/* cpp2c.c
* Translate C++ http://i...content-available-to-author-only...e.com/vAp2Sj to C language program.
* https://m...content-available-to-author-only...h.net/test/read.cgi/tech/1554171817/630
* Copyright (C) 2019 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>.
* This file is public domain software.
*/
#include <stdlib.h>
#include <stdio.h>
typedef struct A
{
int a;
} A;
void A_A(A *This, int a)
{
This->a = a;
}
void A_f(A *This)
{
}
typedef struct B
{
int b;
} B;
void B_B(B *This, int b)
{
This->b = b;
}
void B_g(B *This)
{
}
typedef struct C
{
A ThisA;
B ThisB;
int c;
} C;
void C_C(C *This, int a, int b, int c)
{
A_A(&This->ThisA, a);
B_B(&This->ThisB, b);
This->c = c;
};
void C_h(C *This)
{
A_f(&This->ThisA);
B_g(&This->ThisB);
}
C *C_new(int a, int b, int c)
{
C
*This
= (C
*)malloc(sizeof(C
)); C_C(This, a, b, c);
return This;
}
void C_delete(C *This)
{
}
int main(void)
{
C *c = C_new(5, 6, 7);
A_f(&c->ThisA);
B_g(&c->ThisB);
C_h(c);
C_delete(c);
return 0;
}
LyogY3BwMmMuYwogKiBUcmFuc2xhdGUgQysrIGh0dHA6Ly9pLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5lLmNvbS92QXAyU2ogdG8gQyBsYW5ndWFnZSBwcm9ncmFtLgogKiBodHRwczovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmgubmV0L3Rlc3QvcmVhZC5jZ2kvdGVjaC8xNTU0MTcxODE3LzYzMAogKiBDb3B5cmlnaHQgKEMpIDIwMTkgS2F0YXlhbWEgSGlyb2Z1bWkgTVogPGthdGF5YW1hLmhpcm9mdW1pLm16QGdtYWlsLmNvbT4uCiAqIFRoaXMgZmlsZSBpcyBwdWJsaWMgZG9tYWluIHNvZnR3YXJlLgogKi8KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCnR5cGVkZWYgc3RydWN0IEEKewogICAgaW50IGE7Cn0gQTsKCnZvaWQgQV9BKEEgKlRoaXMsIGludCBhKQp7CiAgICBUaGlzLT5hID0gYTsKfQoKdm9pZCBBX2YoQSAqVGhpcykKewogICAgcHJpbnRmKCJhID0gJWRcbiIsIFRoaXMtPmEpOwp9Cgp0eXBlZGVmIHN0cnVjdCBCCnsKICAgIGludCBiOwp9IEI7Cgp2b2lkIEJfQihCICpUaGlzLCBpbnQgYikKewogICAgVGhpcy0+YiA9IGI7Cn0KCnZvaWQgQl9nKEIgKlRoaXMpCnsKICAgIHByaW50ZigiYiA9ICVkXG4iLCBUaGlzLT5iKTsKfQoKdHlwZWRlZiBzdHJ1Y3QgQwp7CiAgICBBIFRoaXNBOwogICAgQiBUaGlzQjsKICAgIGludCBjOwp9IEM7Cgp2b2lkIENfQyhDICpUaGlzLCBpbnQgYSwgaW50IGIsIGludCBjKQp7CiAgICBBX0EoJlRoaXMtPlRoaXNBLCBhKTsKICAgIEJfQigmVGhpcy0+VGhpc0IsIGIpOwogICAgVGhpcy0+YyA9IGM7Cn07Cgp2b2lkIENfaChDICpUaGlzKQp7CiAgICBBX2YoJlRoaXMtPlRoaXNBKTsKICAgIEJfZygmVGhpcy0+VGhpc0IpOwogICAgcHJpbnRmKCJjID0gJWRcbiIsIFRoaXMtPmMpOwp9CgpDICpDX25ldyhpbnQgYSwgaW50IGIsIGludCBjKQp7CiAgICBDICpUaGlzID0gKEMgKiltYWxsb2Moc2l6ZW9mKEMpKTsKICAgIENfQyhUaGlzLCBhLCBiLCBjKTsKICAgIHJldHVybiBUaGlzOwp9Cgp2b2lkIENfZGVsZXRlKEMgKlRoaXMpCnsKICAgIGZyZWUoVGhpcyk7Cn0KCmludCBtYWluKHZvaWQpCnsKICAgIEMgKmMgPSBDX25ldyg1LCA2LCA3KTsKICAgIEFfZigmYy0+VGhpc0EpOwogICAgQl9nKCZjLT5UaGlzQik7CiAgICBDX2goYyk7CiAgICBDX2RlbGV0ZShjKTsKICAgIHJldHVybiAwOwp9Cg==