#define FCPURE #define hFCNAME(a) h##a #define FCX1(a) typedef a* h##a; #define FCIFACEPREDECLARE(n) struct n; FCX1(n); #define FCBASEIFACE FCIFACEPREDECLARE(FCNAME); typedef struct FCNAME { #define FCDIFACE(n) FCIFACEPREDECLARE(FCNAME); typedef struct FCNAME:n { #define FCDIFACE2(n1,n2) FCIFACEPREDECLARE(FCNAME); typedef struct FCNAME:n1,n2 { #define FCOBJECTIFACE FCIFACEPREDECLARE(FCNAME); typedef struct FCNAME:fcObject { #define FCX2(a) } a,*hFCNAME(a); #define FCIFACEEND FCX2(FCNAME); #define FCIFACEM(t,n) virtual t n #define FCIFACEPTr(t,n) FCIFACEM(t ,n##_get) (); #define FCIFACEPTw(t,n) FCIFACEM(int,n##_set) (t); #define FCIFACEPT(t,n) FCIFACEPTr(t,n) FCIFACEPTw(t,n) #define FCIFACEPRr(t,n) FCIFACEM(int,n##_get) (t&); #define FCIFACEPRw(t,n) FCIFACEM(int,n##_set) (const t&); #define FCIFACEPR(t,n) FCIFACEPRr(t,n) FCIFACEPRw(t,n) #define FCIFACEPIr(t,n) FCIFACEM(int,n##_get) (h##t&); #define FCIFACEPIw(t,n) FCIFACEM(int,n##_set) (h##t); #define FCIFACEPI(t,n) FCIFACEPIr(t,n) FCIFACEPIw(t,n) #define FCIFACEPSr(n) FCIFACEM(int,n##_get) (fcstr,int); #define FCIFACEPSw(n) FCIFACEM(int,n##_set) (fccstr); #define FCIFACEPS(n) FCIFACEPSr(n) FCIFACEPSw(n) #define FCIFACEPCr(t,n) FCIFACEM(int,n##_get) (t&,pcvoid&); #define FCIFACEPCw(t,n) FCIFACEM(int,n##_set) (t,pcvoid); #define FCIFACEPC(t,n) FCIFACEPCr(t,n) FCIFACEPCw(t,n) #define FCSTRUCTIFACE typedef struct FCNAME:sfcBaseStruct { #define FCCOMMITIFACE typedef struct FCNAME:sfcBaseCommit {