|
|
1.1 ! root 1: ! 2: ! 3: #define GENERICH 1 ! 4: #define name2(a,b) a\ ! 5: b ! 6: #define name3(a,b,c) a\ ! 7: b\ ! 8: c ! 9: #define name4(a,b,c,d) a\ ! 10: b\ ! 11: c\ ! 12: d ! 13: ! 14: #define declare(a,t) name2(a,declare)(t) ! 15: #define implement(a,t) name2(a,implement)(t) ! 16: #define declare2(a,t1,t2) name2(a,declare2)(t1,t2) ! 17: #define implement2(a,t1,t2) name2(a,implement2)(t1,t2) ! 18: ! 19: ! 20: extern genericerror(int,char*); ! 21: typedef int (*GPT)(int,char*); ! 22: #define set_handler(generic,type,x) name4(set_,type,generic,_handler)(x) ! 23: #define errorhandler(generic,type) name3(type,generic,handler) ! 24: #define callerror(generic,type,a,b) (*errorhandler(generic,type))(a,b)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.