//************************** cbsuite.cpp *************** // test suite for callbacks // Copyright 1994 Rich Hickey /* Permission to use, copy, modify, distribute and sell this software * for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Rich Hickey makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. */ // 2/14/94 Rich Hickey #include #include "callback.hpp" class Map{ public: Map(int i):data(i){} operator int()const{return data;} private: int data; }; void func0() {cout<<" ::func0:\t" << endl;} void func1(int i) {cout<<" ::func1:\t" << i << endl;} void func2(int i,long l) {cout<<" ::func2:\t" << i <<' '<< l << endl;} void func3(int i,long l,float f) {cout<<" ::func3:\t"< f1; if(f1) cout << "Bad initialization"< *)0,func1); f1(i++); f1 = makeFunctor((CBFunctor1 *)0,x,&X::func1); f1(i++); f1 = makeFunctor((CBFunctor1 *)0,y,&X::func1); f1(i++); f1 = makeFunctor((CBFunctor1 *)0,y,&Y::func1c); f1(i++); CBFunctor1 fm1; if(fm1) cout << "Bad initialization"< *)0,func1); fm1(i++); fm1 = makeFunctor((CBFunctor1 *)0,x,&X::func1); fm1(i++); fm1 = makeFunctor((CBFunctor1 *)0,y,&X::func1); fm1(i++); fm1 = makeFunctor((CBFunctor1 *)0,y,&Y::func1c); fm1(i++); CBFunctor2 f2; if(f2) cout << "Bad initialization"< *)0,func2); f2(i++,j++); f2 = makeFunctor((CBFunctor2 *)0,x,&X::func2); f2(i++,j++); f2 = makeFunctor((CBFunctor2 *)0,y,&X::func2); f2(i++,j++); f2 = makeFunctor((CBFunctor2 *)0,y,&Y::func2c); f2(i++,j++); CBFunctor2 fm2; if(fm2) cout << "Bad initialization"< *)0,func2); fm2(i++,j++); fm2 = makeFunctor((CBFunctor2 *)0,x,&X::func2); fm2(i++,j++); fm2 = makeFunctor((CBFunctor2 *)0,y,&X::func2); fm2(i++,j++); fm2 = makeFunctor((CBFunctor2 *)0,y,&Y::func2c); fm2(i++,j++); CBFunctor3 f3; if(f3) cout << "Bad initialization"< *)0,func3); f3(i++,j++,k++); f3 = makeFunctor((CBFunctor3 *)0,x,&X::func3); f3(i++,j++,k++); f3 = makeFunctor((CBFunctor3 *)0,y,&X::func3); f3(i++,j++,k++); f3 = makeFunctor((CBFunctor3 *)0,y,&Y::func3c); f3(i++,j++,k++); CBFunctor3 fm3; if(fm3) cout << "Bad initialization"< *)0,func3); fm3(i++,j++,k++); fm3 = makeFunctor((CBFunctor3 *)0,x,&X::func3); fm3(i++,j++,k++); fm3 = makeFunctor((CBFunctor3 *)0,y,&X::func3); fm3(i++,j++,k++); fm3 = makeFunctor((CBFunctor3 *)0,y,&Y::func3c); fm3(i++,j++,k++); CBFunctor4 f4; if(f4) cout << "Bad initialization"< *)0,func4); f4(i++,j++,k++,l++); f4 = makeFunctor((CBFunctor4 *)0,x,&X::func4); f4(i++,j++,k++,l++); f4 = makeFunctor((CBFunctor4 *)0,y,&X::func4); f4(i++,j++,k++,l++); f4 = makeFunctor((CBFunctor4 *)0,y,&Y::func4c); f4(i++,j++,k++,l++); CBFunctor4 fm4; if(fm4) cout << "Bad initialization"< *)0,func4); fm4(i++,j++,k++,l++); fm4 = makeFunctor((CBFunctor4 *)0,x,&X::func4); fm4(i++,j++,k++,l++); fm4 = makeFunctor((CBFunctor4 *)0,y,&X::func4); fm4(i++,j++,k++,l++); fm4 = makeFunctor((CBFunctor4 *)0,y,&Y::func4c); fm4(i++,j++,k++,l++); //////////////////////////////////////////////////////////////// CBFunctor0wRet f0r; if(f0r) cout << "Bad initialization"< *)0,func0wRet); cout << f0r()< *)0,x,&X::func0wRet); cout << f0r()< *)0,y,&X::func0wRet); cout << f0r()< *)0,y,&Y::func0wRetc); cout << f0r()< f1r; if(f1r) cout << "Bad initialization"< *)0,func1wRet); cout << f1r(i++)< *)0,x,&X::func1wRet); cout << f1r(i++)< *)0,y,&X::func1wRet); cout << f1r(i++)< *)0,y,&Y::func1wRetc); cout << f1r(i++)< fm1r; if(fm1r) cout << "Bad initialization"< *)0,func1wRet); cout << fm1r(i++)< *)0,x,&X::func1wRet); cout << fm1r(i++)< *)0,y,&X::func1wRet); cout << fm1r(i++)< *)0,y,&Y::func1wRetc); cout << fm1r(i++)< f2r; if(f2r) cout << "Bad initialization"< *)0,func2wRet); cout << f2r(i++,j++)< *)0,x,&X::func2wRet); cout << f2r(i++,j++)< *)0,y,&X::func2wRet); cout << f2r(i++,j++)< *)0,y,&Y::func2wRetc); cout << f2r(i++,j++)< fm2r; fm2r = makeFunctor((CBFunctor2wRet *)0,func2wRet); cout << fm2r(i++,j++)< *)0,x,&X::func2wRet); cout << fm2r(i++,j++)< *)0,y,&X::func2wRet); cout << fm2r(i++,j++)< *)0,y,&Y::func2wRetc); cout << fm2r(i++,j++)< f3r; if(f3r) cout << "Bad initialization"< *)0,func3wRet); cout << f3r(i++,j++,k++)< *)0,x,&X::func3wRet); cout << f3r(i++,j++,k++)< *)0,y,&X::func3wRet); cout << f3r(i++,j++,k++)< *)0,y,&Y::func3wRetc); cout << f3r(i++,j++,k++)< fm3r; if(fm3r) cout << "Bad initialization"< *)0,func3wRet); cout << fm3r(i++,j++,k++)< *)0,x,&X::func3wRet); cout << fm3r(i++,j++,k++)< *)0,y,&X::func3wRet); cout << fm3r(i++,j++,k++)< *)0,y,&Y::func3wRetc); cout << fm3r(i++,j++,k++)< f4r; if(f4r) cout << "Bad initialization"< *)0,func4wRet); cout << f4r(i++,j++,k++,l++)< *)0,x,&X::func4wRet); cout << f4r(i++,j++,k++,l++)< *)0,y,&X::func4wRet); cout << f4r(i++,j++,k++,l++)< *)0,y,&Y::func4wRetc); cout << f4r(i++,j++,k++,l++)< fm4r; if(fm4r) cout << "Bad initialization"< *)0,func4wRet); cout << fm4r(i++,j++,k++,l++)< *)0,x,&X::func4wRet); cout << fm4r(i++,j++,k++,l++)< *)0,y,&X::func4wRet); cout << fm4r(i++,j++,k++,l++)< *)0,y,&Y::func4wRetc); cout << fm4r(i++,j++,k++,l++)<