// Special g++ Options: -fhandle-signatures // GROUPS passed gb sigptr this // Test passing of 'this' pointer through signature pointer. extern "C" { int printf (char *, ...); } class C; int inc_mod_4 (C *); class C { public: char * text[4]; int i; int get_i (void) { return i; } char * msg (void) { i = inc_mod_4 (this); return text[i]; } }; signature S { char * msg (void); }; int inc_mod_4 (C * p) { return (p->get_i () + 1) % 4; } int main (void) { C o = { "P", "A", "S", "S", -1 }; S * p; int i; p = &o; for (i = 0; i < 4; i++) printf ("%s", p->msg ()); printf ("\n"); return 0; }