1*c87b03e5Sespie // Build don't link: 2*c87b03e5Sespie // GROUPS passed casts 3*c87b03e5Sespie class VObject; 4*c87b03e5Sespie 5*c87b03e5Sespie typedef int boolean; 6*c87b03e5Sespie 7*c87b03e5Sespie typedef boolean (VObject::*method)(); 8*c87b03e5Sespie typedef boolean (VObject::*method0)(); 9*c87b03e5Sespie typedef boolean (VObject::*method1)(long); 10*c87b03e5Sespie 11*c87b03e5Sespie #define methodOf(o,m) (method)(&o::m) 12*c87b03e5Sespie 13*c87b03e5Sespie 14*c87b03e5Sespie class VObject { 15*c87b03e5Sespie public: 16*c87b03e5Sespie boolean perform(method ); 17*c87b03e5Sespie boolean perform(method , long); 18*c87b03e5Sespie void affectMethod(method ); dummy()19*c87b03e5Sespie void dummy(){}; 20*c87b03e5Sespie }; 21*c87b03e5Sespie 22*c87b03e5Sespie perform(method m)23*c87b03e5Sespieboolean VObject::perform(method m) 24*c87b03e5Sespie { 25*c87b03e5Sespie method0 q = (method0)m; 26*c87b03e5Sespie return(this->*q)(); 27*c87b03e5Sespie } 28*c87b03e5Sespie 29*c87b03e5Sespie perform(method m,long param)30*c87b03e5Sespieboolean VObject::perform(method m, long param) 31*c87b03e5Sespie { 32*c87b03e5Sespie method1 q = (method1)m; 33*c87b03e5Sespie return(this->*q)(param); 34*c87b03e5Sespie } 35*c87b03e5Sespie affectMethod(method m)36*c87b03e5Sespievoid VObject::affectMethod(method m) 37*c87b03e5Sespie { 38*c87b03e5Sespie m = methodOf(VObject, dummy); 39*c87b03e5Sespie } 40